====== Работа с интерфейсом по ГОСТ Р 52070-2003 (МКИО) в 1986ВЕ1Т ====== //Имеется готовое устройство с применением микроконтроллера 1986ВЕ1Т, в котором задействован интерфейс ГОСТ Р 52070-2003. Программа изначально писалась под **ревизию 3**. Проблем с работоспособностью интерфейса ГОСТ Р 52070-2003 не наблюдалось. При переходе на **ревизию 6** возникла проблема с тем же кодом: Интерфейс не реагирует на посылки, включая посылку групповой команды. Физически данные не выводах микроконтроллера присутствуют.// **В 6 ревизии МК изменилось функциональное назначение бит 20-21 регистра CONTROL!** Особенно критичен 21 бит, так как в 3 ревизии он имел функцию автоподстройки середины битовых интервалов, а в 6 ревизии содержит старший разряд делителя, на который необходимо поделить частоту MAN_CLK, чтобы получить 1 МГц. Таким образом, если программа для 3 ревизии содержала установку бита 21 в "1", то в 6 ревизии данная установка приведёт к изменению делителя частоты MAN_CLK, что в свою очередь приведёт к неработоспособности проекта. ---- =====Особенности применения===== * Для стабильной работы блока МКИО необходимо на него подавать частоту от 24 МГц и выше, кратную 8 МГц. * Не рекомендуется использовать большие значения делителей DIV до 1МГц, например 80МГц/**80**. Лучше делить в ETH_CLOCK.MAN_BRG. * В режиме StandAlone stick биты не доступны! =====Выдержки с форума===== Про флаги - [[http://forum.milandr.ru/viewtopic.php?f=34&t=535&start=30|Link]] ----------------------------------------------------------------------------------- [[http://forum.milandr.ru/viewtopic.php?f=34&t=535&p=7108&hilit=StatusWord1#p7108|Link]] Согласно требований ГОСТ бит "ошибка в сообщении" устанавливается при несоответствии требованиям пп 5.1.1, 5.1.2, 5.3.3, 5.3.5 и ни в каком другом случае. Эти несоответствия выявляет контроллер МКДП на аппаратном уровне формируя флаг ERROR. Задача программиста вовремя отреагировать на прерывания, чтобы корректно установить (при ERROR) или сбросить (при RFLAGN) бит "ошибка в сообщении". Если Вы будете формировать этот бит по другим признакам, то Ваше ОУ не будет соответствовать ГОСТ. Если в регистре "Status" устанавливается бит "ERROR", то в текущем сеансе ОС вообще не должно передаваться. Если в следующем сеансе поступает команда "Передать ОС", должно передаться ОС с установленным битом "ошибка в сообщении". Если в следующем сеансе поступает другое достоверное КС, должно передаться ОС с сброшенным битом "ошибка в сообщении". ----------------------------------------------------------------------------------- [[http://forum.milandr.ru/viewtopic.php?f=34&t=535&hilit=StatusWord1&start=210|Link]] В формате 1 бит IDLE устанавливается по прошествии времени t2 после ответного слова. VALMESS устанавливается после ответного слова и сбрасывается по прошествии времени t2. Одновременно флаги IDLE и VALMESS не устанавливаются. ----------------------------------------------------------------------------------- [[http://forum.milandr.ru/viewtopic.php?f=34&t=535&p=14540&hilit=%D0%B0%D0%B1%D0%BE%D0%BD%D0%B5%D0%BD%D1%82+%D0%B7%D0%B0%D0%BD%D1%8F%D1%82#p14540|Link]] Проблема следующая. Как известно (см. ГОСТ 52070 п. 4.4.4.7) при транзакциях формата 2, если установлен бит "Абонент занят", то после передачи ОС, СД не передаются. Т.е. транзакции формата 2 имеют вид: | КС | | ОС | Т.о. транзакция заканчивается передачей ОС в котором установлен бит "Абонент занят". При этом прерывание VALMESS не произойдет. Это нормальная штатная работа. Сбой в работе контроллера 1553 возникнет, если сброс бита "Абонент занят" произойдет в момент передачи ОС. Тогда бит "Абонент занят" в этом ОС будет установлен, но следом за ним будут переданы и СД. Т.е. транзакция формата 2 будет иметь обычный свой вид: | КС | | ОС | CД | СД | .......| СД | несмотря на то что в ОС установлен бит "Абонент занят". В связи с изложенным встает вопрос: «Как писать код для КШ ?» Считать транзакцию формата 2 успешной если после ОС есть СД, несмотря на то что установлен бит «Абонент занят»? В текущей ревизии 1986ВЕ1Т данный случай возможен. Но в этой ситуации разумнее исправить работу ОУ. Необходимо убедиться до транзакции (контроллер 1553 оконечного устройства в состоянии IDLE), что все слова данных готовы, а также устанавливать признак "Абонент занят" во время перезаписи слов данных в буфер (если это требуется). В принципе изменение признаков в ОС допустимо либо в состоянии IDLE, либо сразу после приема КС (прерывание по событию приема КС, флаг RFLAGN). ----------------------------------------------------------------------------------- [[http://forum.milandr.ru/viewtopic.php?f=34&t=535&p=20497&hilit=24%D0%9C%D0%93%D1%86#p20497|Link]] * У Вас МК 4- й ревизии. В этой ревизии длительность 500 нс и 1500 нс импульсов передатчика отличается от номинальной на +- 1 такт синхронизации контроллера МКПД. Поэтому уменьшение частоты тактирования до 16 Мгц приведет к искажению длительностей на +- 62,5 нс, что не соответствует ГОСТ(д.б. не более 25 нс). * С другой стороны при увеличении частоты ухудшается помехоустойчивость приемника. Миландр требует тактировать МКПД частотой не ниже 24 Мгц. * При повышении стабильности работы PLL желательно убедиться в эффективности. Например замерить джиттер PLL. Это можно сделать, если поделенную на 4 частоту ядра вывести на выход таймера в режиме 50% ШИМ. У на были похожие проблемы с джиттером (при MANCLK 32МГц). Почистили питание, джиттер уменьшился и сбои по обмену прекратились. * Для надежности обмена лучше тактировать МК внешним генератором от 24МГц и выше. * Самое эффективное поменять МК на 6-ю ревизию + п.4. В новой ревизии все(или почти все) замечания к МКПД устранены.