-
-
Erfahrener Benutzer
Roboter Genie
ich habe von Bascom keinen schimmer, aber der a8 bleibt sich ja gleich.
timer0 ist ein 8 bit-timer, kann also maximal von 0 bis 255 zählen (256 schritte, errechenbar mit "2 hoch 8". der zähler startet hier aber nicht bei 0, sondern bei 61, zählt also nur 195 schritte.
ausserdem wird der Quarztakt noch durch den prescaler geteilt, prescale ist hier 1024. einen noch größeren prescaler hat der a8 nicht.
es ergibt sich also folgende frequenz:
quarztakt/(prescale-faktor*schrittzahl)=8000000/(1024*195)=40,06Hz
die dauer eines schrittes ist t=1/frequenz, also hier 0,02496 sekunden.
das sind halbwegs genau die 25ms, die du benötigst.
der langsamste takt mit 8-bit-timer bei 16 MHz wäre (etwa) 16,4ms. um auf 25ms zu kommen, müsstest du also den 16bit timer verwenden.
kurz gesagt ist die dauer eines schritts bei gleichem code bei halber frequenz logischerweise doppelt so lang.
kurz noch eine frage an die bascom-kundigen:
im datenblatt zählt timer0 von 0 bis zum compare-match. hier scheint das andersherum zu sein (zählt vom startwert bis 255), sonst würde meine rechnung ja nicht stimmen. ist das programmspezifisch oder eine eigenschaft von bascom?
wenn etwas nicht stimmt, korrigiert mich bitte.
gruesse von der katze
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen