Hallo zusammen, ich versuche gerade, mittels TWI eine Verbindung zwischen zwei Atmega8-Controllern aufzubauen. Programmiersprache ist C. Um das ganze weniger fehleranfällig zu machen, verwende ich, wenn ein Controller Daten empfangen soll, den Interrupt, um festzustellen, wann ein neues Byte da ist. Nun stellt sich mir jedoch ein Problem: Die Spezifikation verlangt, dass nach dem Empfangen des letzten Bytes ein NACK zurückgeschickt werden muss. Ob ACK oder NACK geschickt wird, muss ich festlegen, bevor ich das Byte empfangen habe. Nun haben die Daten, die ich verschicke, jedoch verschiedene Längen und wieviele Bytes empfangen werden sollen, weiß ich ja frühestens nach dem ersten empfangenen Byte. Bei einer Gesamtlänge von einem Byte ist es dann ja schon zu spät, das TWEA-Bit noch zu löschen. Ich hoffe, ich habe mich verständlich ausgedrückt ^^ Habe ich hier bloß eine Kleinigkeit übersehen? Gibt es irgendwo Codebeispiele für TWI mit Verwendung des Interrupts? Alle, die ich gefunden habe, verwendeten while-Schleifen. Viele Grüße
Hallo, dann mußt Du vermutlich Dein Protokoll überdenken und schickst als erstes Datenbyte die Anzahl der Bytes Deines jeweiligen Telegramms. Gruß aus Berlin Michael
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.