USART Interrupt

Gast #1283552
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?
Gast #1283567
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
Gast #1284171
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.
Gast #1284184
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

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