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
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.
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.
(verdammt, wieder mit Gast-Login gepostet...) Danke für den Link Marvin. Hätt ja auch gleich draufkommen können, dass schon ein Lib existiert :(
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.