ATmega32: TWI mit C

OP #951436
Lesenswert?

Ich habe mir einen Ultraschall-Entfernungsmesser (SRF02) bei 
robotikhardware.de gekauft. Diesen möchte ich über den I2C-Bus 
ansprechen. Dazu muss ich den µC im Master Receiver Modus betreiben. 
Laut I2C-Spezifikation muss ich den Empfang jedes Datenbytes mit einem 
ACK quittieren. Nur das letzte Datenbyte wird mit einem NACK quittiert.

Beim SRF02 war ein kleines Beispielprogramm dabei, das die Kommunikation 
mit BASCOM zeigt. Beim Lesen eines Datenbytes kann ich hier angegben ob 
ACK oder NACK gesendet werden soll. Wie kann ich das mit Assembler oder 
C festlegen? Ich habe im Handbuch leider nur gefunden, dass die 
Quittierung von der TWI-Hardware automatisch beim Auslesen des 
Datenregisters vorgenommen wird. Wo oder wie sage ich der Hardware, dass 
ein NACK statt einem ACK gesendet werden soll?

Danke schon mal für die Antworten,

Markus
Gast #951877
Lesenswert?

Die Beispiele betreffen leider nur das Senden von Daten, nicht den 
Empfang.

Im Datenblatt steht auch, dass die Quittierung beim Lesen über das 
TWCR-Register kontrolliert wird. Das einzige Bit, das von Namen her Sinn 
machen würde ist TWAE. Hier steht jedoch, dass bei gesetztem Bit ein ACK 
gesendet wird. Gleichzeitig steht dort ein paar Zeilen drunter, dass ein 
gelöschtes Bit (logisch 0) das Gerät vom Bus nimmt. Das ist eigentlich 
nicht das, was ich brauche.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren