- Вложения
-
- adc.png
- (28.12 КБ) 802 скачивания
АЦП на atmega328p нужна помощь в освоении
- Сообщения: 147
- Зарегистрирован: Вс мар 09, 2014 09:13:00
Салам всем котам
Хочу сделать чтобы ацп atmega328p работал в режиме фриран. А конкретнее, чтобы мониторил измениения входа ADC, уходил в прерывание ADC, а отуда передавал значения ADC по UART. Для этого написал прикрепленный ниже код. Данный код проверял в протеусе. По UART в терминал он мне передает верные значения входа ADC, но только один раз. Не понимаю почему. Ведь в настройках бит ADATE=1. Почему прерывание вызывается только один раз?
- Реклама
АЦП с данным МК не применял. Но вот эта фраза из ДШ из описания регистра ADCSRB походу означает что АЦП надо запускать каждый раз ручками
Switching to Free Running mode (ADTS[2:0]=0) will not cause a trigger event, even if the ADC Interrupt Flag is set.
- Сообщения: 147
- Зарегистрирован: Вс мар 09, 2014 09:13:00
Так в этом же абзаце ДШ сказано, так будет если в ADTE очищен, т.е. ADTE=0:Switching to Free Running mode (ADTS[2:0]=0) will not cause a trigger event, even if the ADC Interrupt Flag is set.
А у меня ADTE=1, а тогда :If ADATE is cleared, the ADTS[2:0] settings will have no effect
, режим ADC определяется так:If ADATE in ADCSRA is written to one, the value of these bits selects which source will trigger an ADC
conversion.
А так как я не изменял значения битов ADTS[2:0], то в них нули, а это как раз и есть режим Free Running modeADTS[2:0] Trigger Source
000 Free Running mode
001 Analog Comparator
010 External Interrupt Request 0
011 Timer/Counter0 Compare Match A
100 Timer/Counter0 Overflow
101 Timer/Counter1 Compare Match B
110 Timer/Counter1 Overflow
111 Timer/Counter1 Capture Event
Может откликнится тот, кто делал уже такое, подскажите в чем может быть косяк
- Сообщения: 1849
- Зарегистрирован: Вс дек 25, 2016 08:34:54
В прерывании ISR (ADC_vect) после последнего transmit поставьте ADCSRA|=(1<<ADSC).
- Реклама
- Сообщения: 147
- Зарегистрирован: Вс мар 09, 2014 09:13:00
Огромное кошачье МЯ, и чедовеческое спасибо за ответы, особенно Dimon456
Теперь все как нодо работает 




