[an error occurred while processing this directive]
Трабла с UART AT90s2313
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
Fokus 12 октября 2005 г. 14:02
Девайс простейший - ждет данных по RS-485 и выдает ответ (скорость 4800, обмен происходит 2 раза в секунду примерно). Программа написана на C CVAVR 1.24.6 Прием - передача работают по прерываниям. Проблема в том что свзяь с устройством прерывается, т.е. он перестает отвечать на запросы, происходит это нечасто, раз в несколько часов.
Причина - в том что перестают возникать прерывания по приему. Успел выяснить что переполнения аппаратного стэка и датастэка нет, ОЗУ , регистры и ввод-вывод не портятся.
В прерывнии по приему UDR читается безусловно. USR не анализируется.
Связь восстанавливается если вывести в регистр UDR символ, ну или ресетнуть устройство при пропадании связи.
Может кто-то сталкивался с чем-то подобным?
Составить ответ
|||
Конференция
|||
Архив
Ответы
Всем спасибо .... :) По-видимому причина была в следующем: — Fokus (12.10.2005 17:25 217.30.255.54 , 904 байт)
Так держите приемник всегда включенным - я так делаю. — argus98 (12.10.2005 17:30 81.22.205.230 , пустое )
и еще, 485-й - полудуплекс, невозможно держать приемник включенным всегда — Fokus (12.10.2005 17:49 217.30.255.54 , пустое )
я тоже так делаю, это ессно. Но тут проходил некий сбой во время передачи, который возможно приводил к некорректному сбросу проца, и инициализация не выполнялась — Fokus (12.10.2005 17:34 217.30.255.54 , пустое )
я тоже так делаю, это ессно. Но тут проходил некий сбой во время передачи, который возможно приводил к некорректному сбросу проца, и инициализация не выполнялась — Fokus (12.10.2005 17:34 217.30.255.54 , пустое )
нда, всем голову заморочил :) поставил вот для верности супервизор питания, вроде как реже стал эффект проявляться — Fokus (12.10.2005 15:45 217.30.255.54 , пустое )
Ответ: — -Тумблер- (12.10.2005 15:20 194.190.161.241 , 317 байт)
А передача по какому прерыванию происходит? — Bill (12.10.2005 14:54 193.233.83.90 , пустое )
UART_TXC — Fokus (12.10.2005 14:58 217.30.255.54 , пустое )
Попробуйте использовать флажок UDRE. На первый взгляд разница небольшая, но.... — Bill (12.10.2005 15:12 193.233.83.90 , пустое )
в смысле прерывание по передаче переделать на UART_DRE ? — Fokus (12.10.2005 15:28 217.30.255.54 , пустое )
По DRE лучше передавать последний байт (+): — argus98 (12.10.2005 15:39 81.22.205.230 , 307 байт)
Наоборот, видимо. Я обычно использую TXC для передачи именно последнего байта. — Bill (12.10.2005 15:51 193.233.83.90 , 119 байт)
ага, в 485 ведь надо RTS переключить — Fokus (12.10.2005 15:55 217.30.255.54 , пустое )
Был у меня случай. Может не в тему, но все же... — Bill (12.10.2005 16:29 193.233.83.90 , 720 байт)
интересно, но в данном случае такой эффект может быть скорее причиной сброса, который , в свою очередь , приводит уже к некорректной дальнейшей работе ЮАРТа. Дело в том, что — Fokus (12.10.2005 16:58 217.30.255.54 , 823 байт)
интересный, но в данном случае такой эффект может быть скорее причиной сброса, который , в свою очередь , приводит уже к некорректной дальнейшей работе ЮАРТа — Fokus (12.10.2005 16:38 217.30.255.54 , пустое )
И точно перепутал, извиняюсь... Как давным давно написал эти 3 прерывания, так и не вспоминаю, оказалось - подзабыл. — argus98 (12.10.2005 15:55 81.22.205.230 , пустое )
RXEN, RXCIE и IE не трогаю, 1 раз инициализирую и все, и при обрыве связи регистр UCR не портится — Fokus (12.10.2005 15:43 217.30.255.54 , пустое )
Ну, да. — Bill (12.10.2005 15:37 193.233.83.90 , пустое )
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru