что касается самой темы топика, я из крайности в крайность бросаюсь. сначала был переполнен ликованием от удобства RTOS, сейчас переживаю глубокое разочарование... причем, скорее разочарование в том, что на платформе AVR развернуться в полной мере с RTOS достаточно непросто, а ломка сознания очень большая. просто кардинальная смена парадигмы программирования - это большой шок. привычки из программирования под винду тут никак не подходят.
в общем, я сейчас весьма в растрепанных чувствах. занимаюсь своим проектом уже вне парадигмы RTOS, хотя под её влиянием получается что-то вроде собственной кооперативки.
единственное, что я могу уверенно сказать всем, кто захочет освоить RTOS в AVR: никогда не смотрите видеоролики и не читайте статьи о примерах "мигания" светодиодами! ничего общего с реальными задачами такие примеры не имеют абсолютно, и способны только задурить голову. еще раз: демонстрация возможностей RTOS на примере мигания светодиодами - это ОБМАН, жульничество. не ведитесь на это!
еще одно я понял: RTOS на самом деле совсем не сложная штука. главная проблема - сделать переключение контекста, т.е. суметь запихать в один стек все регистры, затем перейти на другой стек и вытащить все регистры из него. все прочее по сути - реализация атомарного доступа к разным глобальным структурам.
и еще одно я понял: не надо бояться обработчиков прерываний! любая RTOS завязана на акивном использовании вызовов функций из обработчиков прерываний, и это никого не смущает. следовательно, не надо этого бояться и в проектах без RTOS. например, все советуют делать обработчик как можно более коротким и быстрым, при этом без обращений к функциям системных библиотек и вообще из других модулей - дескать, ради этого в стек сохраняется много регистров, что замедляет... так вот: насчет системных (библиотечных то есть) функций - требование справедливое, надо быть с ними очень осторожным, т.к. они в большинстве своем не реентерабельны. а вот на счет "своих" функций - фигня: если хотите, то смело их используйте в прерываниях и не бойтесь ничего. конечно, если вы не делаете систему, латентность реакции на запрос прерывания которой должна быть в 50 наносекунд и не более


