X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fcpu%2Favr%2Fdrv%2Fadc_avr.c;h=51c81caca5d0ee13b9fd3e9304abb40ce56f7484;hb=ce55bd008dd57b9e9caddd9e3de0b79a975adee5;hp=3eb08b79c2c2cf84bc582c797e912e19f5e828cb;hpb=d7c99e625d8111df00662724329fca3f8e7f9a94;p=bertos.git diff --git a/bertos/cpu/avr/drv/adc_avr.c b/bertos/cpu/avr/drv/adc_avr.c index 3eb08b79..51c81cac 100644 --- a/bertos/cpu/avr/drv/adc_avr.c +++ b/bertos/cpu/avr/drv/adc_avr.c @@ -102,14 +102,25 @@ void adc_hw_select_ch(uint8_t ch) #if CPU_AVR_ATMEGA8 || CPU_AVR_ATMEGA328P || CPU_AVR_ATMEGA168 ADMUX &= ~(BV(MUX3) | BV(MUX2) | BV(MUX1) | BV(MUX0)); #elif CPU_AVR_ATMEGA32 || CPU_AVR_ATMEGA64 || CPU_AVR_ATMEGA128 || CPU_AVR_ATMEGA1281 \ - || CPU_AVR_ATMEGA1280 + || CPU_AVR_ATMEGA1280 || CPU_AVR_ATMEGA2560 ADMUX &= ~(BV(MUX4) | BV(MUX3) | BV(MUX2) | BV(MUX1) | BV(MUX0)); + #if CPU_AVR_ATMEGA1280 || CPU_AVR_ATMEGA2560 + ADCSRB &= ~(BV(MUX5)); + #endif #else #error Unknown CPU #endif - /* Select channel, only first 8 channel modes are supported for now */ + /* Select channel, only first 8 channel modes are supported */ ADMUX |= (ch & 0x07); + + #if CPU_AVR_ATMEGA1280 || CPU_AVR_ATMEGA2560 + /* Select channel, all 16 channels are supported */ + if (ch > 0x07) + ADCSRB |= BV(MUX5); + + #endif + }