📄 lcodu_interrupth.c
字号:
//*----------------------------------------------------------------------------
//* File Name : lcodu_interrupth.c
//* Object : 中断处理程序
//*
//* Creation : wzm 11/10/2007
//* Modif : wp 26/10/2007
//*----------------------------------------------------------------------------
//*-----------------------------------------------------------------------------
//* Function Name : timer0_c_irq_handler
//* Object : Timer0 interrupt service routine,8ms,
//* used for rssi reporting
//* autor : wang ping
//* Input Parameters : none
//* Output Parameters : none
//*-----------------------------------------------------------------------------
__ramfunc void timer0_c_irq_handler(void)
{
unsigned int dummy;
//* Acknowledge interrupt status
dummy = AT91C_BASE_TC0->TC_SR;
//* Suppress warning variable "dummy" was set but never used
dummy = dummy;
/*if ( (AT91C_BASE_PIOA->PIO_PDSR & PA8_LED ) == PA8_LED ) //
{
AT91C_BASE_PIOA->PIO_CODR= PA8_LED;
}
else
{
AT91C_BASE_PIOA->PIO_SODR= PA8_LED;;
}*/
timer0_flag=1;
}
//*-----------------------------------------------------------------------------
//* Function Name : timer1_c_irq_handler
//* Object : Timer1 interrupt service routine,
//* used for cheching the TX input alarm
//* autor : wang ping
//* Input Parameters : none
//* Output Parameters : none
//*-----------------------------------------------------------------------------
__ramfunc void timer1_c_irq_handler(void)
{
unsigned int dummy;
//* Acknowledge interrupt status
dummy = AT91C_BASE_TC1->TC_SR;
//* Suppress warning variable "dummy" was set but never used
dummy = dummy;
alarm_flag=0;
if(adc_det_in<=v_ob1_30) //cable alarm
{
v_odu_alarm[1]|=ALARM_TXINPUT;
alarm_flag=1;
}
else v_odu_alarm[1]&=NORMAL_TXINPUT;
}
//*-----------------------------------------------------------------------------
//* Function Name : US0_c_irq_handler
//* Object : USART0 interrupt service routine,
//* reset the DMA buffer pointer.
//* autor : wang ping
//* Input Parameters : none
//* Output Parameters : none
//*-----------------------------------------------------------------------------
__ramfunc void US0_c_irq_handler(void)
{
AT91F_PDC_ReceiveFrame ( AT91C_BASE_PDC_US0 , (char *) &us0_recv_dma[0], MAX_RECV_BUF,0,0);
//* Reset the satus bit
AT91C_BASE_US0->US_CR = AT91C_US_RSTSTA;
/* //led for test
if ( (AT91F_PIO_GetInput(AT91C_BASE_PIOA) & LED1 ) == LED1 )
{
AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED1 );
}
else
{
AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED1 );
}
*/
}
//*-----------------------------------------------------------------------------
//* Function Name : US1_c_irq_handler
//* Object : USART1 interrupt service routine,
//* reset the DMA buffer pointer.
//* autor : wang ping
//* Input Parameters : none
//* Output Parameters : none
//*-----------------------------------------------------------------------------
__ramfunc void US1_c_irq_handler(void)
{
;
AT91F_PDC_ReceiveFrame ( AT91C_BASE_PDC_US1 , (char *) &us1_recv_dma[0], MAX_RECV_BUF,0,0);
//* Reset the satus b
AT91C_BASE_US1->US_CR = AT91C_US_RSTSTA;
}
//*-----------------------------------------------------------------------------
//* Function Name : ADC_c_irq_handler
//* Object : ADC interrupt service routine,
//* reset the ADC DMA buffer pointer.
//* calculate the average value of the 16 converts of each
//* channel
//* autor : wang ping
//* Input Parameters : none
//* Output Parameters : none
//*-----------------------------------------------------------------------------
//__ramfunc
void ADC_c_irq_handler(void)
{
unsigned int i,j;
//Disable the clock and the interrupts
AT91C_BASE_TC2->TC_CCR = AT91C_TC_CLKDIS;
adc_result_buf0=adc_result_buf1=adc_result_buf2=adc_result_buf3=adc_result_buf4=0;
j=0;
/*
if ( (AT91C_BASE_PIOA->PIO_PDSR & PA8_LED ) == PA8_LED ) //
{
AT91C_BASE_PIOA->PIO_CODR= PA8_LED;
}
else
{
AT91C_BASE_PIOA->PIO_SODR= PA8_LED;;
}
*/
for(i=0;i<16;i++)
{
adc_result_buf0+=adc_dma[j++];
adc_result_buf0+=((adc_dma[j++]&0x03)<<8);//det_out
adc_result_buf1+=adc_dma[j++];
adc_result_buf1+=((adc_dma[j++]&0x03)<<8);//temp
adc_result_buf2+=adc_dma[j++];
adc_result_buf2+=((adc_dma[j++]&0x03)<<8);//rssi1
adc_result_buf3+=adc_dma[j++];
adc_result_buf3+=((adc_dma[j++]&0x03)<<8);//rssi2
adc_result_buf4+=adc_dma[j++];
adc_result_buf4+=((adc_dma[j++]&0x03)<<8);//det_in
}
adc_result_buf0>>=4; /*16次平均*/
adc_result_buf1>>=4;
adc_result_buf2>>=4;
adc_result_buf3>>=4;
adc_result_buf4>>=4;
//AT91C_BASE_ADC->ADC_CR = AT91C_ADC_SWRST;
AT91F_PDC_ReceiveFrame ( AT91C_BASE_PDC_ADC , (char *) &adc_dma[0], MAX_ADC_BUF>>1,0,0);
// Start the timer counter
AT91C_BASE_TC2->TC_CCR = (AT91C_TC_CLKEN |AT91C_TC_SWTRG ) ;
//led for test
/*
if ( (AT91F_PIO_GetInput(AT91C_BASE_PIOA) & LED1 ) == LED1 )
{
AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, LED1 );
}
else
{
AT91F_PIO_SetOutput( AT91C_BASE_PIOA, LED1 );
}
*/
;
}
//*-----------------------------------------------------------------------------
//* Function Name : IRQ0_c_irq_handler
//* Object : tx synthlock alarm
//* negative edge trige
//* autor : wang ping 29/10/2007
//* Input Parameters : none
//* Output Parameters : none
//*-----------------------------------------------------------------------------
__ramfunc void IRQ0_c_irq_handler(void)
{
// if((AT91C_BASE_PIOA->PIO_PDSR & BIT20 ) == BIT20 )
{
v_odu_alarm[0]|=ALARM_TXSYNTHLOCK;
alarm_flag=2;
// v_txmute=TX_MUTED;
// v_cfg_data[2].value[0]=v_txmute;
#if(__NOT_DEBUG__)
/*mute the rf*/
AT91C_BASE_PIOA->PIO_SODR=PA12_MUTE; //set_mute
#endif
}
/*else
{
v_odu_alarm[0]&=NORMAL_TXSYNTHLOCK;
v_rpsalarm&=NORMAL_TXSYNTHLOCK;
}*/
}
//*-----------------------------------------------------------------------------
//* Function Name : IRQ1_c_irq_handler
//* Object : rx synthlock alarm
//* negative edge trige
//* autor : wang ping 29/10/2007
//* Input Parameters : none
//* Output Parameters : none
//*-----------------------------------------------------------------------------
__ramfunc void IRQ1_c_irq_handler(void)
{
//if((AT91C_BASE_PIOA->PIO_PDSR & BIT30 ) == BIT30 )
{
v_odu_alarm[0]|=ALARM_RXSYNTHLOCK;
//v_txmute=TX_MUTED;
//set_mute(TX_MUTED);
alarm_flag=1;
}
/* else
{
v_odu_alarm[0]&=NORMAL_RXSYNTHLOCK;
v_rpsalarm&=NORMAL_RXSYNTHLOCK;
}*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -