Herkese merhaba I2C hakkında kafama takılan bir soru var onları sormak isterim.
Mesela mpu-6050 ü zerinden
datasheet te
write
Master S AD+W REGİSTERADRESS DATA P
Slave ACK ACK ACK
read
Master S AD+W RA S AD+R NACK P
Slave ACK ACK ACK DATA
şeklinde verilmiş.
Benim takıldığım konu ACK daha dogrusu slave cıhazı bıze ACK yı nasıl göndericek ve bizim kodda ACK nın gelip gelmediğini check etmemiz lazım mı ? ( ACK nın bır register adresi var mı)
Ack bitine sira geldiğinde master hatti surmeyi birakiyor. Eger slavenin ack göndermesi gerekiyorsa hatti aşşağı slave çekiyor. Master hatta 0 olduğunu gördüğünde slave in hala dinlemede olduğunu anlıyor.
Yazılımsal olarak i2c yapıyorsan masteri bir slavenin dinlediğinden emin olmak için bu biti gozleyebilirsin.
Modül kullanıyorsan zaten bu islem donanimsal olarak yapılacaktır. Bu durumda driver i sen yazıyorsan modülün status registerlarini okuman gerekir haberleşmenin sorunsuz olup olmadığını anlamak için. Eğer driveri hazır kullanıyorsan send gibi bir fonksiyonun geri dondurdugu değeri takip edip gönderdiğin datanin yerine ulaşıp ulasmadigini kontrol edebilirsin.