2bialix в продолжение темы ->
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено ... 20 августа 2003 г. 08:47

Не совсем мне понятны ваши ответы - "можно, не можно". Давайте обмозгуем задачку.
Итак, постановка задачи.

Устройство - интеллектуальный датчик, работает в сети RS485.Контроллер ADuC8__
Необходимо решить задачу внутрисхемного программирования через RS485.

Начинаем думать.
Раз "интеллектуальный датчик", то организация обмена с ним(и) осуществляется по
принципу "запрос-ответ". Напрашивается полудуплексный драйвер что-то типа MAX485 или ADM485.
Если "датчик", то размеры платы разумно делать минимальными.

Собираем схему датчика.
Делаем требуемую аналоговую и цифровую обвязку. Остается подключить драйвер к адуку. Отводим от
него три линии к драйверу: Rx-линия приема(P3.0),Tx-линия передачи (P3.1),CS-выбор направления приема/передачи (P3.2).

Собственно программирование.
Считаем, что есть отдельное интерфейсное устройство преобразователь RS485<->RS232 для связи датчика с ПК,
которому не нужны никакие линии выбора направления обмена, распознает это автоматически.
Переводим адук в режим программирования замыканием через резистор 1к на землю линии /PSEN.
В этом режиме линия Р3.2 подтянута к +Vdd, это означает, что драйвер RS485 установлен на передачу.
Запускаем загрузчик на ПК, который через пару секунд после запуска вылетит по failed.

Что же произошло?
А произошло то, что во время программирования адука некому переключать линию драйвера на прием/передачу, поскольку
внутренний последовательный загрузчик адука не знает, что это ему нужно было делать.

Вывод: при такой схеме устройства запрограммировать адук невозможно.

Другие варианты решения.
1. Использовать другой драйвер RS485, который имеет дуплексную внутреннюю схему обмена.
В этом случает увеличивается количество проводов в кабеле, требуется соответствующий преобразователь RS485<->RS232.
2. Использовать второй драйвер RS232. В зависимости от его местонахождения есть два варианта:
а) На плате датчика.
Это самый простой вариант. Здесь лишь необходимо обратить внимание, что выходы RO (RS485) Rout(RS232) необходимо
соединить по схеме "И" и только после этого подавать на вход приемника адука. Или же на время программирования переключать
вход приемника адука на драйвер RS232.
Недостатки: драйвер RS232 нужен лишь во время внутрисхемного программирования.
б) В некотором другом внешнем устройстве.
На плате датчика предусматриваем некое подобие разъема, к которому будет подключаться внешний драйвер RS232.
Если питание этого драйвер независимое, то достаточно для программирования адука трехпроводной линии: Rx,Tx,GND.
Перед программированием подключаем эти линии к разъему датчика, переводим адук в режим программирования, включаем питание и
легко его прошиваем. Дальше работаем по RS485.

У себя мы используем вариант 2б, таким образом были запрограммированы более 1000 штук адуков. Нетрудно подсчитать какая экономия
при этом получилась.

Если есть другие соображения, то всегда пожалуйста, буду рад услышать.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru