UART-Auswertung

Gast #172712
Ich habe einen ATMega32 mit einem MAX232 (RS232-Pegelwandler) an einen
PC angeschlossen. Der ATMega soll Befehle die vom PC gesendet werden,
ausführen.
Ich habe die Interrupt-Funktion "Daten empfangen" aktiviert. Wenn ein
Byte ankommt lese ich es aus und führe entsprechende Befehle aus.
Im Anhang ist ein Auszug des entsprechenden Codes.
Ist das umständlich wie ich das mache? Wie macht ihr sowas?

Danke schonmal...
Angehängte Dateien:
Gast
Noch eine Frage:

Ich führe meine ganzen Befehle sofort in der
"Byte-Empfangen-Interrupt-Routine" aus. Nehmen wir mal an ich brauche
zu lang um die Befehle auszuführen und es kommen in der Zwischenzeit
schon weitere Bytes über UART rein. Dann gehen Bytes verloren, oder?
Sollte ich in der Interruptroutine die empfangenen Bytes nur in einem
Array speichern und die Befehle im Hauptprogramm ausführen?
Gast
So soll es sein...
Die ISR empfängt nur und schreibt die empfangenen Bytes in einen Buffer
(Ringspeicher) und erhöht einen counter, damit man weiss, wieviele Bytes
dort lagern. Weiter nichts. Alles andere ist Murks, auch wenn es da und
dort problemlos funktioniert, wenn man es anders macht.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 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.