Страница 1 из 1
Проблема с приёмом по UART
Добавлено: Сб апр 09, 2011 10:35:20
ladik
Доброго времени суток!) В МК пока чайник( по учёбе появилась необходимость разобраться в UART. Всё как бы насторил. Запустил симуляцию...Выставил RXD=1-прерывание по приёму. В UDR вбил данные, к примеру 0xFF. Нажал F11, выполнилось прерывание по приёму, и сразу очистился регистр UDR,

т.е. я даже не успел перейти в тело обработчика. Понял, что это происходит из за UDRE=1. Почему он равен 1 не понимаю.

Таким образом, приём как бы и не осуществляется

Ещё вопрос в том, что при моделировании в протеусе, при нажатии клавиши на клавиатуре светодиоды загораются, только их код не соответствует коду клавиши. Подскажите, мне, чайнику в чём тут ошибка.
Файлы AVR Studiuo и Proteus-a прилагаю.
Спасибо, кто откликнется!

Re: Проблема с приёмом по UART
Добавлено: Сб апр 09, 2011 16:57:33
SubDia
UDRE - это флаг готовности к передаче, и в Вашем случае роли он не играет.
После ресета он инициализируется со значением "1", и этому удивляться не следует.

Непонятно мне, зачем Вам контроль четности? Это раз. Второе. Посмотрите страницу 166 даташита - там написано, что регистр UCSRC и регистр UBRRL из регистровой пары UBRRL:UBRRH занимают одно и то же адресное пространство. Для их разнесения (и избежания ошибок при инициализации) существует бит URSEL в регистре UCSRC, который нужно устанавливать в единицу при записи в UCSRC.
Со скоростью что-то Вы такое жуткое намудрили... Для скорости приема 9200 пишем в UBRRL число 25 (0x19). У меня Ваша программка запустилась, и нормально работает (специально по ASCII сверялся), маленько только подправил блок инициализации. Передатчик отключил к собачьей бабушке, простоты для.

uart_init:
LDI R16,0x90
OUT UCSRB, R16
LDI R16,0x86
OUT UCSRC, R16
LDI R16, 0x00
OUT UBRRH,R16
LDI R16, 0x19
OUT UBRRL,R16
Re: Проблема с приёмом по UART
Добавлено: Сб апр 09, 2011 20:37:45
Aheir
Очень часто обсуждаемый вопрос. Воспользуйтесь поиском и пишите в уже имеющихся темах.
Re: Проблема с приёмом по UART
Добавлено: Сб апр 09, 2011 20:38:13
Aheir
Очень часто обсуждаемый вопрос. Воспользуйтесь поиском и пишите в уже имеющихся темах.