Перейти к содержанию

Прерывания в PIC32

Здравствуйте все!

Пытаюсь сгенерировать прерывание от таймера в симуляторе. Почему то код не работает. Код с мануала.

Инициализация таймера 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
}

Что еще нужно для прерывания?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
CODE
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 на вывод
симулятором не пользуюсь , все в железе отлаживаю
Изменено пользователем smart_pic

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Спасибо. Но на вывод не обязательно. Я с dsPIC работал немного, у меня и вжелезе и в симуляторе работало. Флаг прерывания T2IF устанавливается. но в обработчик не попадает. Вектор вроде правильный.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация