@Vadimm1001

Что за процедура такая RESET AVR?

Все, что описано ниже протестировано в программе Proteus.

Допустим код, в таблице векторов которого определены только два прерывания, RESET и прерывание по преобразованию АЦП. После вектора идет обработчик RESET, далее пустой бесконечный цикл и потом обработчик прерывания от АЦП. Если в этом коде удалить саму метку RESET:, то есть только метку, но не обработчик прерывания RESET - код не работает(PC попадает в пустую память), хотя код который был в обработчике RESET по сути то выполняется(наверное).
И опять же если это прерывание выполняется при запуске МК, то почему если я размещаю обработчик прерывания RESET последним - он также не работает(PC попадает в пустую память).
Суть вопроса:

- Почему так происходит, если делать изменения в коде, которые я описал выше?

-Для чего нужна процедура RESET?

-Как она вызывается?
  • Вопрос задан
  • 670 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Почему так происходит, если делать изменения в коде, которые я описал выше?

Сам код приведи в вопросе, без него мы можем только гадать, что происходит.
Но если гадать, то:
Если в этом коде удалить саму метку RESET:, то есть только метку, но не обработчик прерывания RESET - код не работает

а не должен даже компилироваться. Потому что в векторе reset должна стоять команда перехода на метку RESET:.

почему если я размещаю обработчик прерывания RESET последним - он также не работает

может не хватает диапазона команды rjmp (4 килобайта) чтобы перейти из вектора в обработчик?

Для чего нужна процедура RESET?

для инициализации контроллера

Как она вызывается

переходом из вектора reset
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vanyamba-electronics
Рекомендую почитать даташит на микроконтроллер, раздел Таблица векторов прерывания.
Прерывание #0 RESET_vect вызывается при сбросе микроконтроллера (передний фронт на входе nRESET).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы