Как легко и просто решить такую задачу (см. в теле). Я наваял RTOS для этого. Причём даже с кооперативной, а вытесняющей многозадачностью. Но тут говорят очень часто, что RTOS в топку. А как можно решать такую задачу ещё? Жду ваших рекомендаций
Есть микроконтроллер ATmega ..Он управляет 8-ю светодиодами и буквенно-цифровым индикатором и обслуживает 6 кнопок. Кроме того, взаимодействует с другими девайсами по 3-м интерфейсам:
1)по UART0
2)по UART1
3)по интерфейсу с «ручным» управлением дёрганьем «ноги» порта
Каждый светодиод отображает 4 возможных состояния некоторого узла:
1) постоянно горит
2) постоянно погашен
3) мигает с частотой 2 Гц
4) подмигает с частой 0,5 Гц
Повторяю, таких светодиодов 8(!!!)
Таким образом микроконтроллер кроме выполнения фоновых задач, не требующих жёсткой временной привязки, должен успевать:
1) принимать пакеты и отвечать по обоим UART-ам с задержкой ответа не более заданной
2) принимать пакеты и отвечать по интерфейсу с «ручным» управлением {т.е. времянку сигнала я должен сам сгенерить программно} с задержкой ответа не более заданной
3) реагировать на нажатие любой из 6-ти кнопок и их комбинации {определять какую команду требуется выполнить в данном режиме и выполнять соответствующую команды за заданное время}
4) соблюдать временные параметры отображения на экране {например заданную скорость скроллинга по горизонтали и вертикали, заданное время «висения» сообщения об ощибке и т.п.}
5) генерить времянку каждого из 8-ми светодиодов в зависимости от состояния, которое нужно отобразить на этом светодиоде
6) отслеживать тайм-ауты 20-ти с лишним процессов и при наступлении тайм-аута предпринимать соответствующие действия
Кто какое видит программное решение для такой задачи?