ATmega32:программный RESET

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Прорезались зубы
Аватара пользователя
Сообщения: 239
Зарегистрирован: Вт сен 09, 2008 17:35:48
Откуда: Уфа

Сообщение MegaRazoR »

Как правильно сделать программный ресет т.е. полностью перезапустить контроллер сбросив всю SRAM, программный счетчик и все регистры да и све остальное ?
спасибо вам за ваше терпение и ваши подробные ответы ! :)
Реклама
Э...
Аватара пользователя
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва

Сообщение tych »

Если есть свободная нога то ею дернуть РЕСЕТ, наверно конденсатор нужен там.

А програмно наверно АСМ вставкой перейти в начало проги и там вставить очистку СРАМ и всех регистров - наверно в виде циклов.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Контактная информация:
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

MegaRazoR писал(а):... программный ресет т.е. ... сбросив всю SRAM
А разве Атмел обещает сброс содержимого памяти после ресета? Ей-богу, не помню такого... Изображение
Мучитель микросхем
Сообщения: 459
Зарегистрирован: Вс июн 01, 2008 12:16:38

Сообщение smac »

MegaRazoR писал(а):Как правильно сделать программный ресет т.е. полностью перезапустить контроллер сбросив всю SRAM, программный счетчик и все регистры да и све остальное ?
Есть еще один способ: включить и настроить WDT и зациклиться, в результате по прошествию периода WDT получим честный сброс, однако как уже было отмечено, атмел не обещает очистки памяти по сбросу.
Реклама
Эиком - электронные компоненты и радиодетали
Э...
Аватара пользователя
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва

Сообщение tych »

Yellow Tiger писал(а):
MegaRazoR писал(а):... программный ресет т.е. ... сбросив всю SRAM
А разве Атмел обещает сброс содержимого памяти после ресета? Ей-богу, не помню такого...
Потому и надо програмно стереть. Компиляторы такое стирание ставят в прогу по-умолчанию обычно.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Контактная информация:
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1148
Зарегистрирован: Вт июл 08, 2008 12:24:17

Сообщение Yellow Tiger »

Компиляторы "C" - ставят (их стандарт обязывает), а Паскаля - нет. ;)
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 108
Зарегистрирован: Вт мар 18, 2008 08:25:31
Откуда: Красноярск

Сообщение MOHOXPOM »

Есть прерывание по 0 адресу – то бишь ресет
void (*funcptr)( void ) = 0x0000;//Программный RESET

Обращаешься как funcptr();
Как зачем мне голова?! Я ей ем!!!
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

имхо, tych предложил самый верный "полуаппаратный" вариант, а из чисто програмных - вариант с WDT самый правильный. не забывайте, что сброс выполняет ряд операций над регистрами управления периферией, поэтому просто переход на нулевой адрес не равносилен сбросу!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Встал на лапы
Аватара пользователя
Сообщения: 108
Зарегистрирован: Вт мар 18, 2008 08:25:31
Откуда: Красноярск

Сообщение MOHOXPOM »

В принципе - верно. Но переход на адрес 0х0000 дает перезапуск программы начиная с функции main(), что позволяет переопределить переменные и стеки «по новому». Обычно, в связке с обработками неизвестных прерываний и контрольными значениями все работает. Но для верности действительно лучше использовать WDT.
Как зачем мне голова?! Я ей ем!!!
Контактная информация:
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»