From 0ce2950d811b8dc11e46602e7490d795d8ddfb5d Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Mon, 8 Nov 2010 03:41:48 +0000 Subject: Added board hardware driver support for the Adafruit U4 breakout board. Fixed calculation of timer register reload values derived from F_CPU; must subtract one from the division result for the compare value to be correct. Change AVRISP-MKII rescue clock speed to 4MHz to ensure that a 125KHz ISP speed works regardless of the target's fuses (i.e. DIV8 set). --- Projects/AVRISP-MKII/AVRISP-MKII.txt | 6 +++--- Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c | 4 ++-- Projects/AVRISP-MKII/Lib/V2Protocol.c | 2 +- Projects/TempDataLogger/TempDataLogger.c | 2 +- Projects/Webserver/Lib/uip/clock.c | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) (limited to 'Projects') diff --git a/Projects/AVRISP-MKII/AVRISP-MKII.txt b/Projects/AVRISP-MKII/AVRISP-MKII.txt index 534af5639..d569e7e3e 100644 --- a/Projects/AVRISP-MKII/AVRISP-MKII.txt +++ b/Projects/AVRISP-MKII/AVRISP-MKII.txt @@ -105,9 +105,9 @@ * * * - * In addition, the AVR's OCR1A pin will generate a .5MHz clock, to act as an external rescue device clock - * if the fuses have been mis-set. To use the recovery clock, connect the OCR1A pin of the USB AVR to the target - * AVR's XTAL1 pin, and set the ISP programming speed to 125KHz (note: other ISP speeds will not work correctly). + * In addition, the AVR's OCR1A pin will generate a 4MHz clock, to act as an external rescue device clock if the + * fuses have been mis-set. To use the recovery clock, connect the OCR1A pin of the USB AVR to the target AVR's + * XTAL1 pin, and set the ISP programming speed to 125KHz (note: other ISP speeds will not work correctly). * * 1 Optional, see \ref SSec_Options section - for USB AVRs with ADC modules only \n * 2 See AUX line related tokens in the \ref SSec_Options section diff --git a/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c b/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c index fe2f50d07..f4e9e3d3a 100644 --- a/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c +++ b/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.c @@ -196,10 +196,10 @@ void ISPTarget_ConfigureRescueClock(void) DDRB |= (1 << 5); #endif - /* Start Timer 1 to generate a .5MHz clock on the OCR1A pin */ + /* Start Timer 1 to generate a 4MHz clock on the OCR1A pin */ TIMSK1 = 0; TCNT1 = 0; - OCR1A = (F_CPU / 2 / 500000UL); + OCR1A = ((F_CPU / 2 / 4000000UL) - 1); TCCR1A = (1 << COM1A0); TCCR1B = ((1 << WGM12) | (1 << CS10)); } diff --git a/Projects/AVRISP-MKII/Lib/V2Protocol.c b/Projects/AVRISP-MKII/Lib/V2Protocol.c index e2c658673..618dedb43 100644 --- a/Projects/AVRISP-MKII/Lib/V2Protocol.c +++ b/Projects/AVRISP-MKII/Lib/V2Protocol.c @@ -61,7 +61,7 @@ void V2Protocol_Init(void) #endif /* Timeout timer initialization (10ms period) */ - OCR0A = ((F_CPU / 1024) / 100); + OCR0A = (((F_CPU / 1024) / 100) - 1); TCCR0A = (1 << WGM01); TIMSK0 = (1 << OCIE0A); diff --git a/Projects/TempDataLogger/TempDataLogger.c b/Projects/TempDataLogger/TempDataLogger.c index c572a3870..c3cfd65f9 100644 --- a/Projects/TempDataLogger/TempDataLogger.c +++ b/Projects/TempDataLogger/TempDataLogger.c @@ -208,7 +208,7 @@ void SetupHardware(void) TWI_Init(); /* 500ms logging interval timer configuration */ - OCR1A = ((F_CPU / 1024) / 2); + OCR1A = (((F_CPU / 1024) / 2) - 1); TCCR1B = (1 << WGM12) | (1 << CS12) | (1 << CS10); TIMSK1 = (1 << OCIE1A); diff --git a/Projects/Webserver/Lib/uip/clock.c b/Projects/Webserver/Lib/uip/clock.c index 86322966e..0906e6125 100644 --- a/Projects/Webserver/Lib/uip/clock.c +++ b/Projects/Webserver/Lib/uip/clock.c @@ -19,7 +19,7 @@ ISR(TIMER1_COMPA_vect) //Initialise the clock void clock_init() { - OCR1A = ((F_CPU / 1024) / 100); + OCR1A = (((F_CPU / 1024) / 100) - 1); TCCR1B = ((1 << WGM12) | (1 << CS12) | (1 << CS10)); TIMSK1 = (1 << OCIE1A); } -- cgit v1.2.3