ATTiny24 Timer1 CTC Unterschied OCR1A und ICR1

#2361555
Lesenswert?
• ▲
▼
OCR1A kann als Compare Match Register ganz normal verwendet werden, wenn 
ICR1 den TOP Wert vorgibt.
ICR1 kann als Input Capture Register ganz normal verwendet werden, wenn 
OCR1A den TOP Wert vorgibt.

In Kurzform: Die eigentliche Aufgabe weder von OCR1A noch von ICR1 ist 
es diese TOP-Steuerung zu übernehmen. Wahrscheinlich wollte man aber bei 
Atmel nicht noch ein Register einfügen, hatte aber noch Modus-Bits frei 
und hat sich daher entschlossen, die bereits vorhandenen Register zu 
zweckentfremden. Und damit man keine oder kaum Funktionalität verliert, 
hat man einfach 2 Möglichkeiten angeboten, so dass man nach Möglichkeit 
immer eine benutzen kann ohne behindert zu werden.
Gast #2361582
Lesenswert?
• ▲
▼
Cheffe schrieb:
> wozu gibt es überhaupt die Wahlmöglichkeit?

Das als Topwert verwendete OCR1A-Register steht nicht mehr als 
Compare-Kanal zur Verfügung, es ist dann nur ein Kanal über OCR1B 
möglich.

Wird ICR1 als Topwert benutzt, stehen dagegen 2 Kanäle zur Verfügung. 
Das kann vorteilhaft sein, wenn ICR1 sowieso nicht benötigt wird.
Gast #2361594
Lesenswert?
• ▲
▼
Moin, danke Euch beiden. Der Groschen ist gefallen ;-)

Nun noch eine Frage. Für einen Interrupt muss ich dann im TIMSK-Register 
ICIE1 auf 1 setzen. Angenommen ein Interrupt wird dann ausgelöst, wo 
lande ich dann?

0x0001 INT0 External Interrupt Request 0
0x0006 TIM1_COMPA Timer/Counter1 Compare Match A


Gruß
Holger
Gast #2361619
Lesenswert?
• ▲
▼
Cheffe schrieb:
> Für einen Interrupt muss ich dann im TIMSK-Register
> ICIE1 auf 1 setzen.

Das würde man nur machen wenn man die Input Capture Einheit verwendet, 
hat aber nix mit der Verwendung des ICR1 als Topwert zu tun.

Damit beantwortet sich:

> 0x0001 INT0 External Interrupt Request 0
> 0x0006 TIM1_COMPA Timer/Counter1 Compare Match A

mit weder noch.

Man müsste OCIE1A..B setzen und landet dann im entsprechenden Vektor, 
gibt für jeden Kanal einen eigenen, steht im DB unter "Interrupts".
Gast #2361625
Lesenswert?
• ▲
▼
Cheffe schrieb:
> Für einen Interrupt muss ich dann im TIMSK-Register
> ICIE1 auf 1 setzen. Angenommen ein Interrupt wird dann ausgelöst, wo
> lande ich dann?

ICIE = Input Capture Interrupt Enable
Der dazugehörige Interruptvektor heisst wenig überraschend TIM1_CAPT

Oliver

Antwort schreiben

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.

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.