khlenar 5 13 мая, 2018 Опубликовано 13 мая, 2018 · Жалоба Здравствуйте все! Пытаюсь сгенерировать прерывание от таймера в симуляторе. Почему то код не работает. Код с мануала. Инициализация таймера 2 void Timer2Init(void) { T2CON = 0x0; T2CONbits.TCKPS = 0x02; TMR2 = 0x0; PR2 = 0xFF; IPC2SET = 0x0000000C; IPC2SET = 0x00000001; IFS0bits.T2IF = 0x0; // сброс флага IEC0bits.T2IE = 0x1; // разрешить прерывание T2CONbits.ON = 1; } Тело прерывания void __ISR(_TIMER_2_VECTOR,IPL3)Timer2Handler(void) { LATAbits.LATA12 = ~LATAbits.LATA12; IFS0bits.T2IF = 0x0; // Be sure to clear the Timer1 interrupt status } Что еще нужно для прерывания? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
smart_pic 7 13 мая, 2018 Опубликовано 13 мая, 2018 (изменено) · Жалоба void Timer1_Init(void) { // Use Timer 1 for 16-bit and 32-bit processors // 1:256 prescale T1CONbits.TCKPS = 0; // 1:1 prescale value T1CONbits.TCS = 0; // 1 = External clock from TxCKI pin ; 0-internal clock T1CONbits.TSYNC = 0; // Timer External Clock Input Synchronization Selection bit // 1 = External clock input is synchronized // 0 = External clock input is not synchronized T1CONbits.TWIP = 0; T1CONbits.TGATE = 0; PR1 = 0x03ff; // Base TMR1 = 0x0000; // Clear counter IPC1bits.T1IP = 3; // Interrupt priority 3 (low) IEC0CLR = _IEC0_T1IE_MASK; IFS0CLR = _IFS0_T1IF_MASK; // Start timer T1CONbits.TON = 1; } TMR1 и 2 одинаковые, так что настройки идентичные У меня это код работает в железе . Попробуйте настроить регистры периода как у меня Еще возможно потребуется настройка основного генератора. так что код инициализации у вас не полный И еще не заметил у вас настройки порта A12 на вывод симулятором не пользуюсь , все в железе отлаживаю Изменено 13 мая, 2018 пользователем smart_pic Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khlenar 5 13 мая, 2018 Опубликовано 13 мая, 2018 · Жалоба Спасибо. Но на вывод не обязательно. Я с dsPIC работал немного, у меня и вжелезе и в симуляторе работало. Флаг прерывания T2IF устанавливается. но в обработчик не попадает. Вектор вроде правильный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться