Декодер на Atmega16

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 1
Зарегистрирован: Вт май 13, 2014 19:00:52

Сообщение Tany »

Доброго времени суток)
Нужно написать программу, которая расшифрует какое число закодировано в последовательности импульсов, которая поступает на ножку микроконтроллера.
стартовый бит 40 мкс, остальные по 20 мкс на 1 и 15 мкс на 0.
Принцип вроде понятен, нужно все время считывать значение на ножке, если считалась 1, то запускать таймер и смотреть сколько он насчитает,если 40 мкс продержалась 1, то начать прием данных по USART. Но как это реализовать в C++ ... :shock:
Помогите)))
Есть программа написанная в обратную сторону,т.е выводящая на осцилограф последовательность импульсов, соответствующую число от 0 до 255
Последний раз редактировалось Tany Вт май 13, 2014 19:32:46, всего редактировалось 1 раз.
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 577
Зарегистрирован: Ср июн 19, 2013 08:10:48
Откуда: Москва, СПб, Липецк, Рязань

Сообщение ИС-пытатель »

В тему есть работа перекиньте. Здесь люди помогают, а не делают за Вас, да еще и за спасибо.
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 211
Зарегистрирован: Пт июл 31, 2009 19:45:11
Откуда: Санкт-Петербург

Сообщение Deer »

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

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

Вернуться в «AVR»