Birçok şeyi yanlış/eksik biliyorsunuzda ondan.
Olay şu :
4104 -----> 35702 ------> 0x8b76
4105 -----> 29833 ------> 0x7489
Write single register (adres:4104) değer 65535(0x8b76 + 0x7489 = 0xFFFF),(4105 adresiyle hiçbir işiniz yok !).
İşlemci 32 bit ise kendisi otomatik olarak yüksek biti bir sonraki adrese yazar.
Atladığınız nokta bu değerleri siz atamayacaksınız, işlemci kendisi yordamlayacak.
Zaten işlemcinin adreslerinin tümü 8,16 veya 32 bit olamaz !
Örnekler:
Float (0x8000 den büyük olanlar eksi küçük olanlar artı)
INT (genelde 65535 i geçmez(32 bit işlemcide), fakat içeride 16 bitlik sayı hazneleri tanımlanabilir. Misal: 0x45C8AE55 iki sayıyı ihtiva eder 0x45C8 ve 0xAE55)
Floatlar aksi belirtilmedikçe 32 bitdir ama 64 bit olabilir(işlemci içindeki yazılıma bağlıdır).
Sayılar genelde 32 bitdir fakat ramde yer kazanmak için 8bit yada 16 bit olarak extra tanım yapılır.
Gençler, mikrodenetleyicinin nasıl çalıştığını bilmeden haberleşme yazmaya çalışırsanız çok zorlanırsınız(en azından ben zorlandım). Örnek modbus kolay ama bazı cihazlar (hızlı olanlar) erişmek istediğiniz registeri ram adresine kayıt etmeniz gerekiyor. Bu bana hep angarya gibi geldi fakat yanıt süresinin mikrosaniye seviyesinde olduğunu görünce bu sefer diğer ürünlerin hantal olduğunun farkına vardım.
Umarım yardımı dokunur !