Forum: Mikrocontroller und Digitale Elektronik USART Interrupt


von Johann (Gast)


Lesenswert?

Hallo @ all

Ich verwende ATMEGA µC. Dort verwende ich momentan den Timerinterrupt um 
mir eine Testsignal zu erzeugen. Dies funktioniert bereits sehr gut. 
Jetzt möchte ich per RS232-Schnittstelle die Paramater für das 
Testsignal empfangen.

Wie gehe ich da am besten vor damit keine Daten verloren gehen? Hat der 
RS232 Interrupt eine höhere Priorität als der Timerinterrupt, so das 
diese nicht ausgelöst wird? Muss ich ständig im der 
Timerinterruptservicroutine abfragen ob ein RS232 Interrupt aufgetreten 
ist und dann den Timerinterrupt vorzeitig beenden?

von spess53 (Gast)


Lesenswert?

Hi

Kommt auf deinen Timerinterrupt an. Wenn der kurz genug ist, eigentlich 
kein Problem. Die UART der ATMegas ist gepuffert. Ein empfangenes Byte 
geht erst verloren, wenn das nachfolgende vollständig empfangen wurde.

MfG Spess

von skorpionx (Gast)


Lesenswert?

Nur Hardware Interrupt ist sinnvoll. Dann einzelne Bytes in Ringpuffer 
schreiben. Schon bei Baudrate 9600 müsstest du alle 1 Ms auf empfangenes 
Zeichen im Timerinterrupt prüfen... Zeitverschwendung.

von spess53 (Gast)


Lesenswert?

Hi

>Schon bei Baudrate 9600 müsstest du alle 1 Ms auf empfangenes
>Zeichen im Timerinterrupt prüfen... Zeitverschwendung.

Naja. 1ms sind bei 8MHz so zwischen 5000...6000 Assemblerbefehle. Die 
Problematik Interrupt und Zeit wird hier ganz gern mal überbewertet.

MfG Spess

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.