Update CCS12 peripheral firmware and documentation
This commit is contained in:
@@ -1,3 +1,12 @@
|
||||
/**
|
||||
* @file main.c
|
||||
* @brief Точка входа и основной диспетчер периферийной прошивки Balsam 167.
|
||||
*
|
||||
* Выполняет инициализацию тактирования, GPIO, интерфейсов и измерительных
|
||||
* модулей, выбирает обработчик Timer1 по типу платы и затем координирует CAN,
|
||||
* RS-485, команды и контроль состояния. Порядок инициализации важен: глобальные
|
||||
* прерывания разрешаются только после настройки таблицы PIE и зависимых блоков.
|
||||
*/
|
||||
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
|
||||
|
||||
#include "cntrl_adr.h"
|
||||
@@ -23,6 +32,13 @@
|
||||
#include "measure.h"
|
||||
extern void DSP28x_usDelay(Uint32 Count);
|
||||
|
||||
/**
|
||||
* @brief Настраивает CPU Timer1 и выбирает его ISR по роли платы.
|
||||
* @details Для пульта используется cpu_timer1_isr_PULT(), для остальных ролей
|
||||
* — измерительный cpu_timer1_isr_SENS(). Период равен одному тику READY_FREQ.
|
||||
* @pre Desk уже считан из конфигурационных GPIO.
|
||||
* @post Вектор XINT13 установлен, Timer1 запущен, CPU INT13 разрешён.
|
||||
*/
|
||||
void timer_Init()
|
||||
{
|
||||
EALLOW; // This is needed to write to EALLOW protected registers
|
||||
@@ -35,6 +51,17 @@ void timer_Init()
|
||||
IER |= M_INT13;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Инициализирует устройство и выполняет бесконечный диспетчерский цикл.
|
||||
*
|
||||
* @details Последовательно поднимает системное тактирование, внешнюю память,
|
||||
* PIE, GPIO, UART, EEPROM, CAN, АЦП и таймеры. Затем обслуживает завершённые
|
||||
* RS-485 кадры, сервисные команды, CAN-периодику, кнопки и контроль связи.
|
||||
* Точные ветви исполнения определяются Desk и опциями package.h.
|
||||
*
|
||||
* @warning Порядок запуска существенен: ISR не должны сработать до создания
|
||||
* буферов, установки векторов и инициализации разделяемого состояния.
|
||||
*/
|
||||
void main()
|
||||
{
|
||||
int i,j,mask;
|
||||
@@ -46,8 +73,10 @@ void main()
|
||||
InitSysCtrl();
|
||||
|
||||
// Disable CPU interrupts and clear all CPU interrupt flags:
|
||||
/* Конфигурация PIE и периферии выполняется при запрещённых прерываниях CPU. */
|
||||
DINT;
|
||||
|
||||
/* После сброса PIE источники разрешаются отдельно каждым драйвером. */
|
||||
InitPieCtrl();
|
||||
|
||||
IER = 0x0000;
|
||||
@@ -56,6 +85,7 @@ void main()
|
||||
InitPieVectTable();
|
||||
init_zone7();
|
||||
|
||||
/* Роль платы определяет дальнейшую разводку ADC, GPIO и Timer1 ISR. */
|
||||
get_Mode();
|
||||
InitCan(0,Mode);
|
||||
|
||||
@@ -83,6 +113,7 @@ void main()
|
||||
clear_mem();
|
||||
set_cntrl_addr(Mode,16);
|
||||
timer_Init();
|
||||
/* Все базовые векторы и транспортные состояния готовы к обслуживанию ISR. */
|
||||
EnableInterrupts();
|
||||
|
||||
if(Desk!=dsk_EPLT)
|
||||
@@ -104,8 +135,10 @@ void main()
|
||||
SysCtrlRegs.WDCR= 0x2F;
|
||||
EDIS;
|
||||
|
||||
/* READY разрешает измерительному ADC ISR использовать накопленные данные. */
|
||||
READY=1;
|
||||
|
||||
/* Foreground-цикл обрабатывает события, подготовленные ISR и таймерами. */
|
||||
while(1)
|
||||
{
|
||||
if(CanGO)
|
||||
@@ -206,16 +239,16 @@ void main()
|
||||
led2_toggle();
|
||||
switch(j)
|
||||
{
|
||||
case CMD_INIT: init(rs); break; // íŕ÷ŕëüíűĺ óńňŕíîâęč
|
||||
case CMD_INITLOAD: initload(rs); break; // íŕńňđîéęŕ çŕăđóçęč
|
||||
case CMD_RUN: run(rs); break; // çŕăđóçčňü áëîę
|
||||
case CMD_LOAD: load(rs); break; // çŕăđóçčňü áëîę
|
||||
case CMD_PEEK: peek(rs); break; // ďđî÷čňŕňü ŕ÷ĺéęó ďŕěŕňč
|
||||
case CMD_POKE: poke(rs); break; // çŕďčńŕňü â ŕ÷ĺéęó ďŕěŕňč
|
||||
case CMD_UPLOAD: upload(rs); break; // ďĺđĺäŕňü áëîę ďŕěŕňč
|
||||
case CMD_EXTEND: extendbios(rs); break; // đŕńřčđĺííűĺ ęîěŕíäű äëŕ áčîńŕ
|
||||
case CMD_INIT: init(rs); break; // начальные установки
|
||||
case CMD_INITLOAD: initload(rs); break; // настройка загрузки
|
||||
case CMD_RUN: run(rs); break; // загрузить блок
|
||||
case CMD_LOAD: load(rs); break; // загрузить блок
|
||||
case CMD_PEEK: peek(rs); break; // прочитать ачейку памати
|
||||
case CMD_POKE: poke(rs); break; // записать в ачейку памати
|
||||
case CMD_UPLOAD: upload(rs); break; // передать блок памати
|
||||
case CMD_EXTEND: extendbios(rs); break; // расширенные команды дла биоса
|
||||
|
||||
case CMD_TFLASH: tflash(rs); break; // ďđîřčňü TMS
|
||||
case CMD_TFLASH: tflash(rs); break; // прошить TMS
|
||||
|
||||
case CMD_MODBUS_3: ReceiveCommandModbus3(rs); break;
|
||||
case CMD_MODBUS_6: ReceiveCommandModbus6(rs); break;
|
||||
|
||||
Reference in New Issue
Block a user