таймеры 16-битные, поэтому переделал ф-цию:
Код
void UTIL_DelayTimeInUs(unsigned long time_us)
{
DelayFlag = 0;
AT91C_BASE_TC1->TC_RC = 6; // прерывание должно возникать каждую мкс
AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_TC1);
AT91C_BASE_TC1->TC_CCR = AT91C_TC_SWTRG;
while(!DelayFlag);
AT91F_AIC_DisableIt (AT91C_BASE_AIC, AT91C_ID_TC1);
}
Теперь пробую задавать интервал через глобальную переменную.
Код
void timer1_c_irq_handler(void)
{
AT91PS_TC TC_pt = AT91C_BASE_TC1;
unsigned int dummy;
static unsigned long usCount = 0;
dummy = TC_pt->TC_SR;
dummy = dummy;
usCount++;
if(usCount == 5000000){ //вместо глоб. пер. пишу 5000000 - т.е. DelayFlag должен = 1 черех 5 сек
DelayFlag = 1;
usCount = 0;
}else{
TC_pt->TC_CCR = AT91C_TC_SWTRG;
}
}
проверяю - срабатывает через 15 сек. Уже не знаю что и думать...