Фронты START/STOP обрабатываются при принятии командного слова CAN/RS, а окончание импульса обслуживается таймером. STOP имеет приоритет, перекрытие выходов исключено, сохранена защита от самопуска при включении. Загрузка параметров больше не подменяет живые команды нагрузки. Добавлены подробные русские комментарии во все собственные C-модули и основные заголовки, описание поведения и host-тест автомата. Обновлены файлы прошивки. Полная сборка TI 22.6.1.LTS и тесты пройдены; проверка на физической плате не выполнялась.
74 lines
2.2 KiB
C
74 lines
2.2 KiB
C
/* Âíåøíÿÿ ïàìÿòü è ïðîãðàììíûå çàäåðæêè. init_zone7 ãîòîâèò XINTF
|
|
* äî ïåðâîãî îáðàùåíèÿ ê .logg; âðåìåíà øèíû çàâèñÿò îò ÷àñòîòû DSP
|
|
* è àïïàðàòíîé ïàìÿòè. pause_us çàíèìàåò CPU öèêëîì è èñïîëüçóåòñÿ
|
|
* ïðè èíèöèàëèçàöèè. Äëèòåëüíîñòü ÑÈÔÓ äîëæíà çàäàâàòüñÿ òàéìåðîì.
|
|
*/
|
|
#include "DSP2833x_Device.h" // DSP281x Headerfile Include File
|
|
|
|
// Configure the timing paramaters for Zone 7.
|
|
// Notes:
|
|
// This function should not be executed from XINTF
|
|
// Adjust the timing based on the data manual and
|
|
// external device requirements.
|
|
void init_zone7(void)
|
|
{
|
|
|
|
// Make sure the XINTF clock is enabled
|
|
SysCtrlRegs.PCLKCR3.bit.XINTFENCLK = 1;
|
|
|
|
// Configure the GPIO for XINTF with a 16-bit data bus
|
|
// This function is in DSP2833x_Xintf.c
|
|
InitXintf16Gpio();
|
|
EALLOW;
|
|
// All Zones---------------------------------
|
|
// Timing for all zones based on XTIMCLK = SYSCLKOUT
|
|
XintfRegs.XINTCNF2.bit.XTIMCLK = 0;
|
|
// Buffer up to 3 writes
|
|
XintfRegs.XINTCNF2.bit.WRBUFF = 3;
|
|
// XCLKOUT is enabled
|
|
XintfRegs.XINTCNF2.bit.CLKOFF = 0;
|
|
// XCLKOUT = XTIMCLK
|
|
XintfRegs.XINTCNF2.bit.CLKMODE = 0;
|
|
|
|
// Zone 7------------------------------------
|
|
// When using ready, ACTIVE must be 1 or greater
|
|
// Lead must always be 1 or greater
|
|
// Zone write timing
|
|
XintfRegs.XTIMING7.bit.XWRLEAD = 1;
|
|
XintfRegs.XTIMING7.bit.XWRACTIVE = 2;
|
|
XintfRegs.XTIMING7.bit.XWRTRAIL = 1;
|
|
// Zone read timing
|
|
XintfRegs.XTIMING7.bit.XRDLEAD = 1;
|
|
XintfRegs.XTIMING7.bit.XRDACTIVE = 3;
|
|
XintfRegs.XTIMING7.bit.XRDTRAIL = 0;
|
|
|
|
// don't double all Zone read/write lead/active/trail timing
|
|
XintfRegs.XTIMING7.bit.X2TIMING = 0;
|
|
|
|
// Zone will not sample XREADY signal
|
|
XintfRegs.XTIMING7.bit.USEREADY = 0;
|
|
XintfRegs.XTIMING7.bit.READYMODE = 0;
|
|
|
|
// 1,1 = x16 data bus
|
|
// 0,1 = x32 data bus
|
|
// other values are reserved
|
|
XintfRegs.XTIMING7.bit.XSIZE = 3;
|
|
EDIS;
|
|
|
|
//Force a pipeline flush to ensure that the write to
|
|
//the last register configured occurs before returning.
|
|
asm(" RPT #7 || NOP");
|
|
}
|
|
|
|
void pause_us(unsigned long t)
|
|
{
|
|
unsigned long i;
|
|
|
|
t = t >> 1;
|
|
|
|
for (i = 0; i < t; i++)
|
|
{
|
|
DSP28x_usDelay(CLKMULT*8L);
|
|
} }
|
|
|