реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Прерывания в PIC32
Iptash
сообщение May 13 2018, 17:10
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 600
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



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

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

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

Что еще нужно для прерывания?
Go to the top of the page
 
+Quote Post
smart_pic
сообщение May 13 2018, 17:51
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 170
Регистрация: 18-12-10
Из: Ставрополь
Пользователь №: 61 708



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 - May 13 2018, 17:52
Go to the top of the page
 
+Quote Post
Iptash
сообщение May 13 2018, 18:37
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 600
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



Спасибо. Но на вывод не обязательно. Я с dsPIC работал немного, у меня и вжелезе и в симуляторе работало. Флаг прерывания T2IF устанавливается. но в обработчик не попадает. Вектор вроде правильный.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th June 2018 - 05:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.00856 секунд с 7
ELECTRONIX ©2004-2016