Forum: Mikrocontroller und Digitale Elektronik UART poll oder interrupt?


von stefanie (Gast)


Lesenswert?

Hallo,
ich habe gelesen, das man bei Atmegas sagen kann, dass die USART per 
Interrupt oder gepollt funktionieren kann.

Ich sende mit meinem Programm eine definierte Anzahl an char-Bytes mit 
putchar, anschließend lese ich mit getchar ein paar Char-Werte wieder 
zurück.

Wenn mein Sensor die Char-Werte nicht ausgibt, wartet mein Programm 
endlos darauf und hängt sich somit auf. (hier möchte ich noch ein 
Timeout dazu programmieren)

Es macht doch für mich praktisch keinen Unterschied, ob ich die UART per 
Interrupt oder gepollt initialisiere?
Oder was ist besser?

von Anja (Gast)


Lesenswert?

stefanie schrieb:
> Oder was ist besser?

Hängt von der Anwendung ab.
Wenn ohne Interrupt Zeichen verloren gehen können dann ist Interrupt 
besser.
Wenn ich einen seeehr zeitkritischen Interrupt im System habe und keine 
hohe Datenrate auf dem Uart vorhanden ist kann es besser sein wenn ich 
beim UART keinen Interrupt verwende.

-> in Deinem Fall scheint es keine Rolle zu spielen da der Prozessor 
ansonsten nicht viel zu tun hat.

Gruß Anja

von 78787 (Gast)


Lesenswert?

ich mag einen mischbetrieb

Empfang eines zeichens im Interrupt
und die daten werden in ein buffer geworfen

ernn der string komplett ist wird eine statemachine aufgerufen die 
bissel was abarbeitet ( in dieser wired der string kopiert

in der zeit können nun wieder neue daten einfließen

von Ich (Gast)


Lesenswert?

Ich würde einen Interrupt nehmen und in einen Ringbuffer kopieren.
Wenn es noch andere wichtigere Interrupts gibt kann man ja einen Nested 
interrupt daraus machen.

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

die volle Leistungsfähigkeit eines Systems kannst du nur mit einer 
ausgeklügelten Interruptverarbeitung realisieren. Das ist aber gerade an 
den Leistungsgrenzen nicht ganz einfach, und ich schätze mal, du bist 
Grössenordnungen davon entfernt.

Eigentlich ist die Regel einfach: du kannst pollen, wenn du (bzw. der 
µC) sowieso nichts anderes zu tun hast. Sonst solltest du dich um das 
andere kümmern und Interrupts verwenden.

Gruss Reinhard

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.