Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/22: Рейтинг темы: голосов - 22, средняя оценка - 4.86
dobryk
0 / 0 / 0
Регистрация: 05.02.2015
Сообщений: 64
1

8 битный ацп атмега8

28.04.2015, 13:25. Просмотров 4048. Ответов 6
Метки нет (Все метки)

Всем куку. Такая проблема, при ADLAR 0 значение ацп в диапазоне 0-1024, при ADLAR 1 ,как указано в даташите, значения ацп никак не 0-255 ,а выше 2000 тысяч, это проверял светодидом в протеусе по условию ацп>2000. Какой регистр я не установил и какие должны быть установленны для 8бит измерения?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2015, 13:25
Ответы с готовыми решениями:

Сонар HC-SR04 и атмега8
Приветствую. Решил поэкспериментировать с ультразвуковым датчиком HC-SR04....

Проблема с прошивкой Атмега8
Здравствуйте. Собрал девайс на меге8. Пытаюсь залить программу и не выходит....

Таймер Т2 в асинхронном режиме, Атмега8
Здравствуйте, сил нет и мысли кончились. Простите за такую преамбулу. Делаю...

Расширение АЦП микроконтроллера и подключение к АЦП датчиков
Здравствуйте. У меня встала задача сделать устройство для элеватора, для...

Mega16 и неиспользуемый АЦП (питание ацп?)
Если я не использую АЦП контроллера нужно ли подавать на АЦП питание? Если...

6
HotD
0 / 0 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
28.04.2015, 13:31 2
покажите код.
0
dobryk
0 / 0 / 0
Регистрация: 05.02.2015
Сообщений: 64
28.04.2015, 13:47 3
Код
void InitADC()
{
ADMUX=(1<<REFS0)|(1<<ADLAR);                         // For Aref=AVcc;
ADCSRA=(1<<ADIM)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); //Rrescalar div factor =128
}

uint16_t ReadADC(uint8_t ch)
{
//Select ADC Channel ch must be 0-7
ch=ch&0x07;
ADMUX = (ADMUX&0xF8)|ch;

//Start Single conversion
ADCSRA|=(1<<ADSC);

//Woyt for conversion to somplete
while(!(ADCSRA & (1<<ADIF)));

//Clear ADIF by writing one to it
ADCSRA|=(1<<ADIF);

return(ADC);
}
В main вызываю инициализацию ADC
Проверяю значения ADC так
Код
if(ReadADC(0)>200){
PORTB|=(1<<1);
}else{
PORTB&=~(1<<1);
}
В коде мог сделать синтаксическую ошибку, я сейчас не дома около кода.
0
_pv
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,515
28.04.2015, 14:28 4
return(ADCH);
0
dobryk
0 / 0 / 0
Регистрация: 05.02.2015
Сообщений: 64
28.04.2015, 14:44 5
Цитата Сообщение от _pv
return(ADCH);
Спасибо! Дома попробую.
0
яверт
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
28.04.2015, 15:32 6
Цитата Сообщение от dobryk
Всем куку.
И тебе не хворать...

Такая проблема, при ADLAR 0 значение ацп в диапазоне 0-1024, при ADLAR 1 ,как указано в даташите, значения ацп никак не 0-255 ,а выше 2000 тысяч
АЦП в меге8 10 битный и ADLAR этого не изменит, так как этот бит задаёт только выравнивание результата. Что бы быстро читать старшие 8 бит результата, надо ровнять влево (ADLAR=1) и читать только старший байт - ADCH.
0
dobryk
0 / 0 / 0
Регистрация: 05.02.2015
Сообщений: 64
28.04.2015, 21:35 7
Спасибо всем, изменив ADC на ADCH все получилось.
0
28.04.2015, 21:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2015, 21:35

16-битный ШИМ в ATmega16
Доброго времени суток. Возникла проблема - в даташите написано, что ШИМ у 16-й...

Как сделать шим 50Гц с изменяемой скважностью на АТмега8
Здравствуйте. Мне нужно организовать управление сервомашинкой, для нее, как...

Получить 20-битный ЦАП
Привет знатоки. Такая идея - выводим на один 10-битный ЦАП первые 10 бит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru