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

 
 
 
Reply to this topicStart new topic
> Как в IAR ARM сделать программный reset LPC2148?
MagRiv
сообщение Jul 16 2007, 10:04
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 5-05-06
Пользователь №: 16 809



Как в IAR ARM сделать программный reset LPC2148?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 16 2007, 10:20
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(MagRiv @ Jul 16 2007, 13:04) *
Как в IAR ARM сделать программный reset LPC2148?

Конкретизируйте вопрос. Что называете reset? Тупой переход на нулевой адрес? Тогда как и положено в 'C' вызов функции адрес которой 0 и IARовские навороты тут никчему. Вообще-то единственый правильный reset это активация Watchdog и/или выполнение процедуры сброса с Watchdpg с ошибкой.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Leen
сообщение Jul 16 2007, 10:25
Сообщение #3


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

Группа: Свой
Сообщений: 172
Регистрация: 5-08-06
Из: Владивосток
Пользователь №: 19 343



Ну, не знаю, может есть что-то узкоспециализированное, только для LPC21... В любом контроллере есть сторожевой таймер. Есть также и вход внешнего сброса. Вариант первый - завести таймер на интервал покороче и "забыть" про то, что он запущен. Собственно, это его функция - сбрасывать контроллер. Вариант второй - соединить какой-нибудь ненужный вывод со входом nRST.. Тогда даже задержки не будет - дернул разок - и в нокаутеsmile.gif Главное, чтобы по включению вывод, используемый для этого, не был сконфигурирован как выход с записанным в него нулем. А то камень так и будет в ресете. Еще неплохо подвесить на эти объединенные ноги ВНЕШНИЙ подтягивающий резистор. А то, опять-таки, контроллер может примитивно не выйти из сброса.
Можно еще, думаю, поизвращаться с монитором питания - он тоже надежно сбрасывает все внутренности камня. Но это уже сложнее, навскидку варианта не предложу. Мне когда-то второго (на PIC'ах, правда, но не одни ли фаберже yeah.gif ) хватило за глаза.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 16 2007, 10:31
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Leen @ Jul 16 2007, 13:25) *
ариант второй - соединить какой-нибудь ненужный вывод со входом nRST.. Тогда даже задержки не будет - дернул разок - и в нокаутеsmile.gif

Ага, а поскольку длинна импульса сброса обычно нормируется, а сброс таким образом получается непредсказуемый, то нокаут действительно может оказаться ПОЛНЫМ smile.gif. Таким способом только ресетчик можно дергать гарантированно спокойно, но не сам контроллер напрямую.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Leen
сообщение Jul 16 2007, 10:52
Сообщение #5


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

Группа: Свой
Сообщений: 172
Регистрация: 5-08-06
Из: Владивосток
Пользователь №: 19 343



Мндя... Не знал, что у LPC настолько убогий контроллер сброса.. А может, это просто впечатления по сравнению с SAM7. Ну да Аллах с ними, да и с нами также. На самом деле, правильнее все ж использовать WDT.
ЗЫ: а что такое "ресетчик"? Уж не обессудьте, темный я пока.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 16 2007, 10:58
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Leen @ Jul 16 2007, 13:52) *
Мндя... Не знал, что у LPC настолько убогий контроллер сброса..

Я не знаю насколько он 'убогий' у LPC - не разбирался за ненадобностью, но у AVR Atmel имено такой smile.gif
Цитата
а что такое "ресетчик"? Уж не обессудьте, темный я пока.

Специализированный чип для мониторинга (по амплитуде и времени)за одним или несколькими напряжениями питания и формирования гарантированного по длительности импульса сброса при выходе напряжений питания за границы мониторинга. Обслуживание кнопки сброс тоже может иметь.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
MagRiv
сообщение Jul 17 2007, 13:06
Сообщение #7





Группа: Новичок
Сообщений: 7
Регистрация: 5-05-06
Пользователь №: 16 809



Спасибо за ответы.
Мне нужно программно перевести контроллер в начальное состояние (как при подаче питания) и стартануть программу заново.
Видимо вариант с watchdog будет наилучшим.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 17 2007, 14:39
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(MagRiv @ Jul 17 2007, 16:06) *
Видимо вариант с watchdog будет наилучшим.

Без вариантов.

Код
    WDTC    = WD_TIMEOUT;     // WatchDog time
    WDMOD    = 0x3;             // WatchDog mode
    WDFEED    = 0xAA;       // Start Watchdog
    WDFEED    = 0x55;            //


При работающем Watcdog достаточно неправильной последовательности деактивации, и сразу reset
даже не дожидаясь таймаута.
Код
    WDFEED    = 0xAA; // Bad Watcdog Sequence ---> Reset
    WDFEED    = 0x66;     //


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 26th July 2025 - 01:50
Рейтинг@Mail.ru


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