Gast
#937641
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