Выход из спячки

Питер
Offline
Зарегистрирован: 18.05.2017

Как я понимаю, выход из режима сна всегда осуществляется каким-то прерыванием. А как быть, если нужно продолжить исполнение функции loop() или она возобновится автоматически, но тогда с какого места?

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

если нужно исполнять, то спать нельзя.

void loop() {
// loop начинается с этого места

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

После просыпания выполнение начнётся ровно с того места, где заснули. Буквально будет выполняться следующая команда, как будто бы никакого сна и не было. Вас это интересует?

Питер
Offline
Зарегистрирован: 18.05.2017

Это, но если пробуждение инициируется прерыванием, то разьве управление не будет передано в это прерывание? Если до засыпания МК успел начать обрабатывать какое-то прерывание, то после выхода из спячки:

1) МК сначала исполнит программу прерывания, которое разбудило его и что дальше ?

2) МК завершит обработку прерывания, в котором заснул в вернется к исполнению loop?

3) иное ?

Питер
Offline
Зарегистрирован: 18.05.2017

Клапауций 112 пишет:
если нужно исполнять, то спать нельзя.

void loop() {
// loop начинается с этого места

те заснув однажды, МК в loop уже не вернется?

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

Питер пишет:

те заснув однажды, МК в loop уже не вернется?

где я такое утверждал?

Питер
Offline
Зарегистрирован: 18.05.2017

Клапауций 112 пишет:
Питер пишет:
те заснув однажды, МК в loop уже не вернется?
где я такое утверждал?
я так понял из ответа

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, если перывание, так после его отбраотки, вернёт на сл. команду за той, которая исполнялась последней, как и после любого другого прерывания.

uncle_grin
Offline
Зарегистрирован: 26.04.2015

Питер, игнорируйте этих двух придурков. Они ничего не знают, только ругаются и тролят. Я их игнорирую - спрсил а в ответ пустота...

МК выполнит прерывание и вернется назад в программу

bwn
Offline
Зарегистрирован: 25.08.2014

uncle_grin пишет:

Питер, игнорируйте этих двух придурков. Они ничего не знают, только ругаются и тролят. Я их игнорирую - спрсил а в ответ пустота...

МК выполнит прерывание и вернется назад в программу

О, никак новая звезда на нашем небосклоне.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

uncle_grin пишет:

МК выполнит прерывание и вернется назад в программу

Программа большая . Куда вернется так и не сказано.  Если вы пишете на Си , то будет делать следующую команду после команды "Спать". Так же это будет и при нормальной программе на Ассемблере. Но есть варианты. Если после выполнения программы прерывания не возвращаться в программу, а делать горячий старт. Но как это делать не сюда спрашивать, а искать специализированые форумы. Так как такой трюк давно не делают.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

qwone пишет:

Куда вернется так и не сказано. 

Почему, я сказал.

uncle_grin
Offline
Зарегистрирован: 26.04.2015

qwone пишет:

uncle_grin пишет:

МК выполнит прерывание и вернется назад в программу

Программа большая . Куда вернется так и не сказано.  Если вы пишете на Си , то будет делать следующую команду после команды "Спать". Так же это будет и при нормальной программе на Ассемблере. Но есть варианты. Если после выполнения программы прерывания не возвращаться в программу, а делать горячий старт. Но как это делать не сюда спрашивать, а искать специализированые форумы. Так как такой трюк давно не делают.

ну да, на ардуине так и происходит