Перейти к содержанию
    

Контроллер (lpc2132) умер после добавления фунцкии ресета

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

 

Понадобилось мне в приложении иметь возможность в определенной ситуации перезагрузить контроллер(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 режиме контроллер, то клоков нет, то еще какие то сообщения.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

к сожалению, когда приложение ресетится по вачдогу оно гробит и жтаг. Я намедни тоже бился, бился - проклинал мтлинк за глючность, пока не догодался отключить вачдог. Сказывается привычка работы с авр. В вашем случае надобно потереть приложение штатным загрузчиком.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Понадобилось мне в приложении иметь возможность в определенной ситуации перезагрузить контроллер(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 при отладке включать не нужно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за разъяснение! :a14:

 

А правильно ли я понял из ЮзерГида, что для перевода в режим бутлоадера достаточно только притянуть ножку Р0.14 к 0 на время ресета (внешнего)?

Просто есть такая фраза:"If P0.14 is sampled low and the watchdog overflow flag is set, the external hardware request to start the ISP command handler is ignored."

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за разъяснение! :a14:

 

А правильно ли я понял из ЮзерГида, что для перевода в режим бутлоадера достаточно только притянуть ножку Р0.14 к 0 на время ресета (внешнего)?

Просто есть такая фраза:"If P0.14 is sampled low and the watchdog overflow flag is set, the external hardware request to start the ISP command handler is ignored."

 

Да, именно так и нужно переводить в бутлоад режим!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...