Доброго времени суток. Вкратце проблема - есть потенциометр (0-5 кОм), который подключён к АЦП контроллера (также к АЦП контроллера подключён подтягивающий к земле резюк 20 Ом), при повороте потенциометра увеличивается переменная, которая затем в цикле является задержкой при подаче импульса после определённого события
Задержка при повороте потенциометра возрастает очень резко, без плавного нарастания при повороте потенциометра (т.е. зависимость поворот потенциометра-увеличение переменной нелинейна). Подскажите, что нужно изменить в коде, чтобы достичь линейной зависимости?
Раздел: AVR
volatile int tempdelay; //регулируемая задержка
main
{
ADMUX = (1<<REFS0)|(1<<ADLAR)|(1<<MUX2); //задаём параметры АЦП
ADCSRA = (1<<ADEN)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
ADCSRA|=(1 << ADSC);
DDRD|=(1<<7);
while
{
.... //здесь идёт какой то код, после которого должна быть задержка с импульсом
for (int i=0; i<(tempdelay*20); i++) //хреновый цикл задержки
{}
PORTD|=(1<<7); //импульс 3 мсек
_delay_ms(3);
PORTD&=~(1<<7);
}
ISR (ADC_vect)
{
tempdelay = ADCH; /присваиваем переменной значение с АЦП
ADCSRA |= (1 << ADSC);
}
Задержка при повороте потенциометра возрастает очень резко, без плавного нарастания при повороте потенциометра (т.е. зависимость поворот потенциометра-увеличение переменной нелинейна). Подскажите, что нужно изменить в коде, чтобы достичь линейной зависимости?
Раздел: AVR