1. hardware[back]
2. rangkaian simulasi[back]
4. listing program[back]
#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);
}
5. video[back]
6. analisa[back]
1. Apakah kita dapat
mengirim data sebanyak 9 bit? Jelaskan alasannya
Jawab: Bisa , karena pada saat pengiriman master mengirim kan address
ka slave itu Seluruh paket alamat (Address
Packets Format) terdiri dari 9 bit. Ada juga alamat I2C 10 bit tetapi belum bnyak di gunakan dan banyak
sistem Host yang tidak mendukungnya
2. Bagaimana cara master
mengirimkan address ke slave? Berapa bit address yang dikirim? Berapa addres
unik yang dapat tercipta oleh master?
Jawab:
Pertama Yaitu 7 address bit, 1 control bit
(Read/Write) dan 1 bit Acknowledge (ACK) yang dibangkitkan oleh Slave, Seluruh
paket alamat (Address Packets Format) tersebut terdiri dari 9 bit. Bit control
set menunjukkan operasi pembacaan (read) dan jika bit control clear menunjukkan
operasi penulisan (write). Jika Slave mengenali alamat yang diberikan oleh
master maka ia harus pulsa LOW pada bus SDA pada pulsa clock ke sembilan. Jika
slave sedang sibuk atau sedang tidak dapat melayani permintaan master maka SDA
line harus tetap HIGH pada pulsa clock ke sembilan. Dimana SDA master dan slave
mengirim data
Tidak ada komentar:
Posting Komentar