From f48042de9ebf4ab1d33b1b53ce799911ca1de990 Mon Sep 17 00:00:00 2001 From: patacongo Date: Fri, 10 Jun 2011 23:09:23 +0000 Subject: Clean up AVR timer setup git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3692 42af7a65-404d-4744-a932-0658087f49c3 --- nuttx/arch/avr/src/at90usb/at90usb_timerisr.c | 24 ++++++++++++++++++++---- nuttx/arch/avr/src/atmega/atmega_timerisr.c | 24 ++++++++++++++++++++---- 2 files changed, 40 insertions(+), 8 deletions(-) (limited to 'nuttx/arch/avr') diff --git a/nuttx/arch/avr/src/at90usb/at90usb_timerisr.c b/nuttx/arch/avr/src/at90usb/at90usb_timerisr.c index 079433b8d..5e92acb5a 100644 --- a/nuttx/arch/avr/src/at90usb/at90usb_timerisr.c +++ b/nuttx/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 = 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. + */ - TCCR1A = 0x08 | PRESCALE; + 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/nuttx/arch/avr/src/atmega/atmega_timerisr.c b/nuttx/arch/avr/src/atmega/atmega_timerisr.c index 6cd11e393..402add3d3 100644 --- a/nuttx/arch/avr/src/atmega/atmega_timerisr.c +++ b/nuttx/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 = 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. + */ - TCCR1A = 0x08 | PRESCALE; + 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); } -- cgit v1.2.3