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

Программно ресетнуть МК

ATMEGA16

Как правильно программно ресетнуть МК? Пишу асм команду wdr - реакция ноль, может что куда нужно прописать?

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


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

В чужом проекте для мега128 видел вот такое

asm volatile("jmp 0x0000");

нормально работает

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


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

В чужом проекте для мега128 видел вот такое
asm volatile("jmp 0x0000");

нормально работает

Очень интересная строка! Если бы мне такое было нужно я бы написал goto. Мне же ресет нужно сделать(все регистры обнулить) а не прыгнуть в начало программы...

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


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

Специальной команды на перезапуск МК нет. Можно влючить собаку и не сбрасывать ее. А если нужно выполнять перезапуск в кратчайшее время, можно один из выводов порта соединить со ногой сброса и команодовать

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


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

Как правильно...

Избитый вопрос. Воспользуйтесь поиском по форуму.

 

 

..можно

надежно "неможно", ибо при банальном прямом соединении не обеспечивается гарантированная длительность импульса сброса.

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


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

Из всего прочитанного для себя извлёк 3 решения:

1. Переход на нуль с последующей процедурой инициализации ВСЕГО что можно (регистры, память и переферия).

2. Использовать собаку.

3. Использовать одну ножку для генерации сброса, а для формирования необходимой длительности придётся на ресете небольшую схемку спаять или ножкой дёргать супервизор, который сформирует необходимую длинну импульса сброса.

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


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

2 Deka - юзайте собаку - меньше всего нужно будет паять и собирать - пару строчек кода займёт.. Поиском поисчите - кто-то приводил для меги , не помню какой...

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


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

2 Deka - юзайте собаку - меньше всего нужно будет паять и собирать - пару строчек кода займёт.. Поиском поисчите - кто-то приводил для меги , не помню какой...

Под IAR вот такой:

__disable_interrupt(); for(;;);

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


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

Эээээ... ну так я юзаю и нет проблем. Я просто для автора вопроса обобщил наверное все способы... А автор вопроса - не я! ;)

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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