Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2018-окт-23 00:36

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
СообщениеДобавлено: 2015-июн-28 14:10 
Не в сети

Зарегистрирован: 2015-июн-28 13:26
Сообщения: 1
Здравствуйте! Нужно реализовать обмен по ГОСТ Р 52070-2003 на МК 1986ВЕ3Т в режиме ОУ. Используется второй контроллер ГОСТ Р 52070-2003. Вот код.
Код:
void MkioInit()
{
MDR_RST_CLK->PER_CLOCK |= (1 << 10) | (1 << 21) | (1 << 29); //разрешаем тактирование портов А и F и контроллера MIL_STD_15532
MDR_RST_CLK->ETH_CLOCK |= 1 << 25; //разрешаем MAN_CLK
MDR_RST_CLK->ETH_CLOCK &= ~(0xff << 8); //делитель для MAN_CLK = 1

PORTA->OE &= ~((1 << 8) | (1 << 9)); //ноги 8 и 9 на вход
PORTA->FUNC |= (3 << 16) | (3 << 18); //переопределенная функция
PORTA->ANALOG |= (1 << 8) | (1 << 9);  //цифровые
PORTA->PWR |= (3 << 16) | (3 << 18); //максимально быстрый фронт

PORTF->OE &= ~((1 << 6) | (1 << 5)); //ноги 5,6 на вход
PORTF->OE |= 0x3f << 7; //ноги 7, 8, 9, 10, 11, 12 на выход
PORTF->FUNC |= (1 << 10) | (1 << 12) | (1 << 14) | (1 << 16) | (1 << 18) | (1 << 20) | (1 << 22) | (1 << 24); //основная функция
PORTF->ANALOG |= (1 << 5) | (1 << 6) | (1 << 7) | (1 << 8) | (1 << 9) | (1 << 10) | (1 << 11) | (1 << 12); //цифровые
PORTF->PWR |= (3 << 10) | (3 << 12) | (3 << 14) | (3 << 16) | (3 << 18) | (3 << 20) | (3 << 22) | (3 << 24); //максимально быстрый фронт

MDR_MIL_STD_15532->CONTROL = 1; //сбрасываем контроллер по ГОСТ Р 52070-2003
MDR_MIL_STD_15532->CONTROL = (2 << 2) //ОУ
| (3 << 4) //разблокировать основной и резервный передатчики
| (80 << 11); //делитель, чтобы получить 1 МГц
MDR_MIL_STD_15532->StatusWord1 = 0; //ответное слово
__enable_irq();
MDR_MIL_STD_15532->INTEN = 2; //прерывание только при приеме достоверного слова
NVIC_EnableIRQ(MIL_STD_15532_IRQn); //разрешаем прерывания
}


Обработчик прерывания не срабатывает. Данные МК получает от компа. На компе установлена плата TX1-PC. Сам МК тактируется от кварца на 10 МГц. Через блок PLL разгоняю его до 80 МГц. Параллельно с МКИО работает CAN. Данные по CAN контроллер посылает. В чем может быть ошибка?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2015-авг-06 10:15 
Не в сети

Зарегистрирован: 2010-июл-08 08:50
Сообщения: 734
Откуда: АО "ПКК Миландр"
во-первых, в регистре MDR_MIL_STD_15532->CONTROL не задан адрес оконечного устройства (поле RTA4-RTA0 разряды 10..6).
Также в ответном слове должен быть установлен адрес ОУ (естественно совпадающий с адресом в регистре CONTROL).
Например, если адрес ОУ - 1, то StatusWord1 должен принимать значение 0x0800 (если не установлены различные биты "Абонент занят" и т.п.).

Для более полной картины работы блока предлагаю прочитать тему "Манчестер на 1986ВЕ1" здесь (там обсуждается множество особенностей работы и проблем), так как контроллеры MIL в 1986ВЕ1Т и 1986ВЕ3Т практически одинаковые.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB