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 +- 3 files changed, 6 insertions(+), 6 deletions(-) (limited to 'Projects/AVRISP-MKII') 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); -- cgit v1.2.3