Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 02.12.2020, 18:12   #1
ATAMAN
Senior Member
 
Аватар для ATAMAN
 
Регистрация: 09.01.2012
Возраст: 37
Сообщений: 587
Вес репутации: 373/42
ATAMAN is just really niceATAMAN is just really niceATAMAN is just really niceATAMAN is just really nice
По умолчанию Вектор прерывания по изменению входного сигнала.

Добрый день. МК DSPIC33FJ32GP202 при эмуляции прерывание по CN4 это порт RB0 происходит и флаг CNIF в регистре IFS1 принимает значение 1, но по вектору в функцию не переходит
void Int_RB0() iv IVT_ADDR_INTERRUPT4
и соответственно значение в переменной не увеличиваться.

Код:
int tmr_1=0;
char txt_tmr_1[6];
void main() 
{
/*CLKDIVbits.PLLPRE=0;
CLKDIVbits.PLLPOST=0;
PLLFBD = 56;*/
AD1PCFGL = 0xFFFF;
TRISB=0b0100000011111111;
CNPU1.CN4PUE=1;
CNEN1.CN4IE=1;
IEC1.CNIE=1;
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
while(1)
{
IntToStr(tmr_1, txt_tmr_1);
Lcd_Out(1,1,txt_tmr_1);
}
}


void Int_RB0() iv IVT_ADDR_INTERRUPT4
{
IFS1.CNIF=0;
tmr_1++;
}
Что за вектор, как его прописать в программе?
Подскажите пожалуйста.

Последний раз редактировалось ATAMAN; 02.12.2020 в 18:30.
ATAMAN вне форума   Ответить с цитированием
Старый 02.12.2020, 19:09   #2
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 34
Сообщений: 2,685
Вес репутации: 4859/106
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

ATAMAN
Поставьте приоритет прерыванию выше Вашего уровня исполнения.
besogon вне форума   Ответить с цитированием
Старый 02.12.2020, 19:14   #3
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 34
Сообщений: 2,685
Вес репутации: 4859/106
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

Ну и в случае если не будет работать - посмотрите в отладчике, точно ли по адресу вектора расположена Ваша функция обработчика.



Не использовал ничего похожего на Ваши библиотеки - не знаю, что делает этот Ваш макрос в чем Вы там пишете.
besogon вне форума   Ответить с цитированием
Старый 02.12.2020, 19:19   #4
ATAMAN
Senior Member
 
Аватар для ATAMAN
 
Регистрация: 09.01.2012
Возраст: 37
Сообщений: 587
Вес репутации: 373/42
ATAMAN is just really niceATAMAN is just really niceATAMAN is just really niceATAMAN is just really nice
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

Цитата:
Сообщение от besogon Посмотреть сообщение
ATAMAN
Поставьте приоритет прерыванию выше Вашего уровня исполнения.
Нет не хочет работать.

Код:
CNPU1.CN4PUE=1;
CNEN1.CN4IE=1;
IEC1.CNIE=1;
IPC4bits.CNIP=7;
Как вообще можно отследить адрес вектора?
ATAMAN вне форума   Ответить с цитированием
Старый 02.12.2020, 19:22   #5
ATAMAN
Senior Member
 
Аватар для ATAMAN
 
Регистрация: 09.01.2012
Возраст: 37
Сообщений: 587
Вес репутации: 373/42
ATAMAN is just really niceATAMAN is just really niceATAMAN is just really niceATAMAN is just really nice
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

Я так понимаю нужно руководствоваться этой таблицей?
Нажмите на изображение для увеличения
Название: Снимок.JPG
Просмотров: 11
Размер:	81.8 Кб
ID:	11828
ATAMAN вне форума   Ответить с цитированием
Старый 02.12.2020, 19:38   #6
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 34
Сообщений: 2,685
Вес репутации: 4859/106
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

ATAMAN
Как Вы понимаете, что у Вас не работает?
У Вас по коду надписи на экране по нажатию меняться не должны. Я даже не уверен, что у Вас выйдет из прерывания - насколько я помню, там нужен readout порта и еще что-то.
Код:
When a CN interrupt occurs, the user should read the PORT register associated with the CN pin(s). This will clear the mismatch condition and set up the CN logic to detect the next pin change.

Это вопли из интернетов по поводу pic24. Здесь думаю -+ тоже самое.

Последний раз редактировалось besogon; 02.12.2020 в 19:44.
besogon вне форума   Ответить с цитированием
Старый 02.12.2020, 19:44   #7
ATAMAN
Senior Member
 
Аватар для ATAMAN
 
Регистрация: 09.01.2012
Возраст: 37
Сообщений: 587
Вес репутации: 373/42
ATAMAN is just really niceATAMAN is just really niceATAMAN is just really niceATAMAN is just really nice
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

Состояние бита IFS1.INT1IF не сбрасывается в 0 и переменная tmr_1++; не инкрементируется по нажатию кнопки на порту RB0
Нажмите на изображение для увеличения
Название: Снимок.JPG
Просмотров: 8
Размер:	317.7 Кб
ID:	11829
ATAMAN вне форума   Ответить с цитированием
Старый 02.12.2020, 19:45   #8
ATAMAN
Senior Member
 
Аватар для ATAMAN
 
Регистрация: 09.01.2012
Возраст: 37
Сообщений: 587
Вес репутации: 373/42
ATAMAN is just really niceATAMAN is just really niceATAMAN is just really niceATAMAN is just really nice
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

Может входит в прерывание а выйти не может?
ATAMAN вне форума   Ответить с цитированием
Старый 02.12.2020, 19:51   #9
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 34
Сообщений: 2,685
Вес репутации: 4859/106
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

ATAMAN
переменная tmr_1++; не инкрементируется - у Вас код в main должен предположить что tmt_1 константа и не брать в расчет, что Вы модифицируете эту переменную в прерывании.


Если Вы хотите, чтобы код в main брал в расчет, что переменная tmr_1 модифицируется в прерывании, то эта переменная должна быть объявлена как volatile int, а не int.
besogon вне форума   Ответить с цитированием
Старый 02.12.2020, 19:51   #10
ATAMAN
Senior Member
 
Аватар для ATAMAN
 
Регистрация: 09.01.2012
Возраст: 37
Сообщений: 587
Вес репутации: 373/42
ATAMAN is just really niceATAMAN is just really niceATAMAN is just really niceATAMAN is just really nice
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

Что то припоминаю похожие на PIC18 прерывание по изменению уровней. Тоже какая то сложность была.
ATAMAN вне форума   Ответить с цитированием
Старый 02.12.2020, 19:54   #11
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 34
Сообщений: 2,685
Вес репутации: 4859/106
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

ATAMAN
не можете в отладке - подключите светодиоды и поставьте, чтобы как зайдет в прерывание чтобы один светодиод начал светить, а второй светодиод менял свое состояние на противоположное при входе и выходе из прерывания.
besogon вне форума   Ответить с цитированием
Старый 02.12.2020, 20:00   #12
ATAMAN
Senior Member
 
Аватар для ATAMAN
 
Регистрация: 09.01.2012
Возраст: 37
Сообщений: 587
Вес репутации: 373/42
ATAMAN is just really niceATAMAN is just really niceATAMAN is just really niceATAMAN is just really nice
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

Код:
L_end_Int_RB0:
        MOV        #26, W0
        REPEAT        #12
        POP        [W0--]
        POP        W0
        POP        RCOUNT
        POP        52
        RETFIE
; end of _Int_RB0
RETFIE выполняется.
ATAMAN вне форума   Ответить с цитированием
Старый 02.12.2020, 20:11   #13
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 34
Сообщений: 2,685
Вес репутации: 4859/106
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

ATAMAN
Как Вы определили, что Вы попали в прерывание?
Вы в отладке поставили бряк и увидели, что попали в прерывание?
besogon вне форума   Ответить с цитированием
Старый 02.12.2020, 20:29   #14
ATAMAN
Senior Member
 
Аватар для ATAMAN
 
Регистрация: 09.01.2012
Возраст: 37
Сообщений: 587
Вес репутации: 373/42
ATAMAN is just really niceATAMAN is just really niceATAMAN is just really niceATAMAN is just really nice
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

Похоже что не попадаю в прерывание.
ATAMAN вне форума   Ответить с цитированием
Старый 02.12.2020, 20:30   #15
ATAMAN
Senior Member
 
Аватар для ATAMAN
 
Регистрация: 09.01.2012
Возраст: 37
Сообщений: 587
Вес репутации: 373/42
ATAMAN is just really niceATAMAN is just really niceATAMAN is just really niceATAMAN is just really nice
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

Выходит флаг устанавливается IFS1.CNIF=1; и всё.
ATAMAN вне форума   Ответить с цитированием
Старый 02.12.2020, 20:41   #16
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 34
Сообщений: 2,685
Вес репутации: 4859/106
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

ATAMAN
уточните, включены ли прерывания глобально.
besogon вне форума   Ответить с цитированием
Старый 02.12.2020, 20:42   #17
ATAMAN
Senior Member
 
Аватар для ATAMAN
 
Регистрация: 09.01.2012
Возраст: 37
Сообщений: 587
Вес репутации: 373/42
ATAMAN is just really niceATAMAN is just really niceATAMAN is just really niceATAMAN is just really nice
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

Подскажите какой бит отвечает за глобальное включение прерывания?
Похоже не включен.
ATAMAN вне форума   Ответить с цитированием
Старый 02.12.2020, 20:50   #18
ATAMAN
Senior Member
 
Аватар для ATAMAN
 
Регистрация: 09.01.2012
Возраст: 37
Сообщений: 587
Вес репутации: 373/42
ATAMAN is just really niceATAMAN is just really niceATAMAN is just really niceATAMAN is just really nice
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

Дело в том что прерывание внешнее прерывание на INT1 на порту RB14 работает и по переполнению TMR1 работает, а вот по изменению уровня CNIE не работает.
ATAMAN вне форума   Ответить с цитированием
Старый 02.12.2020, 20:52   #19
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 34
Сообщений: 2,685
Вес репутации: 4859/106
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

ATAMAN
Посмотрел, судя по всему в Вашем МК не реализован.
Обычно в intcon2 бит 15.
В документе описывается, что нужно внезапно использовать IPL для запрета прерываний.


У Вас прямо вот вообще нет возможности использовать отладку?



Вы можете понять, попадает ли у Вас хоть куда-то?
Можете сделать по запуску задержку в 5 секунд, а в суперлупе с задержкой 300 миллисекунд моргать светодиодом?
besogon вне форума   Ответить с цитированием
Старый 02.12.2020, 20:54   #20
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 34
Сообщений: 2,685
Вес репутации: 4859/106
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

ATAMAN
по идее Вы хоть вручную флаг выставляйте - у Вас должно попасть в итоге на вектор.
besogon вне форума   Ответить с цитированием
Старый 02.12.2020, 20:55   #21
ATAMAN
Senior Member
 
Аватар для ATAMAN
 
Регистрация: 09.01.2012
Возраст: 37
Сообщений: 587
Вес репутации: 373/42
ATAMAN is just really niceATAMAN is just really niceATAMAN is just really niceATAMAN is just really nice
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

Может нужно сделать ремап на порт RB0 периферию отвечающие за прерывание по изменению уровня но нет там в таблице такого да и если бы нужен был ремап то флаг бы не изменялся IFS1.CNIF при нажатие на кнопку.
ATAMAN вне форума   Ответить с цитированием
Старый 02.12.2020, 20:58   #22
ATAMAN
Senior Member
 
Аватар для ATAMAN
 
Регистрация: 09.01.2012
Возраст: 37
Сообщений: 587
Вес репутации: 373/42
ATAMAN is just really niceATAMAN is just really niceATAMAN is just really niceATAMAN is just really nice
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

Цитата:
Сообщение от besogon Посмотреть сообщение
ATAMAN


Вы можете понять, попадает ли у Вас хоть куда-то?
Можете сделать по запуску задержку в 5 секунд, а в суперлупе с задержкой 300 миллисекунд моргать светодиодом?
100% не попадаю в прерывание не моргают светодиоды. А как вообще понять возникает ли прерывание не знаю.
ATAMAN вне форума   Ответить с цитированием
Старый 02.12.2020, 21:25   #23
ATAMAN
Senior Member
 
Аватар для ATAMAN
 
Регистрация: 09.01.2012
Возраст: 37
Сообщений: 587
Вес репутации: 373/42
ATAMAN is just really niceATAMAN is just really niceATAMAN is just really niceATAMAN is just really nice
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

Нажмите на изображение для увеличения
Название: Снимок.GIF
Просмотров: 8
Размер:	4.6 Кб
ID:	11830
О как эта гадина CNIE переходит по вектору 0x001C а надо по 0x003A
ATAMAN вне форума   Ответить с цитированием
Старый 02.12.2020, 21:34   #24
ATAMAN
Senior Member
 
Аватар для ATAMAN
 
Регистрация: 09.01.2012
Возраст: 37
Сообщений: 587
Вес репутации: 373/42
ATAMAN is just really niceATAMAN is just really niceATAMAN is just really niceATAMAN is just really nice
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

Мда я не внимательны всё разобрался. Я не ту функцию вектора прерывания определял.
ATAMAN вне форума   Ответить с цитированием
Старый 02.12.2020, 21:39   #25
ATAMAN
Senior Member
 
Аватар для ATAMAN
 
Регистрация: 09.01.2012
Возраст: 37
Сообщений: 587
Вес репутации: 373/42
ATAMAN is just really niceATAMAN is just really niceATAMAN is just really niceATAMAN is just really nice
По умолчанию Re: Вектор прерывания по изменению входного сигнала.

Класс теперь энкодер с кнопкой по человечески налажу для моей программы. Вообще dsPIC33 мне нравиться с ним даже проще чем с PIC18. А гибкость то какая.
ATAMAN вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как разрулить прерывания по приоритетам? phase Продукция MICROCHIP 4 18.11.2009 11:42
Передача аналогового сигнала по радиоканалу Ученый Общетехнические вопросы 6 20.03.2008 19:35
PIC18F4520 проблемы с UART-ом AlHakim Продукция MICROCHIP 4 30.10.2007 07:31
Программная симуляция pic16F876 в MPLAB Timik Продукция MICROCHIP 2 12.10.2007 15:12
CCP2 в PIC18F4520 не поддается укращению :) AlHakim Продукция MICROCHIP 19 26.09.2007 08:08


Часовой пояс GMT +3, время: 00:43.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd. Перевод: zCarot