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

 
 
> Low priority interrupts PIC18F4550, Не отключаются LPI
Роман77
сообщение Feb 11 2010, 07:41
Сообщение #1





Группа: Участник
Сообщений: 8
Регистрация: 10-03-07
Пользователь №: 26 039



Здравствуйте!
Имеется разделение прерываний по приоритетам. Main и ISRы находятся в одном файле, вспомогательные функции в другом.
CODE
#pragma interruptlow InterruptHandlerHigh

void InterruptHandlerHigh ()
{

if( INTCONbits.INT0IF) //Check for INT0
{

WriteConfig();
// INTCONbits.RBIE = 0; //Disbles the RB port change interrupt
// INTCON3bits.INT2IE = 0; //Disbles the INT2 external interrupt
INTCONbits.GIEL = 0;
}
}


Функция WriteConfig() обеспечивает запись данных в EEPROM, во время которой на период процедуры записи, отключаются прерывания. Так вот, если прерывания отключаются в WriteConfig(), то затем отключить все низкоуровневые прерывания INTCONbits.GIEL = 0 не удается, а только посредством соответствующих битов IE=0. Если отключение прерываний убрать из WriteConfig(), то INTCONbits.GIEL = 0 работает. Если же вложить WriteConfig() в другую какую-ть подпрограмму (SOUBROTINExx-> WriteConfig),при этом отключение/подключение прерываний остается, то ситуация еще более запутывается.

Прошу сообщить, что я делаю не так?
Go to the top of the page
 
+Quote Post



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

 


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


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