Доброго времени суток, уважаемое сообщество форума.
Столкнулся с "затыком", который побороть самому не получается.
Не могу наладить связь между монетоприемником "NRI Currenza C2 Green MDB" и платой с МК ATxmega128A1 протоколу MDB.По советам и рекомендациям пользователя "aleksandr-zh" (за что ему огромное спасибо), сделал 4 варианта опторазвязок для MDB (два варианта для МК с 5 вольтовыми сигналами и два варианта для МК с 3.3 вольтовыми сигналами). Все они работают, я их по двадцать раз перепроверял, гонял туда сюда меандры. Использую вариант, как на схеме во вложении [04_type2_3.3V.pdf].
9-ти битный USART сделал из USART-interrupt драйвера из аппнота "AVR1307:Using the XMEGA USART" путем добавления всего необходимого, для записи TXD8 и чтения RXB8. Там тоже все работает, двадцать раз перепроверял, заставляя две платы слать друг другу 9 битные фреймы и сравнивать их потом.
Согласно спецификации протокола MDB (использовал версию 4.2 - на всякий случай во вложении [MDB_version_4-2_(february_2011).pdf]), первое, что должен сделать VMC (Vending Machine Controller) при включении питания - это отправить команду RESET на периферийное устройство (монетоприемник). А монетоприемник должен ответить на это подтверждением (ACK). Но в моем случае в качестве VMC выступает MK XMEGA. Выглядит, так:
1) VMC отправляет - 0x108 / 1 00001 000 (команда RESET по адресу монетоприемника)
2) VMC отправляет - 0x008 / 0 00001 000 (чек сумма)
3) Монетоприемник отвечает - 0x100 / 1 00000 000 (команда подтверждения ACK от монетоприемника)
Т.е. как во многих источниках написано, этими ресетами, VMC не просто сбрасывает всякие периферийные устройства, а проверяет за счет их ответа подтверждения ACK - есть ли они на линии, или их там нет (может вырвали и убежали...).
Ну так вот проблема в том, что мне монетоприемник ничего не отвечает на RESET, по вышеописанному алгоритму.==== Проверка опторазвязок ===
Чтобы исключить проблемы на стороне опторазвязки, еще раз погонял через оптроны меандры в обе стороны, причем как 3.3 вольтовые с платы с МК XMEGA, так и 5 вольтовые с "ардуино мега" - все работает. Проверил так же с помощью платы с XMEGA, обе стороны, как показано на рисунке во вложении [Optrons_testing.jpg]. Вроде бы все работает, и проблема не в опторазвязке.
==== Проверка линий RX и TX на монетоприемнике ====
Просто запитал монетник, и решил проверить, что у него твориться на линии RX и TX в режиме бездействия (idle mode). И меня смутило следующее, что я увидел:
- На линии TX - меандр от нуля до 1 вольта;
- На линии RX - какая-то пила от нуля до 24 вольта;
Скриншот двух линий во вложении [TxD_and_RxD_on_coin_accepror.jpg];
ВОПРОС 1: Вроде бы как это вовсе не нормально? Разве на линии RX не должно быть подтянуто до 5 вольт (ЕДИНИЦЫ), и характеризовать начало передачи, когда транзистор оптрона утаскивает ее в НОЛЬ? И разве на линии TX не должен быть при простое (молчании) НОЛЬ, а ЕДИНИЦА (5 вольт) характеризует начало передачи? Вроде бы как из спецификации протокола и схемы опторазвязки - это просматривается очевидно?ВОПРОС 2: Может ли быть что-то не то с монетником? Он моргает диодами сериями по 3 моргания в серии (скриншот во вложении [Coin_accepror_leds.jpg]). Сначала 5 серий красного диода, потом 1 серия желтого.Перечитав от корки до корки "User Manual" и "Installation Guide" на монетник, все, что я нашел там про индикацию диодов:
- Если горит красный, то надо вызывать сервисного инженера.
- Если горит желтый, то пользователь сам в состоянии справиться с проблемами.
- Если горит зеленый, то у вам по жизни все нормально и проблем вроде бы как и нету вовсе.
PS. Вроде бы все понятно (в теории), но без помощи я не могу сдвинуться с места. Буду благодарен за любые директивы, в каком направлении копать и отлаживать.
Эскизы прикрепленных изображений