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

 
 
> Програмный сброс, Как это правильно сделать?
maxus
сообщение Nov 10 2005, 14:17
Сообщение #1


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

Группа: Свой
Сообщений: 113
Регистрация: 5-04-05
Пользователь №: 3 864



Такой вопрос:
Как програмно (т.е. изнутри) сбросить AVR (ATMega128)? Апаратно понятно - по ресету все регистры переводятся в свои исходные состояния. А програмно? Надо их "вручную" переводить?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
starter48
сообщение Nov 10 2005, 16:17
Сообщение #2


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

Группа: Свой
Сообщений: 112
Регистрация: 15-10-05
Из: Томск
Пользователь №: 9 680



Цитата(maxus @ Nov 10 2005, 21:17) *
Такой вопрос:
Как програмно (т.е. изнутри) сбросить AVR (ATMega128)? Апаратно понятно - по ресету все регистры переводятся в свои исходные состояния. А програмно? Надо их "вручную" переводить?

Ещё такой вариант (переход по адр. 0, при таком сбросе не происходит инициализации регистров, что иногда очень желательно):
Код
void (*resetptr)(void) = 0x0000;

__disable_interrupt();
resetptr();
Go to the top of the page
 
+Quote Post
maxus
сообщение Nov 11 2005, 07:11
Сообщение #3


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

Группа: Свой
Сообщений: 113
Регистрация: 5-04-05
Пользователь №: 3 864



Этот вариант я вначале и пробовал. В некоторых ситуациях глючит (возможно как раз и из-за непереинициализации регистров) - разбираться не стал. smile.gif Вачдог, думаю - железно правильно все сбросит.
Go to the top of the page
 
+Quote Post
starter48
сообщение Nov 16 2005, 06:06
Сообщение #4


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

Группа: Свой
Сообщений: 112
Регистрация: 15-10-05
Из: Томск
Пользователь №: 9 680



Цитата(maxus @ Nov 11 2005, 14:11) *
Этот вариант я вначале и пробовал. В некоторых ситуациях глючит (возможно как раз и из-за непереинициализации регистров) - разбираться не стал. smile.gif Вачдог, думаю - железно правильно все сбросит.

Дело в том, что иногда нужно производить сброс чисто программно, как я показал в примере с переходом на адр. 0
Например, при запуске основной программы из бут-блока. Здесь тебе ни WDT, ни дёрганье RESET отдельной ногой не помогут.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- maxus   Програмный сброс   Nov 10 2005, 14:17
- - KRS   Использ...   Nov 10 2005, 14:21
|- - G}{OST   Цитата(KRS @ Nov 10 2005, 18:21) Использо...   Nov 10 2005, 14:35
|- - KRS   Цитата(G}{OST @ Nov 10 2005, 17:35) Цитат...   Nov 11 2005, 07:30
|- - G}{OST   Цитата(KRS @ Nov 11 2005, 11:30) Т...   Nov 11 2005, 08:01
- - bzx   Ресет контролера происходит в случае: 1. Power-on ...   Nov 10 2005, 14:28
- - maxus   Все понятно. Большее спасибо!!!   Nov 10 2005, 15:06
|- - IgorKossak   Цитата(starter48 @ Nov 16 2005, 08:06) Де...   Nov 16 2005, 07:23
- - BVU   jmp START   Nov 11 2005, 07:19
- - IgorKossak   А если уж очень быстро надо и есть свободный вывод...   Nov 15 2005, 10:51
|- - Igor26   Цитата(IgorKossak @ Nov 15 2005, 14:51) А...   Nov 15 2005, 17:19
|- - maxus   При сбросе все выводы ориентируются на ввод. Не по...   Nov 16 2005, 08:35
|- - Igor26   Цитата(maxus @ Nov 16 2005, 12:35) При сб...   Nov 16 2005, 13:07
- - one_man_show   В таком случае сигнал растягивают ёмкостью   Nov 16 2005, 08:41
|- - BVU   Цитата(one_man_show @ Nov 16 2005, 11:41)...   Nov 16 2005, 09:05
- - one_man_show   Корреция несомненно верная, но в большинстве случа...   Nov 16 2005, 10:14


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

 


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


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