Hallo, wie komme ich rechnerisch am besten auf 1 Sekunden der 500ms oder 100ms Interrupt? Also mit welchem Quarz und mit welchem Prescaler etc pp. Leider komme ich mit dem Timer in Pascal noch nicht klar, daher kann ich den noch nicht einsetzen....
@Kim Schmidt (corado) >wie komme ich rechnerisch am besten auf 1 Sekunden der 500ms oder 100ms >Interrupt? Grundrechenarten? >Also mit welchem Quarz und mit welchem Prescaler etc pp. >Leider komme ich mit dem Timer in Pascal noch nicht klar, daher kann ich >den noch nicht einsetzen.... Doch. Wenn du schon daran scheiterst, such dir ein anderes Hobby. Siehe Artikel Timer. MFG Falk
Kannst jedem Quarz nehmen. Das Prinzip ist Rechnen mit gebrochenen Zahlen: Beitrag "Die genaue Sekunde / RTC" Peter
Tag! Die MHz sind doch recht egal? Hauptsache der Timer läuft mit größtem Prescaler nicht unterhalb einer Sekunde über? Ganz Einfach: - 16Bit-Timer verwenden. -Passenden Prescaler verwenden. - Interrut Timer_overflow aktivieren -Korrekturzahl ausrechnen und nach einem Überlauf jeweils in den Timer vorladen. Und schon hast du jede Sekunde (oder halb oder sonstiges??) einen Timer_overflow zur verfügung. Bei Fragen helf ich gerne^^ Grüße Steffen
Steffen schrieb: > Tag! > > Die MHz sind doch recht egal? > Hauptsache der Timer läuft mit größtem Prescaler nicht unterhalb einer > Sekunde über? > > Ganz Einfach: > > - 16Bit-Timer verwenden. > -Passenden Prescaler verwenden. > - Interrut Timer_overflow aktivieren > -Korrekturzahl ausrechnen und nach einem Überlauf jeweils in den Timer > vorladen. Anstelle von Vorladen, könnte man auch den CTC Modus benutzen. Aber auch Falk ganz oben hat recht. Timer sind universelle Bausteine des Mega32. Wenn man nicht mit ihnen umgehen kann, und das ist wirklich nicht schwer, dann verschenkt man glatt einen nicht unbeträchtlichen Teil dessen, was ein Mega32 von sich aus kann.
Karl heinz Buchegger schrieb: > Anstelle von Vorladen, könnte man auch den CTC Modus benutzen. Ups, den hab ich jetzt ganz vergessen^^ Is beides eine Möglichkeit. Egal welcher weg, beide führen nach Rom... Ich hab schon öfters beide Wege eingeschlagen. ;-) Grüße Steffen
Mit nem 0,032768 MHz Quarz und nem Prescaler von 128 hat man einen "Quarzgenauen" Sekundentakt (wenn ich mich jetzt nicht verrechnet hab) ;-) 8-Bit Timer und Overflow IRQ
Matthias schrieb: > Mit nem 0,032768 MHz Quarz und nem Prescaler von 128 hat man einen > "Quarzgenauen" Sekundentakt (wenn ich mich jetzt nicht verrechnet hab) > ;-) > > 8-Bit Timer und Overflow IRQ Mit einem 16MHz Takt, 256er Prescaler und CTC auf 62499 (16 Bit Timer) kommt man ebenfalls auf 1Hz. Software Prescaler kann man auch immer machen. Für einen 1Hz Takt kann man alles nehmen.
Wenn der Takt an einem Ausgang(ein Pin des Controllers) ausgegeben werden soll, kann man auch die PWM-fähigkeit des Timers mit einstellbarem TOP benutzen. Vllt. ein wenig overkill, aber Hauptsache es tut :) mfg mf
Wenn es eine (batteriebetriebene) Uhr werden soll, gibt es spezielle Uhrenquarze mit ein paar und 32kHz. (Frage am Rande: Sind die eigentlich genauer, als die 16MHz mit Prescaler?) Da gibts von AVR auch eine Appnote zu: http://www.atmel.com/atmel/acrobat/doc1259.pdf
Hi Ist wirklich nett, wie ihr eure Antworten verpackt.. >Leider komme ich mit dem Timer in Pascal noch nicht klar, daher kann ich >den noch nicht einsetzen.... Wieviele von euch programmieren in Pascal ? Würd mich mal interessieren. Die Frage ist vielleicht etwas unglücklich gestellt, denn wenn ich einen Interrupt alle 500ms oder alle 100 ms habe, brauche ich ja nur eine Variable hochzählen und entsprechend bei >1 oder >9 Sekunden hochzählen. Das bedeutet, es gibt halt eine Zeitbasis von 2 oder 10 Hz. Wenn der Pascal-Compiler da nicht grad eine Wissenschaft draus macht, kann man sich getrost zurücklehnen, der Controller steckt das lässig weg und läßt sich auch noch genug Zeit für weitere Aufgaben. Da ich µC's auch nicht in Pascal programmiere, kann ich leider nicht mehr zu sagen. Gruß oldmax
ja, so mache ich es zur Zeit. Das ganze dient einem Amperstundenzähler, der zumindest über 2 Tage hinweg halbwegs genau sein sollte. Leider bekomme ich aber schon nach wenigen Stunden erhebliche Abweichungen... Auf der gleichen Platine habe ich noch einen RTC (PCF8386 oder wie der sich schimpft) Den nutze ich derzeit aber wirklich nur für die Uhr....
Ich nehme dann gern 4194304 Hz da braucht man sich nicht zu verenken. Welchen PASCAL Compiler verwendest du?
ursprünglich AVRco, mit dem wäre das ganz einfach... Jetzt habe ich mir aber die Vollversion von Mikropascal "gegönnt" und da ist leider nicht so viel pascal drin wie man erwarten sollte...vieles muss doch noch auf direktem Wege erledigt werden.. so das ich vermutlich doch gleich C hätte nehmen können... Schade, ich habe hier etliche Quarze rumliegen, aber ich glaube kein 4er...so ein Ärger
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.