Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
20.03.2005, 09:40
|
|
Слава
Гость
|
об АЦП на mega8
Здравствуйте.
Ищу помощи по следующему вопросу
Я использую внутренний АЦП на mega8. Большая точность не требуется, идет просто оцифровка сигнала от некоторого источника, а потом подсчет числа импульсов. Такой подсчет в мк реализовать не удалось. Пришлось отсылать оцифровку на комп. Но вот здесь проблема. Иногда выборка приходит нормальной, те. без значительных выбросов, а чаще всего это это вообще загзагообразная выборка с прыжками где-то в 0.1 от напр ИОНа! АЦП работает нормально, я проверял до этого, когда были одиночные преобразования, отсылал их на комп, все приходило без проблем.
А сейчас, такое впечатление, что буфер UART на компе засирается чем-то. Хотя я его очищаю перед каждым запуском программы. Еще странно, что порой проскакивают одни и те же оцифровки.
Может было что-то похожее?
Спасибо.
|
|
|
|
21.03.2005, 10:18
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,392
Сказал спасибо: 1,976
Сказали Спасибо 1,332 раз(а) в 580 сообщении(ях)
|
Re: об АЦП на mega8
Сообщение от Слава
|
Здравствуйте.
А сейчас, такое впечатление, что буфер UART на компе засирается чем-то. Хотя я его очищаю перед каждым запуском программы. Еще странно, что порой проскакивают одни и те же оцифровки.
Может было что-то похожее?
Спасибо.
|
Думаю, что вам бы следовало привести код программы. 99.9% глюков появляются вовсе не по причине железа...
Ну а помочь вам вслепую вряд ли кто сможет.
|
|
|
|
21.03.2005, 13:50
|
|
Слава
Гость
|
спасибо за готовность помочь!
вот часть кода
----------------------------------------------------
...
ldi tmp,0b10000101
out ADCSR,tmp
ldi tmp,0b11000010
out ADMUX,tmp
;-----------------
ADC_conv_st:
ldi r16, 0 ;обнуляем для уверенности
out ADCL, r16
sbi ADCSR, ADSC ;старт преобразования
ADC_conv_complete:
sbis ADCSR, ADIF
rjmp ADC_conv_complete
in r16, ADCL
in r15, ADCH
cbi ADCSR, ADIF
trans: sbis UCSRA, UDRE ;Если бит UDRE в USR установлен, то
;пропустить cледующую команду
rjmp trans ;Вернуться на метку trans
out UDR, r16 ;в регистр данных UART
rjmp ADC_conv_st
----------------------------------------------------------
nml, вы код программы мк имели ввиду, или программы приема на ком-ре? Если комп. программу, то она довольно большая. Если думаете ошибки могут быть там, приведу и ее код.
|
|
|
|
21.03.2005, 14:57
|
|
Гость
Гость
|
Вообще то по даташиту сброс флага конца преобразования производится записью логической 1, а не 0 (как у Вас).
|
|
|
|
23.03.2005, 10:25
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,392
Сказал спасибо: 1,976
Сказали Спасибо 1,332 раз(а) в 580 сообщении(ях)
|
Сообщение от Слава
|
ldi tmp,0b10000101
out ADCSR,tmp
ldi tmp,0b11000010
out ADMUX,tmp
|
тут, как я понял, 2 канал, вн. 2.5в опорное, с предделителем тактовой надеюсь правильно посчитали... Все Ок...
Цитата:
|
ADC_conv_st:
ldi r16, 0 ;обнуляем для уверенности
out ADCL, r16
|
вот это совершенно ни к чему... хотя писать туда действительно можно. Если не исп. АЦП - типа хранилища использовать
Цитата:
|
sbi ADCSR, ADSC ;старт преобразования
ADC_conv_complete:
sbis ADCSR, ADIF
rjmp ADC_conv_complete
in r16, ADCL
in r15, ADCH
cbi ADCSR, ADIF
|
вот тут (как уже правильно подметили) - надо SBI! Так уж АВР устроен, что всякие биты готовностей у него сбрасываются записью туда единицы, что, ессно, криво и нелогично... Но так уже есть.
Иначе флаг готовности останется в "1" и следующее преобразование вы реального завернения не дождетесь - то есть АЦП работает, а флаг (старый!) стоит.
Ну а в остальном криминала не вижу, если правильно подобраны скорости, режим USART - все должно работать...
|
|
|
|
23.03.2005, 18:56
|
|
Слава
Гость
|
Действительно, дело было в этом бите.
И я сам читал до этого доку на мк, видел, что сбрасывать бит надо командой установки бита. Но тогда не обратил на это внимания.
Спасибо вам всем!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:56.
|
|