RootAdmin » 26 мар 2015, 14:50
Попробую объяснить.
Итак, определяем пременные, настраиваем порты ввода-вывода, настраиваем UART
Настраиваем прерывание на прием байта по uart. В прерывании - в зависимости от счетчика-указателя байта команды (то есть - передается сначала имя команды,например код символа "W", после приема полного имени команды либо символа конца имени, пробела например) вычисляется ожидаемая длина данных.
Проверяется счетчик таймаута команды (если нужен), если не запущен и символ первый - запускаем.
Инкрементим указатель(счетчик символов) текущей команды, записываем принятый байт в позицию указателя в массив команды. Если символ = окончание данных и длина данных соответствует ожидаемой - то взводим флаг выполнения (или переписываем массив команды в массив выполнения.
в основном цикле проверяем не пуст ли массив выполнения и не взведн ли флаг (переменная) готовности команды, выполняем ее.
Команды можно определить как состоящие например из четырех символов:
1. Имя команды. W - запись (byte)
2. Номер вывода (byte)
3. Что записать (byte) байт конечно. Хотя - если выводов меньше 127 то можно использовать старший бит из 3 символа и сэкономить время
4. конец команды, символ 13 например (byte) сам использую, чтоб из терминала тестировать.
После приема и выполнения команды контроллер может что-нибудь ответить - тут все зависит от фантазии и потребностей.
Дым, идущий из всех устройств в помещении предвещает появление электрика.