Forum: Mikrocontroller und Digitale Elektronik Sehr lange Zeit mit Timer?


von Bastian (Gast)


Lesenswert?

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.

von Jens123 (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

"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

von Zotteljedi (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.