1. Komponen[back]
Pada Pecobaan kali ini kita menggunakan potensiometer sebagai pengatur delay. Pada percobaan kali ini hampir sama dengan percobaan UART akan tetapi pada pin yang kita gunakan berbeda. Yaitu kita menggunakan pin A4 dan A5 yang saling terhubung antara Master dan Slave.
//MASTER #include <Wire.h> #define SLAVE_ADDR 9 int analogPin = 0; int val = 0; void setup() { Wire.begin(); } void loop() { delay(50); val = map(analogRead(analogPin), 0, 1023, 255, 1); Wire.beginTransmission(SLAVE_ADDR); Wire.write(val); Wire.endTransmission(); } |
//SLAVE #include <Wire.h> #define SLAVE_ADDR 9 int LED = 13; int rd; int br; void setup() { pinMode(LED, OUTPUT); Wire.begin(SLAVE_ADDR); Wire.onReceive(receiveEvent); Serial.begin(9600); Serial.println("I2C Slave demo"); } void receiveEvent() { rd = Wire.read(); Serial.println(rd); } void loop() { delay(50); br = map(rd, 1, 255, 100, 2000); digitalWrite(LED, HIGH); delay(br); digitalWrite(LED, LOW); delay(br); } |
6. Video Simulasi [back]
· Analisa Percobaan 3 (I2C)
1. Apakah kita dapat mengirim data sebanyak 9 bit? Jelaskan alasannya!
Jawab:
Tidak. Banyaknya data yang dapat dikirim pada komunikasi I2C adalah 8 bit. Dalam 1 siklus pengiriman data, 1 paket data terdiri atas maksimal 32 bit dengan komponen berupa kondisi start, Address Frame, R/W bit, ACK/NACK bit, Data Frame 1, Data Frame 2, dan kondisi Stop. Jika mengirim data, Master hanya dapat mengirimkan sejumlah byte (masing-masing 8 bit). Sedangkan bit ke-9, bit tersebut akan dikeluarkan oleh Slave sebagai tanda bahwa data telah diterima oleh receiver (ACK/NACK). Kemudian, Master akan menulis data 8 bit (Data frame) dan bit-9 oleh Slave sebagai sinyal acknowledge / ACK (berlogika 0) yang dikeluarkan Slave kembali untuk dapat menerima data selanjutnya hingga SDA menerima sinyal Not Acknowladge / NACK (berlogika 1) untuk mengakhirim transfer data.
2. Bagaimana cara master mengirimkan address ke slave? Berapa bit address yang dikirim? Berapa addres unik yang dapat tercipta oleh master?
Jawab:
Pada I2C, data ditransfer dalam bentuk message yang terdiri dari kondisi Start, Address Frame, R/W bit, ACK/NACK bit, Data Frame 1, Data Frame 2, dan kondisi Stop. Kondisi start dimana saat SDA beralih dari logika high ke low sebelum SCL. Sedangkan Kondisi stop dimana saat pada SDA beralih dari logika low ke high sebelum SCL. Setelah pulsa start dikirimkan, maka pada clock berikutnya master mengirimkan 8 bit alamat, yang dikirimkan secara serial melalui bus SDA, ke slave dengan format A6, A5, A4, A3, A2, A1, A0, dan R/W. Bit alamat tersebut mengandung informasi R/W pada LSB. Jika LSB pada byte alamat berlogika 1 maka master ingin membaca data dari slave tetapi jika LSB byte alamat berlogika 0 maka master akan menulis pada slave.
Link Download Listing Program Master [disini] Slave [disini]
Link Download HTML [disini]




Tidak ada komentar:
Posting Komentar