Всем доброго времени суток.
Возникла проблема: есть галетный переключатель, подключенный через резисторы различного номинала к АЦП микроконтроллера, АЦП в свою очередь преобразует различные напряжения с переключателя (из-за разных резюков) в 8-ми битное число, которое я вывожу на ЖК дисплей
Проблема в том, что значения АЦП сразу запоняют весь экран, а мне нужно на экране получить одно число, после которого контроллер дожидается нового значения напряжения
Пробема в том, что условие "res!=1" или "res!=2" не выполняется и цифры идут сплошняком на дисплей, как избежать этой проблемы?
Раздел: AVR
Возникла проблема: есть галетный переключатель, подключенный через резисторы различного номинала к АЦП микроконтроллера, АЦП в свою очередь преобразует различные напряжения с переключателя (из-за разных резюков) в 8-ми битное число, которое я вывожу на ЖК дисплей
Проблема в том, что значения АЦП сразу запоняют весь экран, а мне нужно на экране получить одно число, после которого контроллер дожидается нового значения напряжения
volatile int res=0; //переменная, хранящая номер переключателя
main
{
ADMUX = (1<<REFS0)|(1<<ADLAR); //настройка АЦП
ADCSRA = (1<<ADEN)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
ADCSRA |= (1<<ADSC);
}
ISR (ADC_vect) //прерывание ацп
{
unsigned char AdcBuf = ADCH;
char bo[10]; //символьная константа для вывода на жк
if (AdcBuf>248 res!=1)
{ keytemp=AdcBuf;
itoa(keytemp, bo, 10); //преобразует int в char
lcd_puts(bo); //вывод на жк
res=1;
}
else if (AdcBuf>210 && res!=2)
{ keytemp=AdcBuf;
itoa(keytemp, bo, 10); //иначе выводим другое значение на экран
lcd_puts(bo);
res=2;
ADCSRA |= (1<<ADSC);
}
else
{
res=0;
}
ADCSRA |= (1<<ADSC);
}
Пробема в том, что условие "res!=1" или "res!=2" не выполняется и цифры идут сплошняком на дисплей, как избежать этой проблемы?
Раздел: AVR