Я читаю о I2C. На этом сайте:
http://playground.arduino.cc/Main/WireLibraryDetailedReference#endTransmission
В нем говорится, что endTransmission ()
может возвращать один из следующих кодов состояния:
Если я не приложу ничего к моему Arduino (или с подтягивающими резисторами для SDA/SCL), я всегда получаю статус 2. Но как можно получить NACK (или что-либо), когда с ним не с кем общаться? Означает ли это что-то еще?
Вот мой пример кода
#include "Wire.h"
void setup() {
Serial.begin(9600);
Wire.begin();
}
void loop() {
Wire.beginTransmission(42);
Wire.write(0);
byte status = Wire.endTransmission();
Serial.println(status);//always prints 2
}
A NACK
сигнализируется слотом подтверждения, в котором SDA
остается высоким при циклах SCL
под управлением мастера.
Поскольку high - это не-управляемое состояние выталкиваемой шины, при отсутствии периферийного устройства на выбранном адресе для положительного подтверждения путем его вытягивания условие NACK
будет пассивно результат.