Чтение цифрового сигнала с помощью arduino (стык с2)

max-vendom
Offline
Зарегистрирован: 21.03.2018

Доброго времени суток форумчане !

Нужна помощь... Имеется старая советская аппаратура передачи данных, к которой эвм подключается по протоколу "стык с2". Этот протокол аналог rs-232c.  Можно было бы прочитать это все через com-порт, но тут незадача...  Размер слова - неизвестен, старт\стоп биты не известны итд.....  с помощью max3232 преобразовал все это в TTL уровни.  Скорость должна быть 2400 якобы......  Пробовал с помощью мониторов порта читать данные, получает бред. Вместе с данным сигналом еще и идет синхроимпульс ( на одно логическое состояние-пол синхроимпульса).  Одним проводом данные - другим синхро. 

Пробороздив все просторы интернета так и не нашел ответа на очень простой вопрос - как прочитать последовательность двоичного кода с помощью ардуины и передать ее через последовательный порт на компьютер?  

Осциллограммы прилагаются :

Синхроимпульс

Сигнал стыка с2:

Сигнал TTL:

Как я понял, длинна импульса - 0.5 мс\деление , частота = 2кГц

амплитуда 5в\деление

max-vendom
Offline
Зарегистрирован: 21.03.2018

.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

1. Посмотрите режимы работы UART Ардуино, которые с синхросигналом. На самом деле к каждому ком-порту у дунек есть ещё ножка Xck .. только вот у Мег она не выведена и подключаться придется проводками непосредственно к камню, типа такого:

2. Можно решить вопрос классическим "ногодрыгом" (им почти всё можно решить). Подключаете синхросигнал к ноге с прерыванием и по приходу фронта/спада (смотрите что рабочее в С2 - не помню уже) читаете состояние пина, к которому подключаете провод с данными. Собственно на этом должно быть всё.

max-vendom
Offline
Зарегистрирован: 21.03.2018

.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

saleae купите и смотрите

max-vendom
Offline
Зарегистрирован: 21.03.2018

.

Arhat109-2
Offline
Зарегистрирован: 24.09.2015

Для 2400 бод - конечно хватит и с запасом, если конечно не наворотить кодом чего.

По вашему рисунку получается что 114 сигнал - синхро по фронту, а 113 по спаду. Смотря какой у вас пользуется. Цепь 103 - получается линия данных.

Вручную там все должно быть просто: разрешаете прерывание по синхросигналу, им можно управлять по фронту или спаду и в его обработчике читаете 0 или 1 с пина данных, считаете ручками какой пришел бит и вдвигаете его в байтовый результат. По приему 8 бит выставляете флаг готовности результата или копируете его в итоговую переменную или буферный массив и продолжаете принимать дальше. Обработчик прерывания должен быть прост как палка, вся логика - в основном коде.

Если нужны большие скорости, то тогда лучше смотреть в сторону Xck и синхронизированного UART дунек. Там по идее можно получить до мегагерца.

max-vendom
Offline
Зарегистрирован: 21.03.2018

.

max-vendom
Offline
Зарегистрирован: 21.03.2018

.

sadman41
Offline
Зарегистрирован: 19.10.2016

Откуда прерывание управление взяло, туда и положит. Это же не сантехник из ЖЭКа.