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

📄 instisr.c

📁 56f8300E系列dsp的BOOTloader
💻 C
📖 第 1 页 / 共 2 页
字号:
/*******************************************************************************
*
* Motorola Inc.
* (c) Copyright 2002 Motorola, Inc.
* ALL RIGHTS RESERVED.
*
* $Element: /project/dsp568_sdk/sdk/src/dsp56838evm/nos/config/instisr.c $ 
* $Author: saa $ 
* $Revision: /main/2 $ s
* $VOB: /project/dsp568_sdk $ 
* $OS: solaris $ 
*
* Description:       SDK configurable ISRs prologs 
*
* Notes:  
*
******************************************************************************/

#include "port.h"
#include "bsp.h"

#include "arch.h" 
#include "arch_off.h" 
#include "timerdrv.h"
#include "mscan.h"

#include "scidrv.h"
#include "gpiodrv.h"



#define POUND  #
extern void Dispatcher(void);

extern void Sci0Tx_DispatchCallback(void);
extern void Sci1Tx_DispatchCallback(void);
extern void Sci0Rx_DispatchCallback(void);
extern void Sci1Rx_DispatchCallback(void);


extern void Spi0ChipSelect_DispatchCallback(void);
extern void Spi0ChipDeselect_DispatchCallback(void);
extern void Spi0Rx_DispatchCallback(void);
extern void Spi0Tx_DispatchCallback(void);
extern void Spi1ChipSelect_DispatchCallback(void);
extern void Spi1ChipDeselect_DispatchCallback(void);
extern void Spi1Rx_DispatchCallback(void);
extern void Spi1Tx_DispatchCallback(void);

extern void ButtonAany_DispatchCallback(void);
extern void ButtonBany_DispatchCallback(void);

extern void Decoder0HomeWatchdog_DispatchCallback(void);
extern void Decoder0Index_DispatchCallback(void);

extern void	PwmAReload_DispatchCallback(void);
extern void	PwmBReload_DispatchCallback(void);
extern void	PwmAFault_DispatchCallback(void);
extern void	PwmBFault_DispatchCallback(void);

extern void AdcAComplete_DispatchCallback(void);
extern void AdcBComplete_DispatchCallback(void);
extern void AdcAZeroCrossing_DispatchCallback(void);
extern void AdcBZeroCrossing_DispatchCallback(void);
extern void AdcALowLimit_DispatchCallback(void);
extern void AdcBLowLimit_DispatchCallback(void);
extern void AdcAHighLimit_DispatchCallback(void);
extern void AdcBHighLimit_DispatchCallback(void);

enum not_arch_offsets
{
	archoff_ButtonA = 0,
	archoff_ButtonB = 0,
};

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

#define ArchInstallISR( num, CallBack, prio )   \
void SDK_Interrupt##num(void);              \
void SDK_Interrupt##num(void)               \
{                                           \
    extern void CallBack(void);             \
    asm( alignsp );                         \
    asm( move.l  R0, x:(SP)+ );             \
    asm( move.l  POUND >>##CallBack  , R0 );\
    asm( jmp Dispatcher );                  \
}

#define ArchInstallFastISR( num, CallBack, prio )   \
void SDK_Interrupt##num(void);              \
void SDK_Interrupt##num(void)               \
{                                           \
    extern void CallBack(void);             \
    asm( jmp CallBack );                    \
}

#define ArchInstallSuperFastISR0( num, CallBack )   \
void SDK_Interrupt##num(void);              \
void SDK_Interrupt##num(void)               \
{                                           \
    extern void CallBack(void);             \
    asm( jmp CallBack );                    \
}

#define ArchInstallSuperFastISR1( num, CallBack )   \
void SDK_Interrupt##num(void);              \
void SDK_Interrupt##num(void)               \
{                                           \
    extern void CallBack(void);             \
    asm( jmp CallBack );                    \
}

#define ArchInstallCallback(device, type, CallBack )   						\
static void device##type##_DispatchCallback(void)  							\
{                                           								\
    extern unsigned long CallBack(unsigned int * arch, unsigned long);      \
    asm( jmp CallBack );                    								\
}

#define ArchParameter(...) ;

/* Quadrature Timer ISR */
#define ArchInstallTimerISR( num, tmr, chnl, prio )                         \
void SDK_Interrupt##num(void);                                              \
void SDK_Interrupt##num(void)                                               \
{                                                                           \
    asm(	brclr POUND QTB_TCFIE|QTB_TOFIE|QTB_IEFIE , X:(BSP_PERIPH_BASE + archoff_Timer##tmr##chnl##_StatusControlReg ), end ); \
	asm(	alignsp 		                    					);		\
	asm(	move.l  R2 , x:(SP)+									);		\
	asm(	move.l  A10, x:(SP)										);		\
	asm(	move.l  POUND (BSP_PERIPH_BASE + archoff_Timer##tmr##chnl ), R2	);		\
	asm(	move.l  #0 , A											);		\
    asm(	brset POUND QTB_TCF_TCFIE , X:(BSP_PERIPH_BASE + archoff_Timer##tmr##chnl##_StatusControlReg ), lbl_TCF  ); \
    asm(	brset POUND QTB_TOF_TOFIE , X:(BSP_PERIPH_BASE + archoff_Timer##tmr##chnl##_StatusControlReg ), lbl_TOF  ); \
    asm(	brset POUND QTB_IEF_IEFIE , X:(BSP_PERIPH_BASE + archoff_Timer##tmr##chnl##_StatusControlReg ), lbl_IEF  ); \
    asm(endtmr:														);		\
	asm(	move.l  x:(SP)- , A										);		\
	asm(	move.l  x:(SP)- , R2									);		\
	asm(	move.l  x:(SP)- , SP									);		\
	asm(    nop   													);		\
	asm(    nop														);		\
    asm(end: 														);		\
    asm(	rti 													);		\
                                                                            \
    asm(lbl_TCF: 													);		\
    asm(	bfclr POUND QTB_TCF, X:(BSP_PERIPH_BASE + archoff_Timer##tmr##chnl##_StatusControlReg ) 	);	\
    asm(	jsr Timer##tmr##chnl##OnCompare##_DispatchCallback		);		\
    asm(	jmp  endtmr												);		\
                                                                       		\
    asm(lbl_TOF: 													);		\
    asm(	bfclr POUND QTB_TOF, X:(BSP_PERIPH_BASE + archoff_Timer##tmr##chnl##_StatusControlReg ) 	);	\
	asm(	jsr Timer##tmr##chnl##OnOverflow##_DispatchCallback		);		\
    asm(	jmp  endtmr												);		\
                                                                            \
    asm(lbl_IEF: 													);		\
    asm(	bfclr POUND QTB_IEF, X:(BSP_PERIPH_BASE + archoff_Timer##tmr##chnl##_StatusControlReg ) 	);	\
	asm(	jsr Timer##tmr##chnl##OnInputEdge##_DispatchCallback	);		\
    asm(	jmp  endtmr												);		\
                                                                            \
    asm(Timer##tmr##chnl##OnCompare##_DispatchCallback:				);		\
    asm(	jsr POSIXtimerISR##tmr##chnl							);		\
    asm(Timer##tmr##chnl##OnOverflow##_DispatchCallback:			);		\
    asm(Timer##tmr##chnl##OnInputEdge##_DispatchCallback:			);		\
    asm(	rts														);		\
}

#define ArchInstallCallBackISR(device,num, type, CallBack, prio )         	\
void SDK_Interrupt##num(void);                                              \
void SDK_Interrupt##num(void)                                               \
{                                                                           \
	extern void CallBack(void);												\
	asm( alignsp);														\
	asm( move.l	R2, X:(SP)+);												\
	asm( move.l	R3, X:(SP)+);												\
	asm( move.l	R4, X:(SP));												\
    asm( move.l POUND >>##device##DeviceContext, R3 );                     	\
    asm( move.l POUND (BSP_PERIPH_BASE + archoff_##device), R2 );           	\
    asm( move.l POUND >>##device##type##_DispatchCallback, R4 );           	\
    asm( jsr	CallBack);													\
    asm( move.l X:(SP)-,R4);												\
    asm( move.l X:(SP)-,R3);												\
    asm( move.l X:(SP)-,R2);												\
    asm( move.l X:(SP)-,SP);												\
	asm(    nop   								);					\
	asm(    nop									);					\
    asm( rti);																\
};


#define ArchInstall2CallBackISR(device,num, type1, type2,  CallBack, prio )	\
void SDK_Interrupt##num(void);                                              \
void SDK_Interrupt##num(void)                                               \
{                                                                           \
	extern void CallBack(void);												\
	asm( adda	#2,SP);														\
	asm( move.l	R2, X:(SP)+);												\
	asm( move.l	R3, X:(SP)+);												\
	asm( move.l	R4, X:(SP)+);												\
	asm( move.l	R5, X:(SP));												\

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -