Hallo,
ich habe eine kleine Frage es geht um ein 8 bit Timer. Nach meiner
Berechnung, stelle ich fest, dass ich nicht mit einem Clock-Frequenz von
5MHz, ein Timer, das jedes 1 Sekunde eine Aktion durchführe.
Berechnung: gewälte Prescaler 1024:
5MHz/1024=4882.81
gewünschte Zeit:t= 1s
OCR0A=t*4883.81 =4884 aber das Register ist 8 bit groß.
Ich vermute, dass ich irgendwo einen Fehler mache. Kann jemanden mir
helfen?
Morgen,
du braust noch einen Counter für Timer, um das zu zählen, wieviele Mals
der Timer voll ist.
Also 256 / 4883 = 0,052 d.h. alle 0,052 Sek. sollte der Timer voll sein,
20 mal ist 1 Sek.
Gruß
Juan
Hallo,
vielleicht verrätst du erstmal welcher Timer und uC das ist.
Weil wenn CTC Modus möglich ist wird das genau, ansonsten eher nit glaub
ich.
Gruss
Falk Brunner wrote:
> @Juan Carlos (juan)>>>Also 256 / 4883 = 0,052 d.h. alle 0,052 Sek.>> Besser so rechnen>> 4883/256 = 19,07421875, also rund 19. Wenns genau sein soll, siehe>> AVR - Die genaue Sekunde / RTC>> MFG> Falk
Vielen Dank, hab schon noch etwas gelernt!
Gruß
Juan
@gast (Gast)
>wenn ich gut verstanden habe, soll ich in dem TCNT0-Register der Wert 20>schreiben. Falls ich jede 1 Sekunde zählen möchte.
Das hast du falsch verstanden. Du musst 19 Überläufe (Overflow) vom
Timer 0 zählen, dann ist ~1s vergangen.
Siehe auch AVR-Tutorial: Timer
MFG
Falk
gast wrote:
> Hallo Zusammen,> wenn ich gut verstanden habe, soll ich in dem TCNT0-Register der Wert 20> schreiben. Falls ich jede 1 Sekunde zählen möchte.
Hi,
nur einfach eine Variable z.B. int counter einsetzen. In der
Interrupt-Routine schreibst du counter++ bis counter = 19 ist 1 s
vorbei.
Gruß
Wenn nen Timer, wie oben schon gefragt wurde einen
CTC Modus besitzt, kann man sich den softwarezähler sparen, das kann der
Timer auch, und Zeiteffektiver.
Dazu im datenblatt unter den Timermodi CTC nachlesen.
Als Beispiel hier fuer einen Atmega 128:
Hi
@ QuizMaster: Und? Er will 1s, nicht 10ms. Und das geht mit einem
8Bit-Timer und 5MHz nun mal nicht in einem Rutsch.
Ich persönlich würde zwar auch CTC benutzen, mit OCR= F3H/243D. Ergibt
49,971ms. und dann bis 20 zählen.
MfG Spess
Ups...
das m von ms wurde mal schnell dazugelesen,...
Ein 16Bit timer koennte das, vorrausgesetzt der Contzroller hat sowas...
Sonst doch nen Softwaretimer,...
sorry, Besserung in Aussicht ;-)
Gruß