www.mikrocontroller.net

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


Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm? Zähl doch einfach ein register hoch!

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.