-

Как настроить АЦП

-
Иными словами меняю сопротивление резистора на входе МК и получаю изменение скорости шаговика. Частота МК 4 мегагерца 
МК ATMega16 
изменение напряжения на входе 0..5 вольт 
AREF = 5 вольт 
Сложность задачи в том научится конфигурировать ацп программно т.е. как там чего и из чего????

Итак, приступим. Как я понимаю, в программе читается только один канал АЦП, следовательно, при старте программы надо установить мультиплексор на этот канал.

Но в регистре мультиплексора есть еще биты, выбирающие режим опорного напряжения. Поскольку тут 0-5В, значит, на вход AREF надо их же и подать (обязательно!). Значит, будет так:

ldi R16, Nканала ; старшие биты=0 - опорное напряжение на AREF
out ADMUX,R16

Для 4 МГц тактовой предделитель надо установить на CK/32, то есть

ldi R16,$85      ; 5 - предделитель, ст бит - разрешение
out ADCSRA,R16

Если работаем без прерываний и прочих тонкостей, то настройка АЦП на этом закончена. Да, да, все так просто. В программе для снятия отсчета делается следующее:

sbi ADCSRA,ADSC ; уст бит "старт преобразования"

WaitADC:

sbis ADCSRA,ADIF
rjmp WaitADC
; тут отсчет готов...
in R16,ADCL ; мл байт
in R17,ADCH ; ст байт (2 старших разряда)

Все... В R17:R16 имеем 10-ти разряднеое число, при 0В на входе АЦП оно будет =0, при 5В - 0x3FF. Ну, ессно, младший разряд будет "скакать", для борьбы с этим надо уже лезть в сложности.

Это самый простой вариант, конечно. АЦП в мегах достаточно "навороченный", но тут, как я понимаю, навороты без надобности.


да кстати а чего такое пределитель и как его конфигурировать и от каких параметров он зависит


Предделитель - счетчик с регулируемым коэффициентом деления, с тактовой процессора на тактовую АЦП. Тактовая процессора 4 МГц, тактовая АЦП для его нормальной работы должна быть в пределах 50-200 кГц, значит, считаем:

4000000/2 =2000000 много
4000000/4 =1000000 много
4000000/8 =500000 много
4000000/16 =250000 все еще много...
4000000/32 =125000 в самый раз
4000000/64 = 62500 тоже годится

4000000/128= 31250 а вот это уже мало.

Предделитель на 32 - это 5 в младшие 3 бита ADCSR, на 64 - 6
Старший бит - общее разрешение АЦП ! Если он =0, АЦП вообще выключен.


сниму у хозяев дом харьков ·· Кредит на недвижимость в Турции. Элитные апартаменты в Турции ·· Зеленоград сайдинг миттен виниловый  

(с)nml 12-Jul-2009