реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> ADC+USART=bug
Alex Forth
сообщение Jan 22 2007, 10:30
Сообщение #1





Группа: Новичок
Сообщений: 13
Регистрация: 22-01-07
Пользователь №: 24 667



Есть mega8.
Поднял на ней USART - все ок.
Поднял ADC - тоже вроде все ок.
Следующим этапом заганяю ADC в режим шумопонижения и по концу преобразования посылаю данные ч-з USART. При этом ч-з USART посылается мусор.
Что я делаю не так?
Go to the top of the page
 
+Quote Post
GDI
сообщение Jan 22 2007, 11:59
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Код здесь бы не помешал.
Телепатически могу предположить что при следующем измерении надо посылать контроллер в режим шумопонижения после того как УСАРТ передаст все данные, а не после того как вы поместили данные в регистр UDR.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
Alex Forth
сообщение Jan 22 2007, 12:43
Сообщение #3





Группа: Новичок
Сообщений: 13
Регистрация: 22-01-07
Пользователь №: 24 667



Цитата(GDI @ Jan 22 2007, 12:59) *
Код здесь бы не помешал.
Телепатически могу предположить что при следующем измерении надо посылать контроллер в режим шумопонижения после того как УСАРТ передаст все данные, а не после того как вы поместили данные в регистр UDR.

Кода под руками увы нет. Попробую по памяти.

adc_loop:
ldi r16,0x90
out MCUCR,r16
sleep
rjmp adc_loop


adc_redy:
out UDR,r20
inc r20

wait_send:
sbis UCSRA,UDRE
rjmp wait_send
reti

Ждать в данном случае надо по UDRE или TXC ?
Go to the top of the page
 
+Quote Post
GDI
сообщение Jan 22 2007, 13:01
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



UDRE - это когда данные помещены в сдвиговый регистр передатчика, но еще не отправлены.
TXC - возникает после фактической отправки данных, если в регистр UDR не помещены новые данные.
Вывод: надо ждать TXC.

Код все же лучше не по-памяти, а то все же не понятно, как инициализация выполнена, как программа выполняется... особенно если учесть мое слабое знание асма авр-овского..smile.gif
MCUCSR не зачем каждый раз инициировать в adc_loop...

Сообщение отредактировал GDI - Jan 22 2007, 13:01


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 09:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01379 секунд с 7
ELECTRONIX ©2004-2016