Timer als CLK-Source für anderen Timer

Gast #425979
Lesenswert?
• ▲
▼
Hallo,

kann man bei einem AVR-ATmega einen Timer als CLK-Source für einen 
andern Timer nehmen?

Ich habe versucht bei der Interruptroutine des Timers 1 den Timer 3 zu 
erhöhen. (TCNT3++;) Man kann ja mittels CPU den Zählerstand 
beeinflussen. Jedoch wird dabei kein Interrupt ausgelöst (im Output 
Compare Match Mode). Hat jemand eine Idee wie man das Problem umgehen 
könnte, damit ich einen Interrupt ca. alle 12 Stunden auslöse?

Grüße
Hans
Gast #425993
Lesenswert?
• ▲
▼
> damit ich einen Interrupt ca. alle 12 Stunden auslöse?

Ich werde nie verstehen, warum die Leute immer Interrupts auslösen 
wollen.

Ja, so wie mein Vorredner sagte, macht man das normalerweise.  Zähl ein 
(oder gegebenenfalls mehrere) Register in einem genau bekannten 
Zeitintervall (üblicherweise geliefert von einem Timerinterrupt) hoch. 
Prüf nach jedem Inkrementieren, ob es den Zählstand erreicht hat, der 
den 12 Stunden entspricht. Wenn die Prüfung "ja" ergibt, führ die 
Alle-12-Stunden-Aktion aus und resette das Register wieder auf Null. 
Fertig.
Gast #426084
Lesenswert?
• ▲
▼
>Wenn man die Timer einmal liebgewonnen hat, dann will man anscheinend
>alles damit lösen.

Das sollst Du ja auch! Du sollst blos keine Hardware-Timer verwenden, 
sondern *Software*-Timer.  Deren Prinzip ist simpel und immer dasselbe, 
nämlich das beschriebene.  Außerdem ist es kein Problem, wenn Du 52 
Software-Timer für Deine umfangreichen Steuerungsaufgaben benötigst 
(wobei auch selbstverständlich ein paar davon andere ein- uns 
ausschalten dürfen und solche Scherze...) - Du schreibst einfach den 
entsprechenden Code und fertig.  Hardware-Timer sind dagegen eine knappe 
Ressource, mit denen sparsam und überlegt umgegangen werden muss, weil 
z. B. der ATmega8 nur drei davon hat.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren