что нельзя выполнять внутри прерывания?
- Войдите на сайт для отправки комментариев
Ср, 26/02/2014 - 05:40
Где-то была тема не могу ее найти, что нельзя выполнять внутри прерывания ?
millis()
micros()
delay()
вывод иформации в com-port
чтение информации из com-port ?
Где-то была тема не могу ее найти, что нельзя выполнять внутри прерывания ?
millis()
micros()
delay()
вывод иформации в com-port
чтение информации из com-port ?
com-порт нельзя точно.
delay без фанатизма.
millis(), micros() можно.
Где-то была тема не могу ее найти, что нельзя выполнять внутри прерывания ?
millis()
micros()
delay()
вывод иформации в com-port
чтение информации из com-port ?
com-порт нельзя точно.
delay без фанатизма.
millis(), micros() можно.
other interrupts will be ignored (turned off) until the current one is finished
ошибочное утверждение. Вызов других прерываний действительно будет запрещен если внутрир прерывания их принудительно не разрешить, но прерываания не будут проигнорированы. МК взведет флаги в регистрах и как только будет можно вызовет нужное прерывание
mllis() можно вызывать но надо понимать, что сколько бы раз его не вызывать внутри одного цикла прерывания ты всегда получишь одно и тоже значение времени
other interrupts will be ignored (turned off) until the current one is finished
ошибочное утверждение. Вызов других прерываний действительно будет запрещен если внутрир прерывания их принудительно не разрешить, но прерываания не будут проигнорированы. МК взведет флаги в регистрах и как только будет можно вызовет нужное прерывание
mllis() можно вызывать но надо понимать, что сколько бы раз его не вызывать внутри одного цикла прерывания ты всегда получишь одно и тоже значение времени
мне нужно вызывать micros(), его первый вызов внутри прерывания даст корректный результат ?
сам не проверял, но не вижу причин чтобы это не сработало правильно, проверьте
а у меня Serial.print работает во время прерывания (выплевывает показания как и обычно). Почему?
а у меня Serial.print работает во время прерывания (выплевывает показания как и обычно). Почему?
почему бы ему не работать? просто все эти операции медленные, они внутри прерываний будут приводить к пропуску прерываний. В МК есть флаги и если доспутим во время одного прерывания случились условия для срабатывания другого - оно встанет в очередь и тут как бы нет проблем
но если одно прерывание выполняется так долго, что за это время условия для других прерываний сработали несколько раз - эти срабатывания будут пропущены
у вас напрмер могут начать не верно ходить часы millis() из-за пропуска прерываний от таймера