Sehr lange Zeit mit Timer?

Gast #134904
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.
Gast
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
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.