AVR USART Timing Frage

Gast #751758
Lesenswert?

Hallo.

Ich beschäftige mich zur Zeit mit dem USAT eines AT90CAN.
Kann mal jemand folgende Aussage bestätigen oder widerlegen:

Bei einer USART Übertragungsrate von 9600bps bleibt ein empfangenges 
Byte 830µs in UDR0 (9600/8 = 1200; 1/1200 = 830µs).
Das bedeutet wenn eine andere Interrupt Service Routine aufgerufen wird, 
kann diese locker 500µs lang sein ohne das ein Zeichen per UART vrloren 
geht. Ist das richtig? Kommt mir sehr lang vor...
#751782
Lesenswert?

Stefan "stefb" B. wrote:
> Deshalb ist das
> UART-Pollingverfahren Verschwendung von Resourcen und
> UART-Interruptbetrieb sinnvoll.

Das ist natürlich Bullshit, wie alle pauschale Aussagen.

Es kommt immer auf die jeweilige Aufgabe an.
Z.B. ein Bootloader pollt auf die UART, da er ja nichts anderes zu tun 
hat, als auf die Daten zu warten, die er flashen soll.
Er spart sich dann die ganze Pusherei und Popperei (kleinerer Code).


Und in der Regel macht man gerade langsame Sachen lieber im Polling und 
schnelle Sachen als Interrupt, damit schnelle Sachen nicht beeinflußt 
werden.

Erst recht beim AVR, da der ja keine Interruptprioritäten hat.


Peter
Persönliche Seite #751794
Lesenswert?

Hm... ich dachte Interrupts mit niedrigerer Vektornummer haben beim AVR 
hoehere Prioritaet?

Zitat aus dem Datenblatt:

The complete list of Vectors is shown in “Interrupts” on
page 46. The list also determines the priority levels of the different 
interrupts. The lower the address the higher is the priority level.

Wobei bei nested Interrupts jeder aktivierte Interrupt den aktuellen 
unterbrechen kann... also im Endeffekt isses nich weit her mit den 
Prioritaeten. Die Frage ist nur: Wenn zwei Interrupts fast zeitgleich 
ausgeloest werden, welcher wird bevorzugt?
Persönliche Seite #751829
Lesenswert?

Peter Dannegger wrote:
> Stefan "stefb" B. wrote:
>> Deshalb ist das
>> UART-Pollingverfahren Verschwendung von Resourcen und
>> UART-Interruptbetrieb sinnvoll.
>
> Das ist natürlich Bullshit wie alle pauschale Aussagen.

Peter, ich bin getroffen von deinem so unfreundlichen Kommentar zu 
meiner Antwort.

Wäre es nicht gegangen, deine Argumente zu bringen, ohne mir natürliche 
Bullschitterei anzuhängen?

Natürlich ist es eine pauschale Aussage. 'tschuldigung, dass ich keine 
Goldwaage mitgebracht habe und bei meinem Schnellschuss jeden möglichen 
Aspekt berücksichtigt habe oder die Aussage bis ins Unkenntliche 
relativiert habe.

Spass macht das nicht mehr.
#751937
Lesenswert?

Stefan "stefb" B. wrote:

> Peter, ich bin getroffen von deinem so unfreundlichen Kommentar zu
> meiner Antwort.

O.k., nächstes mal sag ich wieder "Mumpitz".


> 'tschuldigung, dass ich keine
> Goldwaage mitgebracht habe und bei meinem Schnellschuss jeden möglichen
> Aspekt berücksichtigt habe oder die Aussage bis ins Unkenntliche
> relativiert habe.

Gerade bei den AVRs sollte man mit Interrutps sparsam umgehen.
Deshalb fand ich Deine Aussage sehr leichtfertig.
Auf die Goldwaage legen wäre was anderes.


> Spass macht das nicht mehr.

Nicht immer alles so ernst nehmen.
Wir wärs mit ner Runde Bullshit Bingo:

http://www.hjsv.com/games/bingo/bingo-d.html


Peter
Gast #768535
Lesenswert?

Ich möchte jetzt rausfinden wie hoch ich die UART Baudrate stellen kann 
ohne das ein Zeichen verloren geht.

Dazu habe ich den längsten Pfad der ISR mit AVR Studio simuliert. Die 
Bearbeitung dauert 35,31µs. Das würde bedeutet die Baudrate darf maximal 
250kbps betragen. Jetzt habe ich aber was gelesen, das UDR über 2 Puffer 
verfügt. Bedeutet das, die Baudrate darf theoretisch 750kbps betragen 
ohne das etwas verloren geht?
#768612
Lesenswert?

@  Marco (Gast)

>Bearbeitung dauert 35,31µs. Das würde bedeutet die Baudrate darf maximal
>250kbps betragen.

Ja, wenn dein Quarz das hergibt.

>Jetzt habe ich aber was gelesen, das UDR über 2 Puffer
>verfügt.

In Empfangsrichtung.

> Bedeutet das, die Baudrate darf theoretisch 750kbps betragen
>ohne das etwas verloren geht?

Nein. Der Puffer kann nur KURZZEITIG Daten aufnehemen, wenn die CPU 
gerade mit anderen Dingen beschäftigt ist. Im MITTEL aber reichen deine 
35,31us nicht, um DAUERHAFT 750kBaud verlustfrei zu empfangen.

Interrrupt

MFG
Falk

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