Ich empfange Daten über UART von einem anderen AVR. Allerdings mache ich andere Sachen, also möchte ich nicht ständig den UART abfragen. Ich weiß, dass es Interrupts gibt, aber ich kann nur einen für den vollständigen Empfang sehen. Ich gehe davon aus, dass ich immer noch eine Abfrage durchführen muss, um die Übertragung abzuschließen.
10
Antworten:
Es gibt Interrupt-Vektoren für RXC und TXC (RX und TX abgeschlossen) auf AVRs. Sie sollten niemals nach diesen suchen müssen, es sei denn, Sie möchten.
AVRFreaks hat einen schönen Beitrag dazu, ebenso wie der Hersteller .
quelle
Die Interrupt-Routine speichert die Daten in einem Puffer (ein Ringpuffer mit Put- und Get-Zeigern funktioniert gut). Die Hauptschleife prüft, ob sich Daten im Puffer befinden, und nimmt sie heraus, wenn sie vorhanden sind. Die Hauptschleife kann andere Aufgaben ausführen, muss jedoch die Daten überprüfen und entfernen, bevor der Interrupt-Puffer überläuft (wenn der Put mit dem Get übereinstimmt).
Es wird nicht kompiliert, aber dies veranschaulicht die Methode.
quelle