Hallo, kann man mit dem Timer eines AVR´s Zeiten von ca 10 bis 20 Minuten zuverlässig herstellen? Es muss ja nicht auf die Sekunde genau sein. Also ich würde dies für eine Beleuchtung realisieren. Mit Jumper an den Eingängen möchte ich verschiedene Zeiten einstellen können.
ueber timer und dann zaehlen lassen wenn du zB. jede minute ein / ausschalten willst wuerde ich jede sekunde einen TIMOverflow ausloesen lasse nudn darin ein register hochzaehlen im main mit 59 vergleichen und schon ist die minute rum
"kann man mit dem Timer eines AVR´s Zeiten von ca 10 bis 20 Minuten zuverlässig herstellen?" Ich verstehe die Frage nicht. Nach oben hin besteht keinerlei Grenze, der AVR hat genügend Register+RAM, um bequem Tera-Jahre zählen zu können. In praktischen Anwendungen werden aber meist nur 100 Jahre gezählt (0..99). Die Genauigkeit wird ganz allein durch die Genauigkeit des Quarzes bestimmt, 100ppm sollten kein Problem sein. Im Web findest Du genügend Beispiele dazu. Praktisch wird die Zeitmessung in folgende 4 Schritte unterteilt: 1. Sekundentakterzeugung 2. Uhrzeitzählung 3. Datumszählung 4. Sommerzeit-, Schaltjahrkorretur Peter
Ich hatte letztens das hier: SIGNAL(SIG_OVERFLOW0) { static char counter; if (++counter == 244) { counter = 0; clock++; } } Bei einem Mega8 @ 4MHz, Teiler clk_io/64. Das gibt 4e6/2^8/2^6/244 = 4e6/3997696 Hz fuer clock++, geht in einer Stunde um 2 Sekunden vor. clock ist ein globaler 'volatile unsigned int'. In der main-Funktion kannst Du dann einfach clock Sekundenzaehler verwenden, klappt aber irgendwann um, am besten nach jeder Triggerung auf 0 setzen: unsigned int limit = 20 * 60; ... if (clock >= limit) { clock = 0; mach_was(); } sowas in der Art. Laesst sich natuerlich auch problemlos in Assembler machen.
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.