millis() micros() переполнение счетчика

sunjob
sunjob аватар
Offline
Зарегистрирован: 18.07.2013

добрый день

разбираюсь с проектом, работающим со временем...

для определения задержек используются функции

- millis()
- micros()

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

есть одно но! ПЕРЕПОЛНЕНИЕ СЧЕТЧИКА

если оно произойдет во время события, т.е. между замерами, то "искомое время задержки" будет вычислено неверно

 

вопрос: какие будут по этому мысли, можно ссылки, ключевые слова итд

 

спасибо

MaksMS
Offline
Зарегистрирован: 11.03.2013

Переписать функцию и добавить счетчик переполнения в файле wiring.c или наверно лучше просто обнулять счетчик этих функций после измерения:

timer0_millis для millis()

timer0_overflow_count для  micros()

sunjob
sunjob аватар
Offline
Зарегистрирован: 18.07.2013

я об этом думал (просто названия функций не знал :о)

 

дополнительный вопрос номер 2:

подводные камни есть? (в связи с принудительным обнулением счетчика, по идее это завязано на прерывания итд...)

 

 

sunjob
sunjob аватар
Offline
Зарегистрирован: 18.07.2013

дополнительный вопрос номер 3:

при переводе проекта с арудины на нативный AVR - какие будут подводные камни (связанные именно с данной темой)

можно линки, ключ.слова итд

gregoryl
Offline
Зарегистрирован: 09.09.2013

sunjob пишет:

добрый день

разбираюсь с проектом, работающим со временем...

для определения задержек используются функции

- millis()
- micros()

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

есть одно но! ПЕРЕПОЛНЕНИЕ СЧЕТЧИКА

если оно произойдет во время события, т.е. между замерами, то "искомое время задержки" будет вычислено неверно

 

вопрос: какие будут по этому мысли, можно ссылки, ключевые слова итд

 

спасибо

 

А можно пример кода где это вам мешает ?

Что конкретно у вас там не работает.....

sunjob
sunjob аватар
Offline
Зарегистрирован: 18.07.2013

с первым вопросом разобрались, осталисль 2й и 3й