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

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

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


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

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

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

Пример работы ОУ
Формата 1, ОУ – приемник. Для работы необходимо:
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 мкс в КШ будет отправлено ОС.
6.	Если необходимо, вычитать принятые данные (перед этим рекомендуется убедится, что бит VALLMESS регистра 
    STATUS установлен) из соответствующего подадреса буфера приемника. Номер подадреса, в который записаны 
    принятые данные хранится в COMMWORD1.b.SUBADDR.

Если данные были переданы успешно, то в отладочную консоль будет выведено сообщение "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_1" в соответствии с "ML_GUI_Руководство_пользователя_R_Vx", 
      п. "Импорт существующего проекта".
    - Выполнить сборку проекта.
    - Создать конфигурацию отладки в соответствии с "ML_GUI_Руководство_пользователя_R_Vx", п. "Настройка 
      конфигурации и запуск отладки".
    - Запустить пример в режиме отладки.

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