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
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.
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.
@ 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
Hier ist ein Link: http://www.roboternetz.de/phpBB2/dload.php?action=file&file_id=169 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
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 %.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.