uriy 5 30 июня, 2016 Опубликовано 30 июня, 2016 · Жалоба Недавно сделал проект на NRF51822 очень мне понравились их либы простого планировщика и виртуальных таймеров на RTC. Планировщик просто хранит в себе указатели на функции. Таким образом сделана реакция на события. Виртуальные таймеры сделаны на связанных списках, прерывание RTC не щелкает все время, а отрабатывает только когда наступает ближайшее событие. Все это замечтально работает и оптимизировано для низкого потребления. Решил эти исходники перенести на STM8L+SI4432. Обнаружил что для работы со связанными списками для таймера они используют программные прерывания. В STM8L они есть. Я применял разные микроконтроллеры и DSP процессоры и в явном виде никогда не использовал программные прерывания. Лишь только при использовании операционных систем. Я до сих пор не могу понять зачем нужны программные прерывания и всегда обходился без них. Кто-то может пояснить почему без них не обойтись? А еще лучше может быть у кого-то уже есть какое-то подобие планировщика для STM8L с виртуальными таймерами? Изначально этот простенький проект был сделан на protothreads, но я так и не смог оптимизировать энергопотребление без существенного рефакторинга кода. Когда сделал одну железку на NRF51822 решил вот оно то что мне надо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arhiv6 20 30 июня, 2016 Опубликовано 30 июня, 2016 · Жалоба А ссылку на эти либы дадите? Посмотреть, хочу, что там за планировщик такой. И что такое программные прерывания (чем они отличаются от аппаратных)? Есть такой простейший планировщик - он легко на любой контроллер переносится. Подойдёт? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 5 30 июня, 2016 Опубликовано 30 июня, 2016 · Жалоба https://developer.nordicsemi.com/nRF5_SDK/nRF5_SDK_v11.x.x/ И что такое программные прерывания (чем они отличаются от аппаратных)?Ну как же они сейчас в любом микроконтроллере есть. Программное прерывание возникает по вызову из кода, а не по внешнему событию. Вашу ссылку гляну, для меня ключевым является то что планировщик должен быть tickless. И при этом нужна отработка временных интервалов с помощью RTC. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 245 1 июля, 2016 Опубликовано 1 июля, 2016 · Жалоба Я до сих пор не могу понять зачем нужны программные прерывания и всегда обходился без них. Кто-то может пояснить почему без них не обойтись? Ну например - для того же, для чего они используются в ОС: для запуска каких-либо процессов при возникновении некоторых событий. А без программных прерываний остаётся только суперцикл. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться