Hi all
I am using AT91SAM7S64 controller for my application , the DEBUG port interrupt is not working i am posting my code for ur reference ,
the interrupt code void Debug_Usart_irq_handler(void) __irq { AT91PS_USART USART_pt = (AT91PS_USART) AT91C_BASE_DBGU; volatile unsigned int status,data; //* get Usart status register status = USART_pt->US_CSR; if ( status & AT91C_US_RXRDY) { data = AT91F_US_GetChar((AT91PS_USART) AT91C_BASE_DBGU); AT91F_US_PutChar ((AT91PS_USART) AT91C_BASE_DBGU, data); } if ( status & AT91C_US_OVRE) { //* clear US_RXRDY AT91F_US_GetChar(USART_pt); AT91F_US_PutChar (USART_pt, 'O'); } //* Check error if ( status & AT91C_US_PARE) { AT91F_US_PutChar (USART_pt, 'P'); } if ( status & AT91C_US_FRAME) { AT91F_US_PutChar (USART_pt, 'F'); } if ( status & AT91C_US_TIMEOUT){ USART_pt->US_CR = AT91C_US_STTTO; AT91F_US_PutChar (USART_pt, 'T'); } //* Reset the satus bit USART_pt->US_CR = AT91C_US_RSTSTA; } void InitDebugUART(void ) { AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA, ((unsigned int) AT91C_PA9_DRXD ) | ((unsigned int) AT91C_PA10_DTXD ) ,0); AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_SYS ) ; AT91F_US_Configure ((AT91PS_USART) AT91C_BASE_DBGU, MCK, AT91C_US_ASYNC_MODE, // mode Register to be programmed AT91C_DEBUG_BAUD, // baudrate to be programmed 0); // timeguard to be programmed // Enable Transmitter AT91F_US_EnableIt((AT91PS_USART) AT91C_BASE_DBGU,AT91C_US_TIMEOUT | AT91C_US_FRAME | AT91C_US_OVRE |AT91C_US_RXRDY); AT91C_BASE_AIC->AIC_SMR[AT91C_ID_SYS] = AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL | 7; AT91C_BASE_AIC->AIC_SVR[AT91C_ID_SYS] = (unsigned long)Debug_Usart_irq_handler; AT91C_BASE_AIC->AIC_IECR = (1 << AT91C_ID_SYS); AT91F_US_EnableTx((AT91PS_USART) AT91C_BASE_DBGU); AT91F_US_EnableRx((AT91PS_USART) AT91C_BASE_DBGU); }
can anyone tel where is the mistake ,the interrupt is not generated . the same code was working in IAR Embedded workbench.
Regards Suresh