Код
__irq void tc2_int (void)
{
AT91S_TC* pTC2 = AT91C_BASE_TC2;
AT91F_ADC_StartConversion(AT91C_BASE_ADC);
*AT91C_AIC_EOICR = pTC2->TC_SR;
}
__irq void ADC_inter(void)
{
GetData();
AT91F_AIC_ClearIt(AT91C_BASE_AIC, AT91C_ID_ADC);
}
void Init_ADC()
{
AT91S_AIC* pAIC = AT91C_BASE_AIC;
AT91F_ADC_SoftReset(AT91C_BASE_ADC);
AT91F_ADC_CfgPMC();
AT91F_ADC_CfgModeReg(AT91C_BASE_ADC,ADC_Mode);
AT91F_ADC_EnableChannel(AT91C_BASE_ADC, AT91C_ADC_CH4);
pAIC->AIC_SMR[AT91C_ID_ADC] = AT91C_AIC_PRIOR_LOWEST | AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL;
pAIC->AIC_SVR[AT91C_ID_ADC] = (unsigned long) ADC_inter;
AT91F_ADC_EnableIt(AT91C_BASE_ADC,AT91C_ADC_CH4);
AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_ADC);
pAIC->AIC_IECR = (1 << AT91C_ID_ADC);
}
{
AT91S_TC* pTC2 = AT91C_BASE_TC2;
AT91F_ADC_StartConversion(AT91C_BASE_ADC);
*AT91C_AIC_EOICR = pTC2->TC_SR;
}
__irq void ADC_inter(void)
{
GetData();
AT91F_AIC_ClearIt(AT91C_BASE_AIC, AT91C_ID_ADC);
}
void Init_ADC()
{
AT91S_AIC* pAIC = AT91C_BASE_AIC;
AT91F_ADC_SoftReset(AT91C_BASE_ADC);
AT91F_ADC_CfgPMC();
AT91F_ADC_CfgModeReg(AT91C_BASE_ADC,ADC_Mode);
AT91F_ADC_EnableChannel(AT91C_BASE_ADC, AT91C_ADC_CH4);
pAIC->AIC_SMR[AT91C_ID_ADC] = AT91C_AIC_PRIOR_LOWEST | AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL;
pAIC->AIC_SVR[AT91C_ID_ADC] = (unsigned long) ADC_inter;
AT91F_ADC_EnableIt(AT91C_BASE_ADC,AT91C_ADC_CH4);
AT91F_AIC_EnableIt(AT91C_BASE_AIC, AT91C_ID_ADC);
pAIC->AIC_IECR = (1 << AT91C_ID_ADC);
}