aboutsummaryrefslogtreecommitdiffstats
path: root/LUFA/Drivers/Peripheral
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2009-06-22 10:23:47 +0000
committerDean Camera <dean@fourwalledcubicle.com>2009-06-22 10:23:47 +0000
commit7d7573e4e554f4b17686a915eba0da12fbebc2ed (patch)
treedb06292821cc9e9f1f99ddb163fca7902a3e80b6 /LUFA/Drivers/Peripheral
parenta34cccf09931a54a607a56d4ded88f3b7a4752b4 (diff)
downloadlufa-7d7573e4e554f4b17686a915eba0da12fbebc2ed.tar.gz
lufa-7d7573e4e554f4b17686a915eba0da12fbebc2ed.tar.bz2
lufa-7d7573e4e554f4b17686a915eba0da12fbebc2ed.zip
Corrected the ADC driver for the ATMEGA16U4 and ATMEGA32U4 (thanks to Opendous Inc.).
Diffstat (limited to 'LUFA/Drivers/Peripheral')
-rw-r--r--LUFA/Drivers/Peripheral/AT90USBXXX67/ADC.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/LUFA/Drivers/Peripheral/AT90USBXXX67/ADC.h b/LUFA/Drivers/Peripheral/AT90USBXXX67/ADC.h
index 358629c70..4cc7c32c3 100644
--- a/LUFA/Drivers/Peripheral/AT90USBXXX67/ADC.h
+++ b/LUFA/Drivers/Peripheral/AT90USBXXX67/ADC.h
@@ -163,8 +163,33 @@
*/
static inline void ADC_SetupChannel(const uint8_t Channel)
{
+ #if (defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) || \
+ defined(__AVR_AT90USB1287__) || defined(__AVR_AT90USB647__) || \
+ defined(__AVR_ATmega32U6__))
DDRF &= ~(1 << Channel);
DIDR0 |= (1 << Channel);
+ #elif (defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__))
+ if (Channel < 8)
+ {
+ DDRF &= ~(1 << Channel);
+ DIDR0 |= (1 << Channel);
+ }
+ else if (Channel == 8)
+ {
+ DDRD &= ~(1 << 4);
+ DIDR2 |= (1 << 0);
+ }
+ else if (Channel < 11)
+ {
+ DDRD &= ~(1 << (Channel - 3));
+ DIDR2 |= (1 << (Channel - 8));
+ }
+ else
+ {
+ DDRB &= ~(1 << (Channel - 7));
+ DIDR2 |= (1 << (Channel - 8));
+ }
+ #endif
}
/** Starts the reading of the given channel, but does not wait until the conversion has completed.