Forum: Mikrocontroller und Digitale Elektronik Timer als CLK-Source für anderen Timer


von Hans (Gast)


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

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Hm? Zähl doch einfach ein register hoch!

von AVRFan (Gast)


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.

von Hans (Gast)


Lesenswert?

Wenn man die Timer einmal liebgewonnen hat, dann will man anscheinend 
alles damit lösen.

Aber mit einem Register ist es sicherlich einfacher und bequmer.

Danke
Hans

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Naja... also THEORETISCH kannst du einen Timer bei Compare den OCA Pin 
toglen lassen, jezt legst du den OCA Pin auf z.B. T0 und Taktest damit 
Den zweiten Timer...
Aber machs lieber mit dem Register... ist besser und einfacher ;)

von AVRFan (Gast)


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.

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.