Sto leggendo su I2C. Su questo sito:
http://playground.arduino.cc/Main/WireLibraryDetailedReference#endTransmission
Dice che endTransmission()
può restituire uno dei seguenti codici di stato:
- 0: invio riuscito.
- 1: Invia buffer troppo grande per il twi buffer. Ciò non dovrebbe accadere, poiché la lunghezza del buffer TWI impostata in twi.h è equivalente alla lunghezza del buffer di invio impostata in Wire.h.
- 2: l'indirizzo è stato inviato e ricevuto un NACK. Questo è un problema e il master dovrebbe inviare una condizione STOP.
- 3: i dati sono stati inviati e ricevuto un NACK. Ciò significa che lo slave non ha più da inviare. Il master può inviare una condizione di STOP o un START ripetuto. 4: si è verificato un altro errore twi (ad esempio, il master ha perso l'arbitrato del bus).
Se non collego nulla al mio Arduino (o con resistori pull-up sia su SDA / SCL), ottengo sempre lo stato 2. Ma come si può ricevere un NACK (o qualcosa) quando non c'è nulla con cui comunicare? Significa qualcos'altro?
Ecco il mio codice di esempio
#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
}