|
Не совсем мне понятны ваши ответы - "можно, не можно". Давайте обмозгуем задачку.
Итак, постановка задачи.
Устройство - интеллектуальный датчик, работает в сети 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