www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bitte um Hilfe zur AVR-Timerberechnung


Autor: SueBlue (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Vorname Nachname (logout-name)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was heisst etwa?
Ein 8 bit Timer läuft nach 256 Schritten über. Ohne Vorteiler sind dies 
dann 8'000'000 / 256 gibt etwa 32'000 Überläufe pro Sekunde. Wenn du 
also Vorteiler 4 einstellen kannst, dann hauts etwa hin.

Autor: Vorname Nachname (logout-name)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist ein Link:
http://www.roboternetz.de/phpBB2/dload.php?action=...

Mit diesem Programm kann man ein wenig "spielen" und sich die Werte 
errechnen lassen. 50 Befehle im Interrupt?? Wie lange die brauchen, 
hängt natürlich davon ab, welche Befehle es sind, denn die dauern 
nicht immer gleich lang.


MfG Paul

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.