PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : putchar, getchar per Interrupt oder gepollt?



Stefanie
10.07.2010, 20:26
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?

shedepe
10.07.2010, 21:04
Was ist besser....ist immer so eine Frage.
Ich persönlich würde zu Usart per Interrupt tendieren. Dann solltest du schon mal kein Problem damit haben, dass sich dein Programm aufhängt wenn dein Sensor nicht antwortet.

mfg shedepe

Jaecko
11.07.2010, 10:47
Es macht schon einen Unterschied, da bei der Initialisierung mit Interrupt dieser gleich mit aktiviert wird.
Für Polling braucht man z.B. TXEN oder RCEN oder wie die Bits heissen nicht setzen.

Ich verwend beim UART nur Interrupt-gesteuertes senden/empfangen. Dabei schreibt mir der Interrupt die empfangenen Daten in nen FIFO, den ich dann irgendwann, wenn ich im Programm mal Zeit hab, abrufen kann. Da hängt dann auch nix.

Stefanie
19.07.2010, 16:21
Hallo,
ich habe es nun mal mit der "Poll-Methode" und einem Atmega128 realisiert.

Ich übergebe 10 "Char-s" über die UART an einen Sensor.
Dieser Antwortet mir, doch erhalte ich bei der Ausgabe mit getchar immer 3-Char-Werte der alten Antwort und dann erst die neue.

Der Sensor müsste eigentlich richtig funktionieren, darum meine Frage:
Kann es sein, dass ich erst noch den Emfpangspuffer löschen muss?

Wenn ja, wie macht man das?

peterfido
19.07.2010, 22:35
Du bist hier im Hardwarebereich. Im Bereich der Programmiersprache wird Dir bestimmt besser geholfen. Im Bascom Bereich habe ich eine passende Antwort im RS232 Problem - Thread.

Stefanie
20.07.2010, 04:17
Ist klar, danke.
Ich nutze den Codevision-Compiler.

Kann den Beitrag wer verschieben, oder so ich es nochmal neu schreiben?!