YuraFCZ 0 1 ноября, 2007 Опубликовано 1 ноября, 2007 · Жалоба Всем доброго времени суток! Понадобилось мне в приложении иметь возможность в определенной ситуации перезагрузить контроллер(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 режиме контроллер, то клоков нет, то еще какие то сообщения. Подскажите, пожалуйста, что такого криминального я написал??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vesago 0 1 ноября, 2007 Опубликовано 1 ноября, 2007 · Жалоба к сожалению, когда приложение ресетится по вачдогу оно гробит и жтаг. Я намедни тоже бился, бился - проклинал мтлинк за глючность, пока не догодался отключить вачдог. Сказывается привычка работы с авр. В вашем случае надобно потереть приложение штатным загрузчиком. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andy_Mozzhevilov 0 1 ноября, 2007 Опубликовано 1 ноября, 2007 · Жалоба Всем доброго времени суток! Понадобилось мне в приложении иметь возможность в определенной ситуации перезагрузить контроллер(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 при отладке включать не нужно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
YuraFCZ 0 1 ноября, 2007 Опубликовано 1 ноября, 2007 · Жалоба Спасибо за разъяснение! :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." Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Infernomen 0 1 ноября, 2007 Опубликовано 1 ноября, 2007 · Жалоба Спасибо за разъяснение! :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." Да, именно так и нужно переводить в бутлоад режим! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
YuraFCZ 0 2 ноября, 2007 Опубликовано 2 ноября, 2007 · Жалоба Всем спасибо, контроллер реанимировался! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться