roboforum.ru

Технический форум по робототехнике.

считывание результатов АЦП в атмега 8

считывание результатов АЦП в атмега 8

к561ЛА7 » 06 апр 2010, 09:40

ADMUX=0b00100001; // вход 1, опорное на AREF, выравнивание в право
ADCSRA.6=1;
while(ADCSRA.4==0);
a5=ADCH;


так все работает

ADMUX=0b00000010; // вход 2, опорное на AREF, выравнивание в влево
ADCSRA.6=1;
while(ADCSRA.4==0);
a6=ADCL;


и так все работает


ADMUX=0b00100001; // вход 1, опорное на AREF, выравнивание в право
ADCSRA.6=1;
while(ADCSRA.4==0);
a5=ADCH;
ADMUX=0b00000010; // вход 2, опорное на AREF, выравнивание в лево
ADCSRA.6=1;
while(ADCSRA.4==0);
a6=ADCL;


А так НЕ работает!
Что это за ужас?

Re: считывание результатов АЦП в атмега 8

boez » 06 апр 2010, 11:14

When ADCL is read, the ADC Data Register is not updated until ADCH is read. Consequently, if
the result is left adjusted and no more than 8-bit precision is required, it is sufficient to read
ADCH. Otherwise, ADCL must be read first, then ADCH.

То есть, ADCH можно читать в одиночку, а вот ADCL нельзя - надо читать оба, сначала ADCL, затем ADCH:

Код: Выделить всёРазвернуть
ADMUX=0b00000010; // вход 2, опорное на AREF, выравнивание в лево
ADCSRA.6=1;
while(ADCSRA.4==0);
a6=ADCL;
tmp=ADCH;

Re: считывание результатов АЦП в атмега 8

avr123.nm.ru » 06 апр 2010, 11:15

Кошмар как на улице Вязов!


Rambler\'s Top100 Mail.ru counter