Миландр
http://forum.milandr.ru/

Манчестер на 1986ВЕ1
http://forum.milandr.ru/viewtopic.php?f=34&t=535
Страница 39 из 40

Автор:  milander [ 2018-июл-20 11:55 ]
Заголовок сообщения:  Re: Манчестер на 1986ВЕ1

Vasiliy писал(а):
В спецификации же написано "ModeData - содержит принятое или передаваемое слово данных в команде управления". И на структурных рисунках показано что регистр двупортовый. По записи и чтению данные разные.

Разобрался. Дело было в железе, нужно было включить инверсию сигнала

Автор:  PArus52 [ 2019-фев-27 20:45 ]
Заголовок сообщения:  Re: Манчестер на 1986ВЕ1

Здравствуйте! Нужна помощь! Если уже обсуждалось, дайте, пожалуйста, ссылку!
На 4-ой ревизии процессора наблюдается ситуация, что обработчик прерывания:
Код:
void MIL_STD_1553B1_Handler(void)
{
  STATUS_WORD = MIL_STD_15531->STATUS;
  COMMAND_WORD = MIL_STD_15531->CommandWord1;
  if((STATUS_WORD&ERR) == ERR)      
  {
    printf ("Error");
    MIL_STD_15531->CONTROL |= 0x1;//сброс ошибки путём сброса контроллера
    MIL_STD_15531->CONTROL &= 0xFFFFFFFE;//разрешение работы контроллера
  }
  else
  {
     if((STATUS_WORD&VALMESS)==VALMESS) printf ("Valmess");
  }
  MIL_STD_15531->CONTROL |= RERR;//ошибки могут быть сброшены только вручную   
}

при начальной настройке контроллера ГОСТ 52070 следующим образом
Код:
MIL_STD_15531->CONTROL = 0;     // MIL-STD-1553 work mode
MIL_STD_15531->CONTROL = 0x0038|(9 << 14)|(MIL1553_ADDR << 6);
MIL_STD_15531->INTEN       = 0x0000000E;// разрешены VALMESSIE, RFLAGNIE и ERRIE

при получении верного командного слова на выдачу информации в КШ и ошибочно идущего непосредственно за ним КС или СД или хотябы их синхросигналов не выводит ничего в СОМ-порт, не заходит больше в прерывание и не выдаёт больше ОС и СД.
КС и ошибочный синхросигнал генерируются с помощью платы ф.Элкус в режиме тестера. Задаётся посылка в ввиде "K[1C20]U" или "K[1C20]K" или "K[1C20]LL0HH", где К - синхросигнал КС, [1C20] - КС=0x1C20 без синхросигнала, U-синхросигнал СД, L-низкий уровень, H-высокий уровень, 0- бит 0(переход из низкого в высокий уровень)
При выводе значений регистров STATUS и ERROR через некоторое время выдаются значения 0x29 (активность по резервному каналу, ошибка и бездействие) и 0x1F (все возможные ошибки?)
Выглядит так, что в 4-ревизии в нашем эксперименте при установленном бите RFLAGN не генерируется прерывание по установке флага ERROR, наш обработчик не сбрасывает флаг ошибки и прерывания больше не приходят, контроллер не реагирует на КС.
Таже ситуация наблюдается при попытке отправить КС на приём в ОУ нескольких СД без СД.
На 3-ей ревизии таких сбоев не замечено.
Хотелось бы понять причины отказа контроллера МКИО в нашем случае и, если кому известны, другие варианты вызвать полное отсутствие обмена, кроме как сбить настройки!

Автор:  prostoRoman [ 2019-фев-28 13:48 ]
Заголовок сообщения:  Re: Манчестер на 1986ВЕ1

PArus52 писал(а):
...
Хотелось бы понять причины отказа контроллера МКИО в нашем случае и, если кому известны, другие варианты вызвать полное отсутствие обмена, кроме как сбить настройки!

Наблюдал аналогичное - 4-я ревизия, при формировании некорректной активности на шине контроллер ОУ зависал (нет никаких прерываний от него), кажется, до сброса через MR. Причины неизвестны.

Автор:  Dots [ 2019-апр-11 11:51 ]
Заголовок сообщения:  Re: Манчестер на 1986ВЕ1

Добрый день!
Посоветуйте как в режиме монитора организовать передачу принятых данных наружу для удобного анализа?
Пока думаю так. Разрешить прерывания RFLAGN, ERR, VALMESS.
По RFLAGN сохранять КС, СД КУ и ОС в кольце. По VALMESS считывать СД и давать команду на передачу буфера наружу.
По ERR передавать содержимое регистра ERROR и также самого кольца.

Другой вариант. Передачу принятых слов делать по прерыванию IDLE, ERR. Только не до конца понятно, когда именно
срабатывает IDLE. По завершению транзакции какого-либо формата сообщения или еще в паузах t1, t2?

Была еще идея сделать передачу по таймеру, учитывая время непрерывной передачи на шине (660 мкс).
Но, кажется, это самый неудобный вариант в плане дальнейшего анализа на приеме...

Буду признателен любым предложениям и замечаниям.

Автор:  prostoRoman [ 2019-апр-11 12:40 ]
Заголовок сообщения:  Re: Манчестер на 1986ВЕ1

Dots писал(а):
Посоветуйте как в режиме монитора организовать передачу принятых данных наружу для удобного анализа?

Это неизвестно. Нет исходных данных. Может по Ethernet, может по UART, может по параллельной шине...
Для начала нужно научиться мониторить шину.
Dots писал(а):
.... Передачу принятых слов делать по прерыванию IDLE, ERR. Только не до конца понятно, когда именносрабатывает IDLE.

Для монитора этого кажется достаточно, если не нужно фиксировать времянку каким-либо образом.
Времянку флагов МКПД уже обсуждали на форуме, в т.ч. совсем недавно, гуглите.
Реализацию для ОУ также можно поискать на форуме у vasili, её легко можно применить для МТ.
Если кратко, любая транзакция будет заканчиваться прерыванием IDLE, но некорректная транзакция сперва устанавливает ERR, а корректная - VALMESS.

Автор:  Dots [ 2019-апр-11 13:17 ]
Заголовок сообщения:  Re: Манчестер на 1986ВЕ1

Спасибо за пояснения!
Необходимую информацию нашел. В качестве внешнего интерфейса планируется использовать Ethernet.

Автор:  Dots [ 2019-апр-15 15:55 ]
Заголовок сообщения:  Re: Манчестер на 1986ВЕ1

Уважаемые разработчики!
Скажите пожалуйста, в сообщениях формата 3 и 8 можно ли по первому срабатыванию RFLAGN
считывать содержимое CommandWord1 и CommandWord2?
Также хотелось бы уточнить, генерируются ли прерывания по RFLAGN при приеме СД в режиме монитора? Если я правильно понял из спецификации, то не должны, только для СД команд управления.

Автор:  Artem1 [ 2019-апр-18 10:14 ]
Заголовок сообщения:  Re: Манчестер на 1986ВЕ1

Dots писал(а):
Уважаемые разработчики!
Скажите пожалуйста, в сообщениях формата 3 и 8 можно ли по первому срабатыванию RFLAGN
считывать содержимое CommandWord1 и CommandWord2?
Также хотелось бы уточнить, генерируются ли прерывания по RFLAGN при приеме СД в режиме монитора? Если я правильно понял из спецификации, то не должны, только для СД команд управления.

Здравствуйте!
Да, можно. В форматах, где предполагается транзакция ОУ-ОУ командное слово, формируемое КШ, для принимающего ОУ задается в CommandWord1, а для передающего ОУ в CommandWord2. Соответственно, принимающий ОУ должен считывать содержимое из CommandWord1, передающий ОУ из CommandWord2.
Вы правильно поняли - не должны. События, для генерации прерываний по RFLAGN следующие:
В режиме КШ если получено достоверное ответное слово (ОС).
В режиме ОУ и Монитор получено достоверное командное слово (КС), ответное слово (ОС), или слово данных (СД) в команде управления.

Автор:  vasili [ 2019-апр-18 10:34 ]
Заголовок сообщения:  Re: Манчестер на 1986ВЕ1

Dots писал(а):
Уважаемые разработчики!
Скажите пожалуйста, в сообщениях формата 3 и 8 можно ли по первому срабатыванию RFLAGN
считывать содержимое CommandWord1 и CommandWord2?...

Для форматов 3 и 8:
Для принимающего ОУ по первому срабатыванию RFLAGN достоверно только CommandWord1.
CommandWord2 будет достоверно по второму срабатыванию RFLAGN.

Автор:  paskal [ 2019-июл-03 22:03 ]
Заголовок сообщения:  Очистка буфера принимаемых данных

А как сбросить буфер принимаемых данных?
При старте пытаюсь обнулить записью 1 в MR регистра CONTROL, но в буфере по прежнему мусор. Это мне сильно мешает.

Автор:  Artem1 [ 2019-июл-05 12:23 ]
Заголовок сообщения:  Re: Очистка буфера принимаемых данных

paskal писал(а):
А как сбросить буфер принимаемых данных?
При старте пытаюсь обнулить записью 1 в MR регистра CONTROL, но в буфере по прежнему мусор. Это мне сильно мешает.

Здравствуйте!
Буфер очистить нельзя. Считываете из него то количество слов данных (определяется КС), которое было принято.

Автор:  prostoRoman [ 2019-июл-06 11:37 ]
Заголовок сообщения:  Re: Очистка буфера принимаемых данных

paskal писал(а):
А как сбросить буфер принимаемых данных?
При старте пытаюсь обнулить записью 1 в MR регистра CONTROL, но в буфере по прежнему мусор. Это мне сильно мешает.

Есть подозрение, что вы ступили на скользкую дорожку. C МКИО ПО должно работать как с событийно-определяемым каналом (была ли транзакция и чем закончилась), а не data-definition behaviour.

Автор:  paskal [ 2019-июл-12 21:57 ]
Заголовок сообщения:  Re: Очистка буфера принимаемых данных

prostoRoman писал(а):
C МКИО ПО должно работать как с событийно-определяемым каналом (была ли транзакция и чем закончилась), а не data-definition behaviour.

Не всегда. Всё зависит от реализации. Поведенческий тип работы мне фактически задали в ТЗ. У меня устройство простой переходник от MILSTD к RS485. Режим ОУ и без резервирования. Идёт банальное перебрасывание данных. С событиями при заданном протоколе я ничего не могу делать. Протокол менять нельзя.

А невозможность очистки мусора из канала всё таки считаю недостаток.

Автор:  paskal [ 2019-июл-12 22:17 ]
Заголовок сообщения:  Re: Манчестер на 1986ВЕ1

Ещё один недостаток обнаружился. Вот читаю я данные по прерыванию. Чтобы данные поменялись надо послать две посылки. Т.е. данные считываются не от последней посылки, а от предыдущей. Но если вставить достаточно длинную паузу, данные читаются сразу. Получается что прерывание возникает не после прихода данных, а раньше.
В эррате такой информации не нашел. Микроконтроллер 2018 года.

Автор:  Professor Chaos [ 2019-июл-13 10:27 ]
Заголовок сообщения:  Re: Манчестер на 1986ВЕ1

По какому событию прерывание?
Данные гарантированно обновятся при взведении флагов IDLE и VALMESS. Раньше читать их нет смысла.

Страница 39 из 40 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/