«

»

Aug 07

Pengaturan Bit Rate pada I2C NS.One

Library Wire yang disediakan software NS.One atau Arduino, merujuk pada komunikasi secara I2C pada bit rate 100 kHz. Untuk beberapa divais, seperti beberapa produk dari Innovative Electronics, bit rate ini terlalu cepat. Beberapa divais hanya mendukung bit rate 50 kHz.

Untuk itu, perlu dilakukan pengaturan ulang agar software dapat digunakan untuk maksud tersebut. Untuk mudahnya, kita dapat menggunakan referensi library – http://homepage.hispeed.ch/peterfleury/i2cmaster.zip.

Kita perlu menyesuaikan bit rate, pada bagian #define SCL_CLOCK yang terdapat dalam file twimaster.c, sebagai contoh:

/* I2C clock in Hz */ 
#define SCL_CLOCK  50000L

Berikut adalah contoh program NS.One dengan library WireNS, untuk memutar motor, yang terhubung dengan SPC Neo DC Motor, selama 3 detik, kemudian berhenti:

#include <WireNS.h>

void setup() { 
  WireNS.begin();                      //I2C init
  delay(1000);
  WireNS.beginWaitTransmission(0x70);  // M1 Forward
  WireNS.write(0x30);
  WireNS.write(128);
  WireNS.stop();
  WireNS.beginWaitTransmission(0x70);  // M2 Forward
  WireNS.write(0x34);
  WireNS.write(128);
  WireNS.stop();  
  delay(3000);
  WireNS.beginWaitTransmission(0x70);  // All Stop
  WireNS.write(0x38);                  
  WireNS.stop();  
}

void loop() { 

}

Library WireNS menyediakan sejumlah fungsi:

  • begin() – untuk inisialisasi I2C.
  • beginTransmission() – untuk memulai komunikasi.
  • beginWaitTransmission() – untuk memulai komunikasi bila jalur I2C siap.
  • requestFrom() – untuk meminta data dari slave.
  • write() – untuk mengirim data atau parameter ke slave.
  • readAck() – untuk membaca data dari slave dan akan berlanjut dengan pembacaan data berikutnya.
  • readNak() – untuk membaca data dari slave dan selesai.
  • stop() – untuk mengakhiri komunikasi I2C.

Untuk pengguna software CodeVisionAVR harap berhati-hati karena konfigurasi I2C melalui CodeWizard bersifat software emulation. Bit rate yang dipilih akan memberikan bit rate output yang lebih rendah. Dari beberapa data yang dimiliki, pilihan bit rate 100 kHz hanya memberikan bit rate aktual ~ 30 kHz saja.