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

 
 
> Контроллер (lpc2132) умер после добавления фунцкии ресета
SanvaldYV
сообщение Nov 1 2007, 14:41
Сообщение #1


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

Группа: Свой
Сообщений: 125
Регистрация: 21-03-07
Из: Санкт-Петербург
Пользователь №: 26 371



Всем доброго времени суток!

Понадобилось мне в приложении иметь возможность в определенной ситуации перезагрузить контроллер(lpc2132). Решил осуществлять это при помощи watchdog'a. Добавил следующую функцию:

Код
__disable_interrupt();    
   WDTC = (u32)(F_PCLK/1000); // установка задержки перед сбросом (размер не важен)
   WDMOD_bit.WDRESET = 1; WDMOD_bit.WDEN = 1; // разрешен ресет и прерывание
   WDFEED = 0xAA; WDFEED = 0x55; // запуск
  __enable_interrupt();
  for(;;);


Поставил просто в мэйне в пустой рабочий цикл, вся инициализация проведена нормально, взята из рабочего приложения, после загрузки этого приложения контроллер нельзя ни стереть, ни перешить (использую JLink). То идентификатор ядра не определяется, то не в JTAG режиме контроллер, то клоков нет, то еще какие то сообщения.

Подскажите, пожалуйста, что такого криминального я написал???
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Andy Mozzhevilov
сообщение Nov 1 2007, 15:11
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(Юрий Санвальд @ Nov 1 2007, 19:41) *
Всем доброго времени суток!

Понадобилось мне в приложении иметь возможность в определенной ситуации перезагрузить контроллер(lpc2132). Решил осуществлять это при помощи watchdog'a. Добавил следующую функцию:

Код
__disable_interrupt();    
   WDTC = (u32)(F_PCLK/1000); // установка задержки перед сбросом (размер не важен)
   WDMOD_bit.WDRESET = 1; WDMOD_bit.WDEN = 1; // разрешен ресет и прерывание
   WDFEED = 0xAA; WDFEED = 0x55; // запуск
  __enable_interrupt();
  for(;;);


Поставил просто в мэйне в пустой рабочий цикл, вся инициализация проведена нормально, взята из рабочего приложения, после загрузки этого приложения контроллер нельзя ни стереть, ни перешить (использую JLink). То идентификатор ядра не определяется, то не в JTAG режиме контроллер, то клоков нет, то еще какие то сообщения.

Подскажите, пожалуйста, что такого криминального я написал???

Переведите контроллер в режим бутлоадера, он станет доступным по JTAG.
Когда контроллер программируется по JTAG программа из внутренней флеши успевает запустаться, и отрабатывать по WDT, сбрасывая контроллер, поэтому у вас JTAG начинает глючить.
Ровно тот же эффект будет при отладке, если вы включите WDT. При останове на брейкпоинте у вас контроллер аппаратно пересброситься, и будет все глючить.
WDT при отладке включать не нужно.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 29th August 2025 - 23:27
Рейтинг@Mail.ru


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