RS232 и JDM-программатор.

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Ср дек 05, 2012 18:12:18

Сообщение WolfenShtein »

Доброго времени суток, друзья! Собственно, перейду сразу к делу. Меня давно жгёт вопрос: как работает JDM-программатор? Если конкретнее - как через него идёт обмен данными между RS232 и лапками контроллера DATA, CLOCK, Vpp? Вот у меня такая вот схемка программатора EXTRA PIC, которую, наверно, большинство знают. Линия DATA завязана через MAX232 на лапку DTR, линия CLOCK - на DSR+RTS, напряжение программирования берётся с TX, CTS идёт обратно к терминалу. Вопрос: в каком порядке передаются сигналы с RS232? Например: нам нужно передать бит "1". Как при этом формируются по сути служебные (кроме TX) сигналы COM-порта?
Про эти служебные лапки я знаю следующее:
DTR - Data Terminal Ready - выход, который говорит о том, что у терминала есть данные для передачи.
DSR - Data Set Ready - вход, который говорит, что устройство на другом конце линии готово передавать данные.
RTS - Request To Send - выход запроса на передачу.
CTS - Clear To Send - Разрешение Передатчику передавать данные.
TX - собственно передача данных.
При нуль-модемном соединении обмен данными, как я понимаю, такой: передатчик, когда хочет что-то передать, выставляет по DTR сигнал о наличии данных на передачу, приёмник посылает ему на вход DSR сигнал о своей готовности к обмену. Передаттчик тогда уже конкретно спрашивает, можно ли передать пакет данных установкой запроса по RTS, а приёмник ему отвечает, что да, давай - установкой CTS. Без сигнала на входе CTS передатчик, как было где-то указано, не может передавать данные. Поэтому, как я понял, в заглушке для порта DTR соединяется с DSR, а RTS - с CTS. Ну и TX с RX соответственно.
В JDM, судя по всему, этот принцип используется как-то по своему. Пробежав мутным взглядом по схемке я рискнул предположить следующее. Передача бита начинается с установки DTR, что формирует фронт импульса лог.1 на линии DATA. Одновременно (или чуть позже - вопрос) устанавливается линия RTS, сигнал с которой зачем-то идёт на DSR. Этот сигнал формирует фронт сигнала CLOCK. Практика подсказывает, что он должен формироваться позднее сигнала DATA и заканчиваться раньше. А также сигнал с DTR поступает обратно в порт на вход CTS. Исходя из того, что я нашёл в нете по протоколу RS232, только после этого на лапке TX сформируется напряжение, которое здесь подаётся на вход программирования. Вот как я понял эту схэму. Но такое чувство, что я ошибаюсь. Подскажите, пожалуйста, кто эту тему знает, как это всё работает? Четвёртую ночь уже заснуть толком не могу Я уже не спрашиваю, на кой там инверторы стоят после MAX232 - у неё они внутри должны быть по даташиту.
Вложения
EXTRA PIC.rar
(220.88 КБ) 225 скачиваний
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 423
Зарегистрирован: Сб фев 21, 2009 16:11:32
Откуда: Харьков

Сообщение khomych »

точно не уверен, но возможно порт работает в Bit-bang режиме. тоесть прога просто дергает ножками порта когда ей вздумается, а не придерживается стандарта RS-232 по обмену информацией
Контактная информация:
Реклама
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Ср дек 05, 2012 18:12:18

Сообщение WolfenShtein »

Хм. Дёргать служебными ножками из-под программы? Я считал, что эта функция доступна только контроллеру порта, а какая-нибудь сторонняя программа только загружает данные в буфер порта при передаче и берёт их из него при приёме. Если это не так - скажите, кто знает.
Мучитель микросхем
Аватара пользователя
Сообщения: 423
Зарегистрирован: Сб фев 21, 2009 16:11:32
Откуда: Харьков

Сообщение khomych »

дергат ьножками на порту 100% можно. в системах ниже NT это было сосвем просто. просто записать число в адрес порта и соответствующие ножки выставлялись соответственно установленым битам в числе, так же происходило и чтение с порта.
в системах выше NT такой возможности нет. система препятствует прямому обращению к порту, но все равно ухищрения есть. точнее не скажу, но когдато находил библиотеки DLL с помощью которых такое было возможным
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Мучитель микросхем
Сообщения: 447
Зарегистрирован: Ср сен 26, 2012 14:12:47
Откуда: Київ

Сообщение Cheba »

WolfenShtein писал(а):Хм. Дёргать служебными ножками из-под программы?
Служебными (статусы) ножками как раз можно дергать и из программы. Статусы DTR/DSR/CTS доступны програмно. С ними проблема другая - нет никакой возможности выдерживать при таком режиме тайминги.
Потому что сказал системе обнулить статус DTR, а оно пока переползёт по всем внутренним структурам операционки, потом когда-то получит управление драйвер порта, проанализирует, можно или нельзя это сделать, имеет ли программа на это нужные права, и т.д. и т.п. проходит фиг его знает сколько времени. Не то, чтобы слишком много ( хотя может пройти и много :) ) а именно фиг его знает сколько.
Реклама
Ответить

Вернуться в «Интеграция с ПК»