-
-
Erfahrener Benutzer
Roboter Experte
Ich habe den Code angepasst, jedoch wird alle 0,03ms ein timer0 interrupt ausgelöst - ist das schon richtig? (gemessen über AVR-Studio)
laut den Einstellungen im TCCR0 müsste der Interrupt ja alle 4096us auftreten.
Der 1. Interrupt wird auch wirklich nach den 4096us aufgerufen (laut AVR Studio) -- 4096us=(1/(16000000/256))*256
Alle weiteren jedoch dann immer nach 0,03ms.
Ich denke, dass der Ausdruck TCNT0 = -2; nicht das tut was er soll.
Diese 0,03ms ließen sich nämlich daran erklären: 0,03ms=(1/(16000000/256))*2
Das heißt der Ausdruck TCNT0 = -2; lässt den Zähler nicht bis 256 zählen bis der Interrupt auftritt, sondern nur 2 mal.
Kann es sein, dass dies aufgrund der verschiedenen Compiler passiert?
edit:
da der Ausdruck TCNT0 = -2; nur bewirken soll, dass der Timer bis 512 zählen soll damit der Interrupt auftritt, habe ich jetzt einfach mal eine if Abfrage gemacht, die den Code erst beim 2. mal ausführt (if(++zaehler==....) - das währe dann das selbe als der Ausdruck TCNT0=-2; machen würde.
Jetzt ist es aber so, dass er erst alle 4096us in den Programmteil kommt.
Er sollte aber alle 1,78ms da rein kommen...
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen