ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
2 мая
102259 Топик полностью
Vladimir Ljaschko (12.10.2007 18:36, просмотров: 192) ответил AVR на Дай ВЕСЬ код в тегах <c></c>
Да у меня на С. Похоже, причина в векторах или чем-то еще. Прерывание есть, но не туда - контроллер сбрасывается, если прерывание разрешено. Тестовый пример. Один светодиод моргает в основном цикле, а второй - в прерывании. Если прерывание таймера не разрешать, то моргает диод 1. Если разрешать, то в автомате он затыкается, по шагам вначале моргает. Диод 2 не зажигается вообще и останов в прерывании не срабатывает. <c> void ConfigT1(void) { T1CON= 0; // stop timer TMR1 = 0; // Reset Timer1 counter //PR1 = (FCY/BACKGROUND_FREQUENCY)/T1_PRESCALER; PR1=0x60; T1CON = T1CON_TON; // start counting _T1IF = 0; // clear IF bit _T1IP = 6; // set priority _T1IE = 1; // T1 Interrupt Enable } int main (void) { ConfigPorts(); //TRIS and ConfigT1(); // InitBackground(); // SRbits.IPL=3; //Enable CPU priority levels for (;;) { OFF_LED2; ON_LED2; } ; void _ISR _T1Interrupt(void) { static int a; if (a) { ON_LED1; a=0; } else { OFF_LED1; a=1; } IFS0bits.T1IF=0; } } </c>