📄 init interrupts.c
字号:
#include "system.h"
#include <sysreg.h>
/********************************************************************************/
/***** InitInterrupts() *****/
/***** This function configures the Timer interrupt in IVT11 . *****/
/********************************************************************************/
short temp = 0;
void InitInterrupts(void)
{
// configure interrupts
register_handler(ik_ivg11, Timer_ISR); // assign ISR to interrupt vector
*pSIC_IMASK = 0x070000; // enable Timer interrupt
}
/********************************************************************************/
/***** Timer Interrupt Service Routine *****/
/********************************************************************************/
EX_INTERRUPT_HANDLER(Timer_ISR)
{
int i = 0;
sysreg_write(reg_CYCLES, 0);
// confirm interrupt handling
*pTIMER_STATUS |= 0x0001;
ping_pong = (ping_pong + 1) % 4;
if ((ping_pong == 1) || (ping_pong == 3))
{
half = (half + 1) % 2;
ssync();
}
else if (ping_pong == 2) {
half = (half + 1) % 2;
*pFIO_FLAG_C = 0x000D; // Clear All Flags
// configure PPI + DMA for TX mode
*pPPI_CONTROL = (short) 0x0000; //Disable PPI
*pDMA0_CONFIG = 0x0000; // Disable DMA
*pPPI_CONTROL = (short) 0x3802;
// 33 additional mid-scale samples must be sent to the DAC to flush
// its interpolation filters.
*pPPI_COUNT = (Number_of_ADC_channels * Number_of_Samples*2)+33;
*pPPI_DELAY = 0x1B;
*pDMA0_CONFIG = 0x4;
*pDMA0_START_ADDR = sPPI_TxBuffer;
*pDMA0_X_COUNT = ((Number_of_Samples*2)+33);
*pDMA0_CONFIG = *pDMA0_CONFIG | DMAEN; // enable DMA (PPI not enabled yet)
*pFIO_FLAG_S = 0x0005; // TX: Set Flag 0 for PPI TX, Flag 2 (TXEN)
// This flag-pin also generates the frame sync
*pPPI_CONTROL |= PORT_EN; // enable PPI
temp = sysreg_read(reg_CYCLES);
ssync();
}
else {
half = (half + 1) % 2;
*pFIO_FLAG_C = 0x000D; // Clear All Flags
// configure PPI + DMA for RX mode
*pPPI_CONTROL = (short) 0x0000; //Disable PPI
*pDMA0_CONFIG = 0x0000; // Disable DMA
*pPPI_CONTROL = (short) 0x387C;
*pPPI_COUNT = Number_of_ADC_channels * Number_of_Samples*2;
*pPPI_DELAY = 0x0;
*pDMA0_CONFIG = 0x6;
*pDMA0_START_ADDR = sPPI_RxBuffer;
*pDMA0_X_COUNT = Number_of_Samples*2;
*pDMA0_CONFIG = *pDMA0_CONFIG | DMAEN; // enable DMA (PPI not enabled yet)
//for(i=0;i<432;i++)
//asm("nop;");
*pFIO_FLAG_S = 0x0008; // RX: Set Flag 3 (RXEN)
*pPPI_CONTROL |= PORT_EN;// enable PPI
temp = sysreg_read(reg_CYCLES);
ssync();
} // IF
stage_initialized = 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -