...делать нужно так, как нужно. А как ненужно - делать не нужно (С) Винни-Пух :)
-
- Нафига прерывание по переполнению, если можно вести счетчик и
каждый 10-й вызов выполнять дополнительные действия? - Vit(12.03.2025 08:25)
- Зачем счётчик? В прерывании будильника "А" (OCR1A или что там, в
4809) к нему прибавляется 1 мс, а в прерывании будильника "В" 10
мс. Таймер молотит без останова, с переходом FFFF -> 0000.
Будильники тоже. Арифметика вся беззнаковая, естессно, "только
вперёд". И всё. - vpv.vpv(12.03.2025 10:55)
- Любопытствую, зачем иметь в системе несколько разных часов? Вот
Эдди в прошлый раз тоже возмущался, что ему не хватает
стотыщмильенов таймеров. По-моему регулярные нечастные вызовы
вполне укладываются в КА более частых. Пришла очередь, проверили по
единым часам свой заданный timestamp - неа, еще пауза не прошла,
пропускаем - и bigloop или чего там у вас дальше движется. Главное,
чтобы часы тикали не реже, чем минимально необходимый квант времени
и переполнение их reZident(51 знак., 12.03.2025 11:13)
- Не часов, а несколько будильников иногда очень полезно. Всё от
задач зависит. У меня будильники формируют временные ворота для
приёма сигнала. Таймер молотит на основной частоте (20МГц), дискрет
50нс, счёт на доли микросекунд. Поэтому, всё максимально заведено
на аппарат. Бонус аппаратной реализации (в отличии от програмного
опороса) - отсутствие джиттера, чОткие времянки. - vpv.vpv(12.03.2025 13:50)
- я бы сказал, что это не бонус, а достигнутая (если нет других
прерываний) цель в рамках зачем-то поставленной вот такой особенной
задачи. - Vit(12.03.2025 14:14)
- В конкретно данном (очень специфичном) проекте нет никаких прерываний, вообще. )) - vpv.vpv(13.03.2025 14:52)
- А если такой задачи не было, то это ещё одна решённая задача, которой не было... - SciFi(12.03.2025 14:35)
- я бы сказал, что это не бонус, а достигнутая (если нет других
прерываний) цель в рамках зачем-то поставленной вот такой особенной
задачи. - Vit(12.03.2025 14:14)
- обычно хватает "мягкого риалтайма" - один счетчик тикает без остановки, а интервалы рассчитываются вычитанием беззнаковых. "удлинить счетчик" - задача тривиальная. - Vit(12.03.2025 11:30)
- так легче и надёжнее всего разделяются два круга приоритетных
очередей задач. В быстром таймере - реалтайм драйверы, требующие
максимального внимания, в медленном, тоже реалтайм, но
второстепенные. Обычно у меня в 10mS живут драйвер какого-нить
дисплея, клавиатуры, индикаторов, всякие службы вайфаев с
блюпуппами с обработкой таймаутов и событий, звук и прочее такое. В
первом круге приоритетов - Adept(279 знак., 12.03.2025 11:19)
- На самом деле "реалтайм" редко бывает, его мало и его легко
изолировать. Если у вас везде реалтайм, это самообман и/или что-то
неправильно сделано. - SciFi(12.03.2025 11:21)
- есть множество способов
неправильнорешить одну и ту же задачу. Каждому подходу - своё место в энтом мире :)) Adept(363 знак., 12.03.2025 11:26)
- есть множество способов
- На самом деле "реалтайм" редко бывает, его мало и его легко
изолировать. Если у вас везде реалтайм, это самообман и/или что-то
неправильно сделано. - SciFi(12.03.2025 11:21)
- Именно. Без лишних сущностей, как завещал великий Оккам. - SciFi(12.03.2025 11:14)
- Не часов, а несколько будильников иногда очень полезно. Всё от
задач зависит. У меня будильники формируют временные ворота для
приёма сигнала. Таймер молотит на основной частоте (20МГц), дискрет
50нс, счёт на доли микросекунд. Поэтому, всё максимально заведено
на аппарат. Бонус аппаратной реализации (в отличии от програмного
опороса) - отсутствие джиттера, чОткие времянки. - vpv.vpv(12.03.2025 13:50)
- Любопытствую, зачем иметь в системе несколько разных часов? Вот
Эдди в прошлый раз тоже возмущался, что ему не хватает
стотыщмильенов таймеров. По-моему регулярные нечастные вызовы
вполне укладываются в КА более частых. Пришла очередь, проверили по
единым часам свой заданный timestamp - неа, еще пауза не прошла,
пропускаем - и bigloop или чего там у вас дальше движется. Главное,
чтобы часы тикали не реже, чем минимально необходимый квант времени
и переполнение их reZident(51 знак., 12.03.2025 11:13)
- чтобы не перегружать хэндлер. Во втором прерывании - второй круг
задач (обычно всякие второстепенные драйвера дисплеев, клавиатуры,
звук, шины и прочее такое - Adept(12.03.2025 10:54)
- А входо-выход второго хэндлера не считается. Если 2 обработчика
перегружает систему по времени, то по-любому задница. Если Сompare
загружать значением таймера, но взятом на выходе обработчика, плюс
сколько нужно, то если он один, не перегрузишься запредельно, но
можно получить больше ровной 1 мс. Если сделать ногодрыг, то можно
посмотреть осциллом - Vit(12.03.2025 11:17)
- в быстром таймере безстековая очередь быстрых и важных, специально
оптимизированных под скорость, драйверов. Во втором (10mS) уже
вытеснялка и/или стековая кооперативка менее важных (но как правило
тоже достаточно быстрых) задач, но которые можно "притормаживать"
на досрочном выходе/паузе, по необходимости. - Adept(12.03.2025 11:21)
- кроилово приводит к попадалову(С) - Vit(12.03.2025 11:33)
- Мы его теряем... Впрочем, кого я обманываю? Мы его и не находили :-) - SciFi(12.03.2025 11:34)
- кроилово приводит к попадалову(С) - Vit(12.03.2025 11:33)
- в быстром таймере безстековая очередь быстрых и важных, специально
оптимизированных под скорость, драйверов. Во втором (10mS) уже
вытеснялка и/или стековая кооперативка менее важных (но как правило
тоже достаточно быстрых) задач, но которые можно "притормаживать"
на досрочном выходе/паузе, по необходимости. - Adept(12.03.2025 11:21)
- А входо-выход второго хэндлера не считается. Если 2 обработчика
перегружает систему по времени, то по-любому задница. Если Сompare
загружать значением таймера, но взятом на выходе обработчика, плюс
сколько нужно, то если он один, не перегрузишься запредельно, но
можно получить больше ровной 1 мс. Если сделать ногодрыг, то можно
посмотреть осциллом - Vit(12.03.2025 11:17)
- Зачем счётчик? В прерывании будильника "А" (OCR1A или что там, в
4809) к нему прибавляется 1 мс, а в прерывании будильника "В" 10
мс. Таймер молотит без останова, с переходом FFFF -> 0000.
Будильники тоже. Арифметика вся беззнаковая, естессно, "только
вперёд". И всё. - vpv.vpv(12.03.2025 10:55)
- Нафига прерывание по переполнению, если можно вести счетчик и
каждый 10-й вызов выполнять дополнительные действия? - Vit(12.03.2025 08:25)