Forum: Mikrocontroller und Digitale Elektronik UART-Auswertung


von Ralf (Gast)


Angehängte Dateien:

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...

von Hubert.G (Gast)


Lesenswert?

Wenn mehr zur Auswahl steht ist vieleicht Switch / Case eine alternative

von Ralf (Gast)


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?

von crazy horse (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.