Человек хочет AVR освоить, а вы ему вернуться на аналоговую базу.... Вот код инициализации АЦП для Tiny13: Измеряемое напряжение на вход PB2 (DDR=0) ;блок включения АЦП ldi R16, 0b00000100; выключили цифровой вход PB2 (ADC1) out DIDR0,R16;
ldi R16,0b00100001 ; привязка к 5 в питания, выравнивание "меньше", MUX = 01 - PB2 ввод ; ADLAR=1 - т.е. выравнивание "влево" по ADCH-ADCL (ADCH - 0-255). out ADMUX,R16; ldi R16, 0b11001110; разрешили прерывание, режим одиночного с делением тактовой на 64 out ADCSRA, R16;
И по выполнению преобразования выполнится прерывание от АЦП (внимательно читать даташит - т.е. RTFM).
В обработчике прерывания считываешь ADCH - 0-0вольт, 255 - Vdd на входе. in R16, ADCL; nop nop in R16, ADCH; Обязательно при считывании сначала младший (он нам не нужен), затем - старший.... Считывать данные можно и по флагу окончания преобразования,ИМХО, ждать как-то нехорошо простаивать ресурсы...
|