Чем он не стандартный ?
Чем он не стандартный ?
частота 26 килогерц... то есть 52000 фронтов импульсов в секунду, в минуту в 60 раз больше. это вам нужно МК с таймером, который очень-очень быстро считает. да и памяти под "столбик" значений интервалов надо под 400 килобайт - это неплохой такой микроконтроллер нужен, либо городить целый огород с внешним ОЗУ.Олегыч1 писал(а):за пол секунды более 13 тыс импульсов набежало. А мне нужно допустим минуту повторить.
зачем?! ваш "программный код", грубо говоря, будет сводиться к описанным мной 5 строкам. ну, плюс еще пару строк на организацию цикла - итого не больше 10 строк на основную часть. плюс всякая инициализация, то-сё - в пару сотен строк основной код уложится, как пить дать. что вы там писать собрались круглосуточно?!Олегыч1 писал(а):Это я только неделю с утра до вечера буду писать программный код
можно и так, если немного этот CSV-файл руками подправить. но тогда получится вариант "одна прошивка - один генерируемый код", никакой универсальности.Олегыч1 писал(а):скопировать/ вставить CSV файл в нее
а универсальное решение состоит из двух частей: сначала захватываем при помощи таймера длительности промежутков между фронтами сигнала и запоминаем их, а потом делаем наоборот, как я уже описал - берем запомненные длительности и формируем сигнал. только, как я ранее писал, быстродействие для вашего сигнала нужно дикое и памяти овердохрена... вы точно правильно условие задачи формируете?Олегыч1 писал(а):Главное просто повторить точно такие же длительности импульсов и паузы между ними.
Такой вариант меня бы вполне устроил. Я, кстати, на него и рассчитывалможно и так, если немного этот CSV-файл руками подправить. но тогда получится вариант "одна прошивка - один генерируемый код", никакой универсальности.
программа на Си понимает описание массива в таком виде:Олегыч1 писал(а):А что именно нужно подправить в CSV файле?
Код: Выделить всё
int array[] = {
1234,
3334,
23,
3944,
44545
}КРАМ, это применимо для AVR? А в частности для Атмега 8 ?Эти модули суть есть режимы работы таймеров.
Таймер при включении в режим захвата при наличии на ВХОДЕ ЗАХВАТА активного фронта (активный фронт настраивается) в регистр захвата АППАРАТНО записывается текущее значение таймера. Таким образом, пользователь получает отметки времени (таймер это по сути часы) на каждый фронт. Разность времени соседних фронтов и есть время между событиями.
При включении таймера в режим OutputCompare (PWM) полученные при захвате времена вставляем в регистр периода и дьюти мы генерируем на выходе искомый записанный ранее сигнал.
так для него подход совсем другой требуется! вам надо захватывать не несущую частоту 36-41 кГц, а модулирующую, а там частота ниже во много раз! захватывать несущую нужен ARM, а огибающую - любой AVR справится. вы своим логическим анализатором захватываете с фотодиода, небось, а вы захватите с приёмника TSOP*** и посмотрите, как оно все существенно проще станет! и, кстати, многие логические анализаторы сразу код распознают, а имитировать отправку известного кода по известному стандарту - вообще пара пустяков!Олегыч1 писал(а):Попробую именно с него и начать.
- Как именно это делается? на примере атмега 8и, кстати, многие логические анализаторы сразу код распознают, а имитировать отправку известного кода по известному стандарту - вообще пара пустяков!
приемники и пульты отличаются по частоте несущей. несущая практически всегда лежит в диапазоне 32-45 кГц, крайне редки случаи, когда она вне этого диапазона. в среднем можно считать, что несущая 36-38 кГц. любой пульт на эту частоту будет принимать сигналы и на другой несущей в упомянутом диапазоне, но дальность приема, конечно, будет существенно ниже. для экспериментов в пределах 1-2 метров о частоте несущей и соответствующего ей приемника можно не волноваться, считайте, что любой TSOP**** вам подойдет к любому пульту.Олегыч1 писал(а):приемник может быть абсолютно любой?
есть несколько способов.Олегыч1 писал(а):Как воспроизвести теперь распознанный сигнал?
Обсуждение:Для того чтобы не создавать огромную базу команд различных пультов, я решил записывать IR-команды с оригинального пульта в память микроконтроллера и впоследствии их воспроизводить (своего рода диктофон для IR-команд). Обучаемому пульту нет разницы, по какому протоколу работает оригинальный пульт, нет разницы какого формата и длины IR-команда, он записывает всю передаваемую оригинальным пультом информацию в сыром (RAW) виде и точно так же воспроизводит.