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...
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.