Bitte um Hilfe zur AVR-Timerberechnung

Gast #939507
Lesenswert?
• ▲
▼
Hallo Forum

Ich bin beim AVR-Timer noch nicht so fit, vielleicht kann mir jemand 
helfen.
Hier sind meine Angaben und Fragen:

Ein AVR läuft mit 8Mhz.
Er hat nur 8-Bit Timer (Atiny).
Etwa 8000x/sec soll ein Timer-Interupt kommen. Muss nicht so genau sein.
Innerhalb des Timer-Int werden im Durchschnitt ca. 50 Befehle 
ausgeführt.

Fragen:
1) Wie berechne ich nun die Werte für den Vorteiler und den Vorladewert 
des Timers?

2) Wieviel Prozent der Zeit verbringt der AVR dann etwa im Int?


Vielen Dank
Susanne
#939529
Lesenswert?
• ▲
▼
Zur zweiten Frage:
Du hast 50 Befehle. Sind dies ASM-Befehle? Wenn ja, dann schau nach wie 
viel Takte die jeweils brauchen. Bei Branchbefehlen sind die Anzahl 
Taktzyklen meist abhängig davon ob verzweig wird oder nicht, dann kannst 
du einen worst-case berechnen.
Angenommen jeder Befehl braucht 1 Zyklus, dann hast du 8000 mal pro sek 
50 Befehle, das sind 400'000 Befehle pro sek, das entspricht etwa 5% 
Auslastung.
#939533
Lesenswert?
• ▲
▼
@ SueBlue (Gast)

>Ich bin beim AVR-Timer noch nicht so fit, vielleicht kann mir jemand
>helfen.

Helfen ja, aber "nur" Hilfe zur Selbsthilfe.

>Ein AVR läuft mit 8Mhz.
>Er hat nur 8-Bit Timer (Atiny).
>Etwa 8000x/sec soll ein Timer-Interupt kommen. Muss nicht so genau sein.

>Innerhalb des Timer-Int werden im Durchschnitt ca. 50 Befehle
>ausgeführt.

>Fragen:
>1) Wie berechne ich nun die Werte für den Vorteiler und den Vorladewert
>des Timers?

Na bei 8 Mhz und 8000 Interrupts pro Sekunde kann man das auch ohne 
Taschenrechner ausrechnen, oder?

8.0000.000 Hz / 8000 = 1000

Passt nicht in einen 8 Bit Zähler. Aber wenn man mit Vorteiler 8 
arbeitet braucht man nur 1000/8=125, dass passt wieder. Vorladewert ist 
eigentlich passe, dafür gibt es den CTC Modus.

>2) Wieviel Prozent der Zeit verbringt der AVR dann etwa im Int?

Kommt auf den Int würde ich sagen. Was sind 50 Befehle? 
Assemblerbefehle? Die dauern meist nur 1 Takt. C-"Befehle"? Kann man 
schwer abschätzen.

MFG
Falk
Gast #939573
Lesenswert?
• ▲
▼
Das ist ja nun keine so schwierige Rechnung.

>Ein AVR läuft mit 8Mhz.
>Etwa 8000x/sec soll ein Timer-Interupt kommen.

8 MHz/(8000/s) = 8000000/8000 = 1000

==> Der Timerinterrupt muss alle 1000 Taktzyklen auftreten.

CTC-Modus mit Prescaler 8 und OC0A = 125 leistet das Verlangte, denn 8 * 
125 = 1000.

>Innerhalb des Timer-Int werden im Durchschnitt ca. 50 Befehle ausgeführt.
>Wieviel Prozent der Zeit verbringt der AVR dann etwa im Int?

50 Assemblerbefehle brauchen irgendwas zwischen 50 und 100 Taktzyklen 
(je nachdem welche Befehle).  Der zu erwartende Interrupt-Zeitanteil 
beläuft sich somit auf 50/1000 bis 100/1000, oder in Prozent ausgedrückt 
5 % bis 10 %.

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