1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2024-12-24 13:21:23 +01:00

AVR Mega2560: Set timer reg ADCSRB correct

This commit is contained in:
Harald Barth 2022-11-16 00:13:31 +01:00
parent 4a3d8729c6
commit f5b48619bf

View File

@ -126,6 +126,7 @@ void DCCTimer::reset() {
#endif #endif
uint16_t ADCee::usedpins = 0; uint16_t ADCee::usedpins = 0;
int * ADCee::analogvals = NULL; int * ADCee::analogvals = NULL;
bool ADCusesHighPort = false;
/* /*
* Register a new pin to be scanned * Register a new pin to be scanned
@ -136,6 +137,8 @@ int ADCee::init(uint8_t pin) {
uint8_t id = pin - A0; uint8_t id = pin - A0;
if (id > NUM_ADC_INPUTS) if (id > NUM_ADC_INPUTS)
return -1023; return -1023;
if (id > 7)
ADCusesHighPort = true;
pinMode(pin, INPUT); pinMode(pin, INPUT);
int value = analogRead(pin); int value = analogRead(pin);
if (analogvals == NULL) if (analogvals == NULL)
@ -196,7 +199,15 @@ void ADCee::scan() {
while (true) { while (true) {
if (mask & usedpins) { if (mask & usedpins) {
// start new ADC aquire on id // start new ADC aquire on id
ADMUX=(1<<REFS0)|id; //select AVCC as reference and set MUX #if defined(ADCSRB) && defined(MUX5)
if (ADCusesHighPort) { // if we ever have started to use high pins)
if (id > 7) // if we use a high ADC pin
bitSet(ADCSRB, MUX5); // set MUX5 bit
else
bitClear(ADCSRB, MUX5);
}
#endif
ADMUX=(1<<REFS0)|(id & 0x07); //select AVCC as reference and set MUX
bitSet(ADCSRA,ADSC); // start conversion bitSet(ADCSRA,ADSC); // start conversion
// for scope debug TrackManager::track[1]->setBrake(1); // for scope debug TrackManager::track[1]->setBrake(1);
waiting = true; waiting = true;