Markus Dörschmidt wrote:
> Laut Datenblatt der ATmegas sendet der Slave ein NOT ACK, wenn er keine
> weiteren Daten verarbeiten kann (siehe bspw. Datenblatt ATmega644, Seite
> 218, 4. Absatz)
Laut Datenblatt kann er zwar beides, man sollte aber besser ACK senden,
um dem Master zu signalisieren, daß er alles empfangen hat.
Bei einem NACK weiß der Master nicht, ob er auch das letzte Byte
empfangen hat (was blöd ist, da der Master nun nicht weiß, ob er ein
Retry starten sollte).
Nur wenn der Master mehr Bytes zu senden versucht, als der Slave Puffer
hat, kann man ein NACK senden, um dem Master anzuzeigen, daß ein Fehler
aufgetreten ist.
Auch senden sämtliche I2C-ICs (IO-Ports, RTCs, EEPROMs) immer ein ACK,
da sie ja nicht riechen können, welches das letzte Byte sein soll.
NACK vom Slave heißt im allgemeinen, Fehler oder der Slave ist busy
(z.B. EEPROM schreiben).
> ACK / NOT ACK kann nur der Slave senden, der Master nur durch STOP /
> REPEATED START die aktuelle Übertragung beenden.
Nö.
NACK muß nur der Master-Receiver senden, damit danach das Stop/Start
nicht in die binsen geht.
Das NACK vom Master bedeutet also ausnahmsweise mal nicht Fehler,
sondern bereitet nur das Stop/Start vor.
Peter