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

 
 
> проблема с уарт Mega64, атипичная проблема с передачей по UART
CrazyAlex
сообщение Jun 4 2007, 06:45
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 57
Регистрация: 11-01-05
Из: Пермь
Пользователь №: 1 881



не могу понять в чем дело:

устройство: Мега->485->Adam->PC

софт: iccAVR6.31a, AVRstudio, jtag ice mk2 (не совсем софт), на PC самописный модбас-мастер (проверен временем), а также терминалка.

протокол модбас RTU, чтение регистров (03) идет на ура, запись (06) в регистр значение 511 - все отвечает правильно. запись значения 512 - вместо ответа какая-то хрень, число байт хрени совпадает с числом байт в ответе. причем эта самая хрень каждый раз разная. хотя запрос один и тот же.

смотрю в авр студии.
пакет приходит, регистр меняется на нужное значение, формируется в буферном массиве frame1 ответ (правильный ответ).
Портится на этапе UDR1=frame1[0], UDR1=frame1[outbytecnt]. т.е. в UDR1 или пишется что-то не то, или в нем самом портится..., т.е. PC принимает совсем не то что я записываю в UDR.
Если поставить точку останова на UDR1=frame1[0], и потом по шагам, то все отвечает нормально.

Исходники прилагаю.

Уже мозг сломал. Подскажите кто-нибудь где копать???
Прикрепленные файлы
Прикрепленный файл  m64uart.ZIP ( 14.07 килобайт ) Кол-во скачиваний: 48
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
oran-be
сообщение Jun 7 2007, 05:30
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 30-03-07
Из: Одесса
Пользователь №: 26 621



Цитата
В модбасе сначала идет младший байт срс, а потом старший.

В AVR компиляторах, в частности в IAR, тоже идет сначала младший, потом старший, в отличии от компилеров семейства 51, в частности Keil.


У AVR'ов в UARTе есть еще один глюк (не знаю, правда, может его уже втихаря и починили) - это старт условие запуска приема байта генерируется не по перепаду уровня с 1 на 0, а по уровню 0. То есть, если подключить драйвер 485 к порту и отключить подтяжки, то при переключениии на передачу нога RX повиснет в воздухе и если уровень на ней станет низким и если приемник не будет отключен, то он начнет долбить прерывания. Приемник может в этот момент натворить очень много дел.
Go to the top of the page
 
+Quote Post



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

 


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


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