Цитата(eugmai86 @ Mar 20 2011, 18:15)

И в этот момент мне нужно посчитать сколько же было послано пачек 5,10, 15, или 20. Как не знаю. Застрял. Помогите. Может быть есть стандартные библиотеки для МК на этот случай.
Пишу в CVAVR
Очень просто. Цифровой автомат.
Состояние S0: приемник ждет прерывания. При получении прерывания приемник переходит в S1
Состояние S1: приемник принимает импульсы (первые пять). При получении первых 5-ти импульсов, если через заданное время больше импульсов принято не было, то приемник считает, что это команда из пяти импульсов и переходит в S0. Если же импульсы были, то приемник переходит в S2.
Состояние S2: приемник принимает импульсы (очередные пять). При получении очередных 5-ти импульсов, если через заданное время больше импульсов принято не было, то приемник считает, что это команда из десяти импульсов и переходит в S0. Если же импульсы были, то приемник переходит в S3. И так далее.
Но так делать не надо. Почему бы просто не передавать команды по UART, защищая каждую команду (например, такую: "CMD1", "CMD2", ...) байтом CRC8 (или словом CRC16, или CRC32) ? Просто, стандартно, длина команды всегда постоянна, легко добавлять новые команды, реализаций CRC готовых масса ...
Сообщение отредактировал kovigor - Mar 20 2011, 16:07