⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init interrupts.c

📁 基于ADI blackfin处理器的范例程序
💻 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 + -