есть задачи, где требуется РТОС с вытесняющей многозадачностью, приоритетами, семафорами и прочим её удобством и возможностями (правда на АВР теперь такие задачи всё реже решают...)
а есть чтото типа как у ТС - помигать светодиодами невтакт... для такой задачи хватит и чего попроще...
для ассемблера я сделал небольшой набор простеньких функций, позволяющий писать несложную многопоточную задачу так, как пишутся обычные однопоточные с делаями... просто во время делая (а у однопоточных задач часто именно программное ожидание расходует больше всего процессорного времени) счётчик команд переключается на выполнение кода другого потока (сохранив предварительно адрес для возврата именно в эту же точку оставленного потока).
Когда я этот подход попытался применить в С, то у меня ничего не получилось... виной всему оказалась оптимизация - код могло закинуть внутрь скрытой от глаз программиста подфункции (понятно, что о контексте для неё никто не озаботился...) и при выходе срывало стек...
Пришлось написать средствами С но уже не функциями, а макросами...
для программиста код остаётся набором однопоточных задач, обрамленных указателями начала и конца задачи и с делаями внутри, а для компилятора этот код разворачивается в свитч-кейс структуру...
Результат (хоть он пока и не конечный) мне понравился: дефайны занимают 3 строчки, да и получающийся код можно даже в тини 13 уместить.
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...


