UART-Auswertung

Gast #172712
Lesenswert?
• ▲
▼
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 #172714
Lesenswert?
• ▲
▼
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 #172715
Lesenswert?
• ▲
▼
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren