Gast
#2361546
Moin, offensichtlich kann ich OCR1A oder aber auch ICR1 verwenden für einen CTC verwenden (die WGM-Bits). Aber wo ist der konkrete Unterschied bzw. wozu gibt es überhaupt die Wahlmöglichkeit? mfg Cheffe
|
Anzeige
|
ATTiny24 Timer1 CTC Unterschied OCR1A und ICR1
Gast
#2361546
Moin, offensichtlich kann ich OCR1A oder aber auch ICR1 verwenden für einen CTC verwenden (die WGM-Bits). Aber wo ist der konkrete Unterschied bzw. wozu gibt es überhaupt die Wahlmöglichkeit? mfg Cheffe 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
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
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
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
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
Gast
#2361670
Moin Oliver, danke. habe es ausprobiert und es funktioniert. Gruß Cheffe Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|