Содержание

Работа с интерфейсом по ГОСТ Р 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, что в свою очередь приведёт к неработоспособности проекта.

Особенности применения

Выдержки с форума

Про флаги - Link


Link

Согласно требований ГОСТ бит "ошибка в сообщении" устанавливается при несоответствии требованиям пп 5.1.1, 5.1.2, 5.3.3, 5.3.5 и ни в каком другом случае. Эти несоответствия выявляет контроллер МКДП на аппаратном уровне формируя флаг ERROR. Задача программиста вовремя отреагировать на прерывания, чтобы корректно установить (при ERROR) или сбросить (при RFLAGN) бит "ошибка в сообщении". Если Вы будете формировать этот бит по другим признакам, то Ваше ОУ не будет соответствовать ГОСТ.

Если в регистре "Status" устанавливается бит "ERROR", то в текущем сеансе ОС вообще не должно передаваться. Если в следующем сеансе поступает команда "Передать ОС", должно передаться ОС с установленным битом "ошибка в сообщении". Если в следующем сеансе поступает другое достоверное КС, должно передаться ОС с сброшенным битом "ошибка в сообщении".


Link

В формате 1 бит IDLE устанавливается по прошествии времени t2 после ответного слова. VALMESS устанавливается после ответного слова и сбрасывается по прошествии времени t2. Одновременно флаги IDLE и VALMESS не устанавливаются.


Link

Проблема следующая. Как известно (см. ГОСТ 52070 п. 4.4.4.7) при транзакциях формата 2, если установлен бит "Абонент занят", то после передачи ОС, СД не передаются. Т.е. транзакции формата 2 имеют вид:

КС ОС

Т.о. транзакция заканчивается передачей ОС в котором установлен бит "Абонент занят". При этом прерывание VALMESS не произойдет. Это нормальная штатная работа. Сбой в работе контроллера 1553 возникнет, если сброс бита "Абонент занят" произойдет в момент передачи ОС. Тогда бит "Абонент занят" в этом ОС будет установлен, но следом за ним будут переданы и СД. Т.е. транзакция формата 2 будет иметь обычный свой вид:

КС ОС СД ……. СД

несмотря на то что в ОС установлен бит "Абонент занят".

В связи с изложенным встает вопрос: «Как писать код для КШ ?» Считать транзакцию формата 2 успешной если после ОС есть СД, несмотря на то что установлен бит «Абонент занят»?

В текущей ревизии 1986ВЕ1Т данный случай возможен. Но в этой ситуации разумнее исправить работу ОУ. Необходимо убедиться до транзакции (контроллер 1553 оконечного устройства в состоянии IDLE), что все слова данных готовы, а также устанавливать признак "Абонент занят" во время перезаписи слов данных в буфер (если это требуется). В принципе изменение признаков в ОС допустимо либо в состоянии IDLE, либо сразу после приема КС (прерывание по событию приема КС, флаг RFLAGN).


Link