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.
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.
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
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".
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
Moin Oliver, danke. habe es ausprobiert und es funktioniert. Gruß Cheffe
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.