Karasavay
Üye
- Katılım
- 24 Mar 2021
- Mesajlar
- 27
- Puanları
- 1
- Yaş
- 31
Merhaba arkadaşlar. Doğru yerde sorduğumdan emin olmamakla birlikte bir şey danışmak istiyorum.
Ben I2C haberleşmesi hakkında çalışıyordum MikroC üzerinde (Aslında direk MikroC ile alakalı değil). I2C'de slave cihazların adressleri var biliyorsunuz. Buraya kadar tamam. Bazı adresler binari olarak 1 ile başlıyoR (MSB) (mesela ds1307'nin adresi 0xD0 ( 11010000)), bazıları ise 0 ile başlıyor(MSB) ( mesela MLX90614 sıcaklık sensörünün adresi 0x5A (01011010)) .
Şunu farkettim örnek kodları incelerken kodun adress yazdırma kısmında adress eğer 1 ile başlıyorsa kaydırma (<<) olmuyor, eğer 0 ile başlıyorsa 1 bit sola kaydırılıor (mesela 0x5A<<1 gibi)
Daha iyi anlatmak açısından;
I2C2_Wr( 0x5A << 1 ); ---Bu cihaz için kaydırma yapılmış.
I2C2_Wr( 0xD0 ); ---Bu cihaz için kaydırma yapılmamış.
Bunlar gibi bir kaç örnek daha gördüm, bu şekil yazılmış kodlar. Örneklerde bunu çıkardım. Fakat bunun teorik açıklaması ne bilen var mı ?
Ben I2C haberleşmesi hakkında çalışıyordum MikroC üzerinde (Aslında direk MikroC ile alakalı değil). I2C'de slave cihazların adressleri var biliyorsunuz. Buraya kadar tamam. Bazı adresler binari olarak 1 ile başlıyoR (MSB) (mesela ds1307'nin adresi 0xD0 ( 11010000)), bazıları ise 0 ile başlıyor(MSB) ( mesela MLX90614 sıcaklık sensörünün adresi 0x5A (01011010)) .
Şunu farkettim örnek kodları incelerken kodun adress yazdırma kısmında adress eğer 1 ile başlıyorsa kaydırma (<<) olmuyor, eğer 0 ile başlıyorsa 1 bit sola kaydırılıor (mesela 0x5A<<1 gibi)
Daha iyi anlatmak açısından;
I2C2_Wr( 0x5A << 1 ); ---Bu cihaz için kaydırma yapılmış.
I2C2_Wr( 0xD0 ); ---Bu cihaz için kaydırma yapılmamış.
Bunlar gibi bir kaç örnek daha gördüm, bu şekil yazılmış kodlar. Örneklerde bunu çıkardım. Fakat bunun teorik açıklaması ne bilen var mı ?