/*************************************************************************************************************
  Copyright (C) 2016-2022 JSC "ICC Milandr" 

*************************************************************************************************************/

/*
 *
 *  Файл:      readme.txt
 *  Описание:  Описание примера MIL_STD_Format_2
 *
 *  История:
 *             05.10.22  - cоздан
 *
 */


/* Описание примера ----------------------------------------------------------------------------------------*/

В данном примере приведена передача данных от ОУ к КШ (формат 2) в рамках одного процессора: MILSTD1 передает 
данные в MILSTD0.  Частота CCLK = 192 МГц, чтобы частота SOC шины (192 / 2 = 96) была кратна 8 - требование 
контроллера MIL_STD. 
Опишем действия КШ и ОУ для формата 2 по отдельности.

Пример работы КШ
Формат 2, КШ – приемник. Для работы необходимо:
1. Настроить GPIO для работы выбранного MILSTD
2. Проинициализировать выбранный MILSTD, выбрав в структуре инициализации (MILSTD_Init_type) для поля Mode 
   значение MILSTD_Mode_BC. 
3. Сформировать COMMWORD1, обратите внимание, что регистр COMMWORD для КШ доступен ТОЛЬКО на запись, 
   при чтении из этого регистра будет читаться ноль. Поэтому для удобства заводим переменную 
   «MILSTD_COMMWORD CommWordTemp» и формируем ее значение при помощи битовых полей, далее перезаписываем
   CommWordTemp.word в LX_MILSTDx->COMMWORD1.word. Для того, чтобы КШ был приемником, в COMMWORD1 необходимо 
   установить бит TXRX.
4. Подождать некоторое время (в данном примере ожидание более 120 тактов), после запустить транзакцию с 
   помощью функции HAL_MILSTD_StartCWTransmit(LX_MILSTDx).
5. Ожидать получения ОС. Для этого можно установить прерывание по событие RFLAGN.
6. При получении ОС проанализировать его и, если необходимо, вычитать данные из буфера приемника 
  (предварительно убедившись, что бит VALMESS регистра STATUS установлен).

Пример работы ОУ
Формата 2, ОУ – передатчик. Для работы необходимо:
1.	Настроить GPIO для работы выбранного MILSTD.
2.	Проинициализировать выбранный MILSTD, выбрав в структуре инициализации (MILSTD_Init_type) для поля Mode 
    значение MILSTD_Mode_RT. 
3.	Записать в поле RTA регистра STATWORD1, адрес своего ОУ( т.е. поле RTA регистра CONTROL). Обратите 
    внимание, что регистр STATWORD1 в режиме ОУ выполняет доступ к ОС ТОЛЬКО по записи. По чтению регистр 
    содержит ОС принятое от второго ОУ в транзакции ОУ-ОУ. Поэтому для удобства заводим переменную 
    «MILSTD_STATWORD StatWordTemp» и формируем значение поля RTA, далее перезаписываем 
    StatWordTemp.word в LX_MILSTDx->STATWORD1.word.
4.	Ожидать запроса от КШ. Для этого в данном примере включается прерывание MILSTD_IT_RFLAGNIE.
5.	При получении КС от КШ произойдет прерывание (прерывание НЕ произойдет, если поля RTA в КС и ОС не будут 
    равны), далее будет от 4 до 12 мкс для анализа принятого КС (КС будет помещено в регистр COMMWORD1 
    данного ОУ), формирования ОС и записи данных в буфер передатчика (данные так же можно положить в буфер 
    передатчика и до получения запроса от КШ). Спустя 4-12 мкс в КШ будет отправлено ОС и данные.

Если данные были переданы успешно, то в отладочную консоль будет выведено сообщение "Result: Success". 
Если в ходе работы примера была зафиксирована ошибка, то в отладочную консоль будет выведено сообщение
"Result: Error - <Описание проблемы>".


/* Содержание каталога -------------------------------------------------------------------------------------*/

    - main.c               Основная программа
    - project.ldf          Файл сценария для компоновщика
    - session.lldbinit     Файл инициализации периферии до запуска отладки
    - .cproject, .project  Файлы конфигурации проекта


/* Аппаратная и программная среда --------------------------------------------------------------------------*/

    - Интегрированная среда разработки CM-LYNX.
    - Отладочная плата для процессора 1967ВН044.
    - Модуль МКИО на основе 5559ИН13У2.
    - Модуль МКИО на основе 5559ИН67Т.
    
    Модуль МКИО на основе 5559ИН13У2 необходимо подключить в разъёмы XS1.1-XS1.2.
    Модуль МКИО на основе 5559ИН67Т необходимо подключить в разъёмы XS2.1-XS2.2.
    Для модуля отладочного вер. 2.31 и более необходимо установить джамперы на разъёмы XP1 и XP2.
    Для модуля отладочного вер. 2.3 и менее необходимо снять джамперы с разъёмов XP1 и XP2.


/* Использование -------------------------------------------------------------------------------------------*/

Для запуска примера необходимо выполнить следующие действия:
    - Создать новое или открыть существующее рабочее пространство (Workspace).
    - Выполнить импорт проекта "MIL_STD_Format_2" в соответствии с "ML_GUI_Руководство_пользователя_R_Vx", 
      п. "Импорт существующего проекта".
    - Выполнить сборку проекта.
    - Создать конфигурацию отладки в соответствии с "ML_GUI_Руководство_пользователя_R_Vx", п. "Настройка 
      конфигурации и запуск отладки".
    - Запустить пример в режиме отладки.

Подробное описание библиотеки HAL с примерами использования функций приведено в каталоге по пути:
"CM-LYNX.x.yy.zz\toolchain\1967VN044\HAL\doc".
