Страница 1 из 1

Декодер на Atmega16

Добавлено: Вт май 13, 2014 19:09:35
Tany
Доброго времени суток)
Нужно написать программу, которая расшифрует какое число закодировано в последовательности импульсов, которая поступает на ножку микроконтроллера.
стартовый бит 40 мкс, остальные по 20 мкс на 1 и 15 мкс на 0.
Принцип вроде понятен, нужно все время считывать значение на ножке, если считалась 1, то запускать таймер и смотреть сколько он насчитает,если 40 мкс продержалась 1, то начать прием данных по USART. Но как это реализовать в C++ ... :shock:
Помогите)))
Есть программа написанная в обратную сторону,т.е выводящая на осцилограф последовательность импульсов, соответствующую число от 0 до 255

Re: Декодер на Atmega16

Добавлено: Вт май 13, 2014 19:14:58
ИС-пытатель
В тему есть работа перекиньте. Здесь люди помогают, а не делают за Вас, да еще и за спасибо.

Re: Декодер на Atmega16

Добавлено: Пт май 23, 2014 09:50:02
Deer
Tany писал(а):Если 40 мкс продержалась 1, то начать прием данных по USART.
Интересное решение! Проглотит ли USART такую пачку импульсов, или выдаст пачку ошибок в ответ?

В подобной задаче у меня (только импульсы имели длительность от 1 до 7 миллисекунд, но это не принципиально) был фрагмент кода, который вызывался раз в 250 мкс и подсчитывал длительность уровня лог.1, а при переходе напряжения в лог.0 делал выводы (засовывал очередной принятый разряд в регистр и там формировал принятую комбинацию, по окончании приёма передавал управление во фрагмент кода, который занимался обработкой принятого). В Вашей задаче можно, уловив перепад уровня на ножке в лог.1, целых 15 мкс (15 тактов процессора на каждый мегагерц частоты тактирования! При частоте 8 МГц можно много чего успеть сделать за 100 тактов) заниматься другими важными делами и потом вернуться к анализу принимаемого импульса