Verständnisproblem TWI + Acknowledge + Interrupt

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

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.