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

 
 
 
Reply to this topicStart new topic
> Настройка прерываний в PIC24
Froze
сообщение Sep 17 2007, 11:47
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 5-09-07
Пользователь №: 30 303



Написал программу для проверки работы прерываний таймера TMR1,
почему то прерывание не работает
вот листинг

#include <p24fj128ga010.h>


void __attribute__((__interrupt__, auto_psv)) _T1Interrupt(void) {
if (IFS0bits.T1IF) {
IFS0bits.T1IF = 0;
PORTA++;
}
}


int main (void) {
PORTA = 0;
LATA = 0;
TRISA = 0;
T1CON = 0b0000000001010000;
PR1 = 0;
TMR1 = 0;
T1CONbits.TON=1;
IEC0bits.T1IE = 1;
IFS0bits.T1IF = 0;
IPC0bits.T1IP0 = 1;
IPC0bits.T1IP1 = 1;
IPC0bits.T1IP2 = 1;
while(1);
return 0;
}


Программа должна при каждом прерывании добавлять единичку в регистр PORTA;
Ни на плате ни на симуляторе не работает.
Может быть надо как то глобально разрешить прерывания ? хотя как я понял в 24х это стоит по умолчанию

У кого есть опыт работы с пик24 подскажите подалуйста, в чем тут дело.
Go to the top of the page
 
+Quote Post
Epikur
сообщение Sep 17 2007, 13:59
Сообщение #2


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

Группа: Свой
Сообщений: 90
Регистрация: 17-04-05
Из: Минск
Пользователь №: 4 215



Да, нужно разрешить прерывания глобально. Как это делать в PIC24 не знаю - не работал.
И ещё - добавлять единицу нужно в регистр LATA, а не PORTA.
Go to the top of the page
 
+Quote Post
Alex B._
сообщение Sep 18 2007, 08:17
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 943
Регистрация: 6-07-04
Из: Санкт-Петербург
Пользователь №: 274



1) флаг можно не проверять
2) писать можно и в PORTA и LATA
3) регистр периода PR1 установите в 0xFFFF - все заработает
Go to the top of the page
 
+Quote Post
Epikur
сообщение Sep 18 2007, 08:26
Сообщение #4


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

Группа: Свой
Сообщений: 90
Регистрация: 17-04-05
Из: Минск
Пользователь №: 4 215



Писать-то можно и в PORTA, но в данном случае имеет место быть чтение и запись. В зависимости от того, что навешено на контроллер аппаратно, инструкция incf PORTA может сделать не совсем то, что ожидается.
Go to the top of the page
 
+Quote Post
Alex B._
сообщение Sep 18 2007, 11:51
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 943
Регистрация: 6-07-04
Из: Санкт-Петербург
Пользователь №: 274



>> инструкция incf PORTA может сделать не совсем то, что ожидается
имхо человеку рано еще объяснять, что такое RMW, и как могут повлиять на работу емкости на портах =)
инструкция incf PORTA сама ничего плохого не сделает, она сделает именно то, чего от нее хотят - считает порт после выходных буферов, модифицирует и запишет обратно в защелку ДО буферов. Тут я думаю, проблем не будет, вы только запутаете камрада =)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 13:57
Рейтинг@Mail.ru


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