ATmega32: TWI mit C

OP #951436
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 #951565
Schonmal ins Datenblatt des Mega-32 reingeschaut? Offenbar nicht, dort 
gibts Beispiele für TWI in C.
Im Kapitel über den TWI ist alles erklärt, was man braucht - auch nAck 
und Ack.
Gast #951877
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

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.