Разные интервалы

Borv

✩✩✩✩✩✩✩
4 Фев 2021
23
1
Здравствуйте, подскажите, пожалуйста...
Есть логер данных с датчиков, но часть датчиков опрашиваются раз в 10сек, а часть 20'000раз в секунду.
Как их в цикле loop разнести правильно и синхронизировать их момент опроса? Считать время в секундах? А вдруг не попадёт момент опроса?
 

Borv

✩✩✩✩✩✩✩
4 Фев 2021
23
1
Как-то более цивильно это есть, типа:
void loop (20) {}
void loop (10000) {}
 

poty

★★★★★★✩
19 Фев 2020
3,004
898

@Borv, хоть бы намекнули что за МП? В остальном - используйте таймеры, micros(), процессы... Это - самый цивилизованный способ.
 

Сотнег

★★★★★★★
15 Янв 2020
4,139
1,445
@Borv,
вам стоит определиться с синхронностью в своей задаче.

Если важнее точность по времени, тогда каждый опрос должен быть на собственном таймере,

если важнее синхронность, чтобы между измерениями медленного датчика было одинаковое количество измерений быстрого, или, если важно, чтобы опрос обоих датчиков происходил почти одновременно, тогда таймер должен быть общий.
 
  • Лойс +1
Реакции: Borv

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,295
946
58
Марий-Эл
Первый таймер настраивается, что бы вызывать измерения 20 000 раз в секунду, в его прерывании запрос на измерение.
Второй таймер считает импульсы первого. На 20 000й раз третий таймер считает один раз, как досчитает до 10, в его прерывании вызывается измерение второго датчика.
Если взять МК с 32 разрядными таймерами, то можно обойтись двумя. Этот способ позволит синхронизировать измерение с пары датчиков. Но при одном условии, что команда замера не длится долго.
Программным способом этот разброс будет больше.
 
  • Лойс +1
Реакции: Borv