Я читаю о I2C. На этом сайте:
http://playground.arduino.cc/Main/WireLibraryDetailedReference#endTransmission
Это говорит о том, что endTransmission()
может вернуть один из следующих кодов состояния:
- 0: успешная отправка.
- 1: Отправить буфер слишком велик для буфера twi. Этого не должно быть, так как длина буфера TWI, заданная в twi.h, эквивалентна длине буфера отправки, установленной в Wire.h.
- 2: Адрес был отправлен и получен NACK. Это проблема, и мастер должен отправить условие STOP.
- 3: данные были отправлены и получен NACK. Это означает, что рабу больше не нужно отправлять. Мастер может отправить условие STOP или повторный START. 4: произошла еще одна ошибка twi (например, арбитраж потерянной шины).
Если я ничего не присоединяю к своему 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
}