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

 
 
> RTC FIQ в LPC2148, Работает, но не долого, почему?
Seka
сообщение Sep 29 2008, 09:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 7-06-07
Из: Украина
Пользователь №: 28 265



Добрый день.

Имеется LPC2148 на платке и кварц 32кГц для часов.
На LPC2148 поставил пример уКОСа, в настройках порта и стека ничего не менял.
Настороил RTC на внешний кварц 32кГц.
Установил FIQ на 1 секундное прерывание RTC, и дергаю в прерывании ножкой.

После запуска, некоторое время работает, а потом в дебагере попадаю на while(1){;}
с ошибкой "EXCEPT PREFETCH ABORT" sad.gif
(пробовал делать источник 1 сек. прерыванй с TIMER0 - работает). В чем проблема?

И еще может кто подскажет насколько FIQ "тормозится" уКОСом. Следует ли как-то переделовать порт?
(требуется чтоб 1 сек. импульсы на ножеке как можно меньше "плавали").

Код
void RTC_Init(void)
{
CCR_bit.CLKEN  = 0;    // RTC_Disable
CCR_bit.CLKSRC = 1;    // External 32kHz
CCR_bit.CTCRST = CCR_bit.CTTEST = 0; // test disable and reset
AMR=0xFF;
CIIR_bit.IMSEC = 1;    // Setup 1-SEC interrupt
ILR            = 0x03; // Clear RTC interrupt
CCR_bit.CLKEN  = 1;    // RTC_Enable

VICIntSelect |= (1<<VicIntSource);
VICIntEnable |= (1<<VIC_RTC);
}

__arm void RTC_ISR(void)
{
ILR = 0x03; // Clear RTC interrupt flag

IO0DIR |= (1<<29);
if(IO0PIN & (1<<29) ) IO0CLR = (1<<29);
                  else IO0SET = (1<<29);
}

void  OS_CPU_ExceptHndlr (CPU_INT32U  except_id)
{
CPU_FNCT_VOID  pfnct;

if(except_id == OS_CPU_ARM_EXCEPT_FIQ)  // FIQ
{
  RTC_ISR();
}
else
  if(except_id == OS_CPU_ARM_EXCEPT_IRQ) // IRQ
  {
   ...
  }
  else while(1){;}  // EXCEPT PREFETCH ABORT there
}
Go to the top of the page
 
+Quote Post



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

 


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


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