Чтение цифрового сигнала с помощью arduino (стык с2)
- Войдите на сайт для отправки комментариев
Доброго времени суток форумчане !
Нужна помощь... Имеется старая советская аппаратура передачи данных, к которой эвм подключается по протоколу "стык с2". Этот протокол аналог rs-232c. Можно было бы прочитать это все через com-порт, но тут незадача... Размер слова - неизвестен, старт\стоп биты не известны итд..... с помощью max3232 преобразовал все это в TTL уровни. Скорость должна быть 2400 якобы...... Пробовал с помощью мониторов порта читать данные, получает бред. Вместе с данным сигналом еще и идет синхроимпульс ( на одно логическое состояние-пол синхроимпульса). Одним проводом данные - другим синхро.
Пробороздив все просторы интернета так и не нашел ответа на очень простой вопрос - как прочитать последовательность двоичного кода с помощью ардуины и передать ее через последовательный порт на компьютер?
Осциллограммы прилагаются :
Синхроимпульс
Сигнал стыка с2:
Сигнал TTL:
Как я понял, длинна импульса - 0.5 мс\деление , частота = 2кГц
амплитуда 5в\деление
.
1. Посмотрите режимы работы UART Ардуино, которые с синхросигналом. На самом деле к каждому ком-порту у дунек есть ещё ножка Xck .. только вот у Мег она не выведена и подключаться придется проводками непосредственно к камню, типа такого:
2. Можно решить вопрос классическим "ногодрыгом" (им почти всё можно решить). Подключаете синхросигнал к ноге с прерыванием и по приходу фронта/спада (смотрите что рабочее в С2 - не помню уже) читаете состояние пина, к которому подключаете провод с данными. Собственно на этом должно быть всё.
.
saleae купите и смотрите
.
Для 2400 бод - конечно хватит и с запасом, если конечно не наворотить кодом чего.
По вашему рисунку получается что 114 сигнал - синхро по фронту, а 113 по спаду. Смотря какой у вас пользуется. Цепь 103 - получается линия данных.
Вручную там все должно быть просто: разрешаете прерывание по синхросигналу, им можно управлять по фронту или спаду и в его обработчике читаете 0 или 1 с пина данных, считаете ручками какой пришел бит и вдвигаете его в байтовый результат. По приему 8 бит выставляете флаг готовности результата или копируете его в итоговую переменную или буферный массив и продолжаете принимать дальше. Обработчик прерывания должен быть прост как палка, вся логика - в основном коде.
Если нужны большие скорости, то тогда лучше смотреть в сторону Xck и синхронизированного UART дунек. Там по идее можно получить до мегагерца.
.
.
Откуда прерывание управление взяло, туда и положит. Это же не сантехник из ЖЭКа.