Полная версия этой страницы:
Ищу tickless OS для stm8l
Для low power устройства на stm8l нужна tickless os. Может быть даже не операционка в полном смысле а какой-то планировщик.
Мне требуются флаги либо мютексы либо семафоры для сигнализации о прерывании и работа с временными интервалами.
Никакие очереди, приоритеты задач с вытеснением, динамические создание задач не нужны.
Оптимизировано должно быть потребление, быстродействие не требуется.
Может быть есть просто какие-то библиотеки.
На данный момент мне очень понравилось как это сделано в nrf51822.
Но там много лишнего, если не найдётся ничего готового наверно займусь переносом того кода
Ну если Вам не нужны вытесняемые задачи с приоритетами и разделяемый доступ к ресурсам нескольких таких задач, то почему не сделать просто на суперцикле?
Общий алгоритм:
Инициализация, запуск всей периферии с ISR, запус суперцикла.
В фоновом цикле проверяем все флаги событий. Если есть какое-то событие - сброс флага и обработка события.
Если при очередном проходе суперцикла не обнаружено ни одного флага - уход в сон. Если было хотя-бы одно событие - идём в начало цикла.
В ISR-ах - установка флагов событий с выходом из сна (если флаг установлен, если нет - возврат в сон из прерывания).
Делал подобный проект на MSP430. Там очень удобно - запрещаешь прерывания, проверяешь наличие хотя-бы одного флага события, если нету - уход в сон с одновременным разрешением прерываний (атомарно).
И из прерываний там можно возвращаться либо со снятием флага сна либо без (с возвратом в сон).
Там у меня есть просыпания от внешних сигналов и от таймера. Во время сна работает только один низкочастотный генератор, тактирующий пару таймеров.
И никакой ОС не нужно.
Да так и есть ОС не нужна STM8Lxx и так ресурсов едва хватает, тайминги вырастут что плохо, к тому же потребление будет немного больше с ОС. Но я уже перешел на STM32L0xx, потребляют меньше чем STM8Lxx, считают быстрее. Немного дороже, но приемлемо. Ряд задач STM8Lxx в rf уже не тянет, слабоват.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.