This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

AT91SAM7S64 DEBUG port interrupt

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