From a126745bdcc5f090d345a5a175bbd3e5925c574d Mon Sep 17 00:00:00 2001 From: patacongo Date: Fri, 10 Jun 2011 23:09:23 +0000 Subject: [PATCH] Clean up AVR timer setup git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3692 42af7a65-404d-4744-a932-0658087f49c3 --- arch/avr/src/at90usb/at90usb_timerisr.c | 24 ++++++++++++++++++++---- arch/avr/src/atmega/atmega_timerisr.c | 24 ++++++++++++++++++++---- 2 files changed, 40 insertions(+), 8 deletions(-) diff --git a/arch/avr/src/at90usb/at90usb_timerisr.c b/arch/avr/src/at90usb/at90usb_timerisr.c index 079433b8d4..5e92acb5a8 100644 --- a/arch/avr/src/at90usb/at90usb_timerisr.c +++ b/arch/avr/src/at90usb/at90usb_timerisr.c @@ -151,15 +151,31 @@ void up_timerinit(void) OCR1AH = (uint8_t)((uint16_t)MATCH >> 8); OCR1AL = (uint8_t)((uint16_t)MATCH & 0xff); - /* Setup clock source and compare match behaviour. */ + /* Setup clock source and compare match behaviour. + * + * TCRR1A: + * COM1A 0:1 = 00 -> Normal port operation + * COM1B 0:1 = 00 -> Normal port operation + * COM1C 0:1 = 00 -> Normal port operation + * WGM1 0:1 = 00 -> Clear Timer on Compare (CTC) modes of operation + */ - TCCR1A = 0x08 | PRESCALE; + TCCR1A = 0; + + /* TCCR1B: + * ICNC1 = 0 -> Input Capture Noise Canceler disabled + * ICES1 = 0 -> Input Capture Edge Select + * WGM 2:3 = 01 -> Clear Timer on Compare (CTC) modes of operation + * CS1 0:2 = xxx ->Selected pre-scaler. + */ + + TCCR1B = (1 << WGM12) | PRESCALE; /* Attach the timer interrupt vector */ - (void)irq_attach(AT90USB_IRQ_T2COMPA, (xcpt_t)up_timerisr); + (void)irq_attach(AT90USB_IRQ_T1COMPA, (xcpt_t)up_timerisr); /* Enable the interrupt on compare match A */ - TIMSK1 |= 0x10; + TIMSK1 |= (1 << OCIE1A); } diff --git a/arch/avr/src/atmega/atmega_timerisr.c b/arch/avr/src/atmega/atmega_timerisr.c index 6cd11e393e..402add3d34 100644 --- a/arch/avr/src/atmega/atmega_timerisr.c +++ b/arch/avr/src/atmega/atmega_timerisr.c @@ -151,15 +151,31 @@ void up_timerinit(void) OCR1AH = (uint8_t)((uint16_t)MATCH >> 8); OCR1AL = (uint8_t)((uint16_t)MATCH & 0xff); - /* Setup clock source and compare match behaviour. */ + /* Setup clock source and compare match behaviour. + * + * TCRR1A: + * COM1A 0:1 = 00 -> Normal port operation + * COM1B 0:1 = 00 -> Normal port operation + * COM1C 0:1 = 00 -> Normal port operation + * WGM1 0:1 = 00 -> Clear Timer on Compare (CTC) modes of operation + */ - TCCR1A = 0x08 | PRESCALE; + TCCR1A = 0; + + /* TCCR1B: + * ICNC1 = 0 -> Input Capture Noise Canceler disabled + * ICES1 = 0 -> Input Capture Edge Select + * WGM 2:3 = 01 -> Clear Timer on Compare (CTC) modes of operation + * CS1 0:2 = xxx ->Selected pre-scaler. + */ + + TCCR1B = (1 << WGM12) | PRESCALE; /* Attach the timer interrupt vector */ - (void)irq_attach(AT90USB_IRQ_T2COMPA, (xcpt_t)up_timerisr); + (void)irq_attach(ATMEGA_IRQ_T1COMPA, (xcpt_t)up_timerisr); /* Enable the interrupt on compare match A */ - TIMSK1 |= 0x10; + TIMSK1 |= (1 << OCIE1A); }