Atmega 16 CTC Problem

OP #1183596
Lesenswert?
• ▲
▼
Moin

Ich habe folgendes Phänomen beim Simulieren einer Anwendung beobachtet. 
Ich initalisiere zuerst den Timer 1, aktiviere den CTC Modus und setze 
einen Grenzwert. Der Zähler läuft dann auch brav los. Danach wird noch 
der Ana_Comp initalisiert und dann werden die Interrupts freigegeben. 
Obwohl der TimerCounter nun ja schon ein paar Takte läuft wird sofort 
nach der Freigabe der CTC Handler angesprungen und die entspr. Routine 
ausgeführt. Warum? Mit hilfe von "seriellen Debugging" beobachte ich das 
scheinbar auch bei der echten Hardware. Nach einem Reset ist ein Zähler 
der in der CTC Isr hochgezählt wird noch Null und wird unmittelbar 
danach erhöht obwohl der TOP Wert noch nicht erreicht ist.

Any hints?

Thomas
#1183602
Lesenswert?
• ▲
▼
Wenn Du den Grenzwert erst nach dem Initialisieren des Prescalers 
(Starten des Timers) setzt, kann je nach Taktfrequenz für den Timer 
durchaus schon ein Interrupt anstehen, wenn die Interrupt-Bearbeitung 
freigegeben wird! Schließlich ist der Reset-Wert der für CTC infrage 
kommenden Register (OCRnx bzw. ICRn) Null und dementsprechend wird beim 
zweiten Timertakt das Compare-Match-Flag gesetzt.
OP #1183611
Lesenswert?
• ▲
▼
@ Johannes

Das wars! Vielen Dank, so einfach kann die Lösung sein...

@A.K.

Hätte ich auch gerne gemacht nur dürfen wir zur Zeit keine Wechselmedien 
verwenden wegen einer kleinen fiesen Wurminfektion 8-§ und das Programm 
ist natürlich nicht auf diesem Rechner...
Gast #1183612
Lesenswert?
• ▲
▼
Hi

In welcher Reihenfolge initialisierst du die Register?
Ich könnte mir vorstellen, das wenn der Timer aktiviert wird, bevor OCR 
gesetzt ist als Top 0 angesehen wird. Damit würde das IR-Flag gesetzt 
und nach 'sei' der Interrupt angesprungen. Evtl. nach der 
Initialisierung OCFxy löschen.

MfG Spess

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 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.