Как повторить последовательность импульсов?
Как повторить последовательность импульсов?
Уважаемы знатоки, образовалась проблема которая, с одной стороны- простая, а с другой- где-то даже непонятная! Я опишу, ситуацию! Есть два устройства- сигнальное, и исполнительное. Связаны они- по синезубу. Работает все это так: в сигнальном есть инфракрасный излучатель и ИК- приемник. Когда к нему подносят что-либо, ИК- сигнал отражается от этого "чего-либо" и попадает на ИК- приемник, который выдает посделовательность импульсов которые, в свою очередь, передаются по синезубу на исполнительне устройство и оно- запускает чего-то там. При убирании этого "чего-либо", импульсы пропадают и испольнителбное- возвращается в исходное.
Последовательность передаваемых импульсов мне удалось снять. В связи с чем вопрос: как можно, средствами МК повторить данную последовательность?
Последовательность передаваемых импульсов мне удалось снять. В связи с чем вопрос: как можно, средствами МК повторить данную последовательность?
- Вложения
-
- photo_2026-01-29_09-17-35.jpg
- (244.11 КБ) 531 скачивание
Последний раз редактировалось Dmitrudo Чт янв 29, 2026 09:18:46, всего редактировалось 1 раз.
- linux_rulezz
- Вымогатель припоя
- Сообщения: 606
- Зарегистрирован: Пн сен 15, 2025 08:43:23
- Откуда: Маленький СССР посреди шариатской республики
Re: Как повторить последовательность импульсов?
Да элементарно: настроить таймер с DMA. Период импульсов одинаковый, меняется лишь заполнение → в регистр CCRx по DMA передаем очередное значение. И будет щщассье.
Я так и всякими "адресуемыми светодиодами" управлял, и 1-wire…
Я так и всякими "адресуемыми светодиодами" управлял, и 1-wire…
Windows must die!
Re: Как повторить последовательность импульсов?
Да чего уж проще - поскольку частота низкая, в районе звуковой - записать на магнитофон (или в файл) - затем воспроизводить.
Если последовательность всегда одна и та же - сдвиговый регистр + ПЗУ. Если даже и не одна, а конечное их число - то же самое с выборкой номера последовательности. И никаких тебе DMA и MK
Взлом домофона?

Если последовательность всегда одна и та же - сдвиговый регистр + ПЗУ. Если даже и не одна, а конечное их число - то же самое с выборкой номера последовательности. И никаких тебе DMA и MK
Взлом домофона?
Re: Как повторить последовательность импульсов?
[uquote="Jack_A",url="/forum/viewtopic.php?p=4783796#p4783796"]Да чего уж проще - поскольку частота низкая, в районе звуковой - записать на магнитофон (или в файл) - затем воспроизводить.
Если последовательность всегда одна и та же - сдвиговый регистр + ПЗУ. Если даже и не одна, а конечное их число - то же самое с выборкой номера последовательности. И никаких тебе DMA и MK
Взлом домофона?
[/uquote]
Нет, не домофона. Раскажу если- весь форум долго ржать будет!
Приблуда домашнего использования. Китайская. Работает- как я описывал выше- при приближении к сигнальному устройству по блютуз отпраляется команда на открытие. Я хочу, чтобы срабатывало не только при приближении к датчику, а через определенные промежутки времени, допустим- каждый час.
Грубо говоря, МК каждый час должен генерировать такую же последовательность импульсов- чтобы сработало исполнительное устройство.
Если последовательность всегда одна и та же - сдвиговый регистр + ПЗУ. Если даже и не одна, а конечное их число - то же самое с выборкой номера последовательности. И никаких тебе DMA и MK
Взлом домофона?
Нет, не домофона. Раскажу если- весь форум долго ржать будет!
Приблуда домашнего использования. Китайская. Работает- как я описывал выше- при приближении к сигнальному устройству по блютуз отпраляется команда на открытие. Я хочу, чтобы срабатывало не только при приближении к датчику, а через определенные промежутки времени, допустим- каждый час.
Грубо говоря, МК каждый час должен генерировать такую же последовательность импульсов- чтобы сработало исполнительное устройство.
- vlasovzloy
- Друг Кота
- Сообщения: 20068
- Зарегистрирован: Чт янв 26, 2012 16:44:29
- Откуда: Таксимо
Re: Как повторить последовательность импульсов?
Есть такая штука цифровой магнитоыон isd первые буквы только помню. На али одно времч много продавсли платы готовые с микроыоном и динамиком и конструкторы и готовые уже
Мои поставщики запчастей с отличной репутацией
texnomag.ru
radioremont.com
pl-1.org
4ip.info
elitan.ru
texnomag.ru
radioremont.com
pl-1.org
4ip.info
elitan.ru
Re: Как повторить последовательность импульсов?
[uquote="Dmitrudo",url="/forum/viewtopic.php?p=4783762#p4783762"]вопрос: как можно, средствами МК повторить данную последовательность?[/uquote]
очень просто)) с помощью обычного копировальщика пультов...

-берём любой МК.
-нажимаем на кнопочку "записать код".
-передаём код... МК измеряем длительность импульсов и сохраняет в своей памяти.
-потом нажимаем на кнопочку "воспроизвести код".
-МК берёт из своей памяти длительность импульсов и воспроизводит код.
Всё))

очень просто)) с помощью обычного копировальщика пультов...
-берём любой МК.
-нажимаем на кнопочку "записать код".
-передаём код... МК измеряем длительность импульсов и сохраняет в своей памяти.
-потом нажимаем на кнопочку "воспроизвести код".
-МК берёт из своей памяти длительность импульсов и воспроизводит код.
Всё))
- Вложения
-
- Screenshot_1.jpg
- (52.21 КБ) 304 скачивания
- linux_rulezz
- Вымогатель припоя
- Сообщения: 606
- Зарегистрирован: Пн сен 15, 2025 08:43:23
- Откуда: Маленький СССР посреди шариатской республики
Re: Как повторить последовательность импульсов?
roman.com писал(а):очень просто
Угу. Берем любой МК, а потом в течение месяца пишем функционал "копировальщика" ☺roman.com писал(а):берём любой МК
Windows must die!
- АлександрЛ
- Друг Кота
- Сообщения: 43815
- Зарегистрирован: Пн ноя 30, 2009 03:00:01
- Откуда: Нерезиновая
Re: Как повторить последовательность импульсов?
А зачем? Если нужно повторить именно вот эту последовательность:linux_rulezz писал(а):Берем любой МК, а потом в течение месяца пишем функционал "копировальщика"
Спойлер
Непонятна длительность одного импульса, и, если нужно точно повторить завершающий импульс, то делаете, например, три "такта"-
00011100011111100011111100011100011100011111100011101
Просто жестко записываете эту последовательность в .. Ну, думаю, Тини13 хватит
зы.. Если это ИК светодиод, то "единичка" это светодиод светится или нет? Или вы брали сигнал с выхода TSOP-а?
- Муркиз
- Друг Кота
- Сообщения: 25763
- Зарегистрирован: Пн фев 09, 2009 22:19:49
- Откуда: Когда-то был прекрасный город для людей
Re: Как повторить последовательность импульсов?
Инвертировать ее сначала надо. И потом уточнить - это стековая запись или как ?
Re: Как повторить последовательность импульсов?
[uquote="АлександрЛ",url="/forum/viewtopic.php?p=4783830#p4783830"]
то это, если я правильно понял, 0101101101010110101
Непонятна длительность одного импульса, и, если нужно точно повторить завершающий импульс, то делаете, например, три "такта"-
00011100011111100011111100011100011100011111100011101
Просто жестко записываете эту последовательность в .. Ну, думаю, Тини13 хватит
зы.. Если это ИК светодиод, то "единичка" это светодиод светится или нет? Или вы брали сигнал с выхода TSOP-а?[/uquote]
Извиняюсь, это я тупанул картинку неполную выложил и там длительность непонятна. Заменил картинку.
Длина пачки- прим. 9 мс. Да, это выход ТСОПа. Получается, единичка- это светодиод потухший, нолик- светится. Тогда последовательность будет
все как у вас и написано, только инвертировано?
В схеме каждую секунду проскакивает "лог 0" синхроимпульс длит 9 мс, когда нет отраженного от Ик-светодиода света- импульсы без "наполнения", когда появляется "отраженка" то внутри синхроимпульса на выходе ТСОП и появляется данная последовательность импульсов- как на фото.
То есть, как я понимаю, записать на Тини 13 последовательность- это пол дела, надо еще синхронизировать их...
Задача чем дальше тем кудрявей...
А зачем? Если нужно повторить именно вот эту последовательность:linux_rulezz писал(а):Берем любой МК, а потом в течение месяца пишем функционал "копировальщика"
Спойлер
Непонятна длительность одного импульса, и, если нужно точно повторить завершающий импульс, то делаете, например, три "такта"-
00011100011111100011111100011100011100011111100011101
Просто жестко записываете эту последовательность в .. Ну, думаю, Тини13 хватит
зы.. Если это ИК светодиод, то "единичка" это светодиод светится или нет? Или вы брали сигнал с выхода TSOP-а?[/uquote]
Извиняюсь, это я тупанул картинку неполную выложил и там длительность непонятна. Заменил картинку.
Длина пачки- прим. 9 мс. Да, это выход ТСОПа. Получается, единичка- это светодиод потухший, нолик- светится. Тогда последовательность будет
все как у вас и написано, только инвертировано?
В схеме каждую секунду проскакивает "лог 0" синхроимпульс длит 9 мс, когда нет отраженного от Ик-светодиода света- импульсы без "наполнения", когда появляется "отраженка" то внутри синхроимпульса на выходе ТСОП и появляется данная последовательность импульсов- как на фото.
То есть, как я понимаю, записать на Тини 13 последовательность- это пол дела, надо еще синхронизировать их...
Задача чем дальше тем кудрявей...
Re: Как повторить последовательность импульсов?
Подобную же задачу (только для пультов сигналок авто) делал в 1996 году на платке от АОНа с Z80 на борту.
Никаких МК с DMA тогда еще не было. Да и юзеров линукса было полторы штуки.
Поэтому сейчас, чтобы не улезать в дебри, проще всего это сделать (как уже сказали) на любом МК, обычным ногодрыгом.
Никаких МК с DMA тогда еще не было. Да и юзеров линукса было полторы штуки.
Поэтому сейчас, чтобы не улезать в дебри, проще всего это сделать (как уже сказали) на любом МК, обычным ногодрыгом.
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Re: Как повторить последовательность импульсов?
[uquote="АлександрЛ",url="/forum/viewtopic.php?p=4783830#p4783830"]думаю, Тини13 хватит[/uquote]
ее функционала хватит чтоб и одновременно 6 подобных асинхронных сигнала генерить
а эта задача - элементарнейшая,
1 таймер настраиваем на 500uS
в его прерывании:
сбрасываем С-флаг
делаем 16битный сдвиг регистра через С
С флаг копируем в gpio порт (выход).
тогда 0- будет пассивный уровень, 1- активный. (чтоб проинвертировать надо устанавливать С в 1 а не в 0)
перед этим загружаем в нужный регистр 16бит слово (последовательность 1-битных сэмплв сигнала)
и делаем это каждый раз когда хотим послать команду.
если не хватило 16 бит для записи сэмплов (здесь похоже 18 если не ошибся) то загружаем и крутим 2 регистра или чуть усложняем алгоритм обработчика перрываний чтоб он не тик-семплы загонял сразу а биты кода (пропускал 1 доп тик на очередную выдвинутую 1 и не пропускал на очередной 0 при формировании импульса, это добавит 2 условных оператора и 2 бита для хранения флагов - состояний)
все! это 10..20 avr инструкций не считая алгоритма выбора момента отсылки команды !
ее функционала хватит чтоб и одновременно 6 подобных асинхронных сигнала генерить
а эта задача - элементарнейшая,
1 таймер настраиваем на 500uS
в его прерывании:
сбрасываем С-флаг
делаем 16битный сдвиг регистра через С
С флаг копируем в gpio порт (выход).
тогда 0- будет пассивный уровень, 1- активный. (чтоб проинвертировать надо устанавливать С в 1 а не в 0)
перед этим загружаем в нужный регистр 16бит слово (последовательность 1-битных сэмплв сигнала)
и делаем это каждый раз когда хотим послать команду.
если не хватило 16 бит для записи сэмплов (здесь похоже 18 если не ошибся) то загружаем и крутим 2 регистра или чуть усложняем алгоритм обработчика перрываний чтоб он не тик-семплы загонял сразу а биты кода (пропускал 1 доп тик на очередную выдвинутую 1 и не пропускал на очередной 0 при формировании импульса, это добавит 2 условных оператора и 2 бита для хранения флагов - состояний)
все! это 10..20 avr инструкций не считая алгоритма выбора момента отсылки команды !
- vlasovzloy
- Друг Кота
- Сообщения: 20068
- Зарегистрирован: Чт янв 26, 2012 16:44:29
- Откуда: Таксимо
Re: Как повторить последовательность импульсов?
Там еще же частота модуляции нужна
Мои поставщики запчастей с отличной репутацией
texnomag.ru
radioremont.com
pl-1.org
4ip.info
elitan.ru
texnomag.ru
radioremont.com
pl-1.org
4ip.info
elitan.ru
Re: Как повторить последовательность импульсов?
думаю можно быстрей))linux_rulezz писал(а):Угу. Берем любой МК, а потом в течение месяца пишем функционал "копировальщика"
точно ! возьмём процессор с компа))abc писал(а):Подобную же задачу (только для пультов сигналок авто) делал в 1996 году на платке от АОНа с Z80 на борту.
правда не ясно где в наше время найти Z80... но это мелочи))
ничего не ясно...AlexS4 писал(а):а эта задача - элементарнейшая
не нужна.vlasovzloy писал(а):Там еще же частота модуляции нужна
- linux_rulezz
- Вымогатель припоя
- Сообщения: 606
- Зарегистрирован: Пн сен 15, 2025 08:43:23
- Откуда: Маленький СССР посреди шариатской республики
Re: Как повторить последовательность импульсов?
Ногодрыг - это фу. Аппаратно же можно сделать на 35-рублевом STM32F103C6T6. Подготавливаем массив и скармливаем его DMA, а дальше уже "оно само" таймер пинает, устанавливая новые значения в регистр ARR (как я смотрю, здесь меняется не скважность, а длительность "единичного" импульса, длительность "нуля" всегда одинаковая, т.е. в регистре CCRx будет постоянное значение).
А по прерыванию окончания передачи DMA отключаем таймер.
А по прерыванию окончания передачи DMA отключаем таймер.
Windows must die!
Re: Как повторить последовательность импульсов?
вот сигнал...

можно использовать Тини 13...
только там памяти мало... и таймер 8 битный...
можно конечно использовать Тини 13... но так себе.


можно использовать Тини 13...
только там памяти мало... и таймер 8 битный...
можно конечно использовать Тини 13... но так себе.
- Вложения
-
- даташит.jpg
- (88.13 КБ) 220 скачиваний
- Муркиз
- Друг Кота
- Сообщения: 25763
- Зарегистрирован: Пн фев 09, 2009 22:19:49
- Откуда: Когда-то был прекрасный город для людей
Re: Как повторить последовательность импульсов?
А простые решения через delay ныне уже не котируются ?
Re: Как повторить последовательность импульсов?
Грубо измерил длительности на осциллограмме (часть)

Просто для сведение.
PS: "Мерил" в пикселях.


Просто для сведение.
PS: "Мерил" в пикселях.
- Муркиз
- Друг Кота
- Сообщения: 25763
- Зарегистрирован: Пн фев 09, 2009 22:19:49
- Откуда: Когда-то был прекрасный город для людей
Re: Как повторить последовательность импульсов?
Судя по этой расшифровке, осциллограф был мегагц этак до 2 ? А код пересылаться AES 256 ?
А может быть, все же все гораздо проще ?
А может быть, все же все гораздо проще ?
Re: Как повторить последовательность импульсов?
[uquote="roman.com",url="/forum/viewtopic.php?p=4783850#p4783850"]можно использовать Тини 13...
только там памяти мало... и таймер 8 битный...
можно конечно использовать Тини 13... но так себе.[/uquote]Ваш картинка показывает, что tiny13 вполне хватит. Как вариант, разбиваете ее на фрагменты по 50мкс. Получится 9000мкс/50=180. Загружаете FLASH фрагментами типа
TB_FRAME:
.DB 0xFF,0xFE,0xFE,0xFE,,0xFF......0xFE,0xFE,0xFE,0xFF ;младший бит содержит последовательность
TB_FRAME_END:
Таймер настраиваете на работу в режим CTC.
Fo=1200000
OC0A=50*Fo/1000000-1
Устанавливаете ZH:ZL на TB_FRAME*2
В нужный момент запускаете таймер, по прерыванию которого считываете текущий фрагмент и выводите на вывод. Сравниваете ZH:ZL с TB_FRAME_END*2, если достигли в начало, иначе повтор.
только там памяти мало... и таймер 8 битный...
можно конечно использовать Тини 13... но так себе.[/uquote]Ваш картинка показывает, что tiny13 вполне хватит. Как вариант, разбиваете ее на фрагменты по 50мкс. Получится 9000мкс/50=180. Загружаете FLASH фрагментами типа
TB_FRAME:
.DB 0xFF,0xFE,0xFE,0xFE,,0xFF......0xFE,0xFE,0xFE,0xFF ;младший бит содержит последовательность
TB_FRAME_END:
Таймер настраиваете на работу в режим CTC.
Fo=1200000
OC0A=50*Fo/1000000-1
Устанавливаете ZH:ZL на TB_FRAME*2
В нужный момент запускаете таймер, по прерыванию которого считываете текущий фрагмент и выводите на вывод. Сравниваете ZH:ZL с TB_FRAME_END*2, если достигли в начало, иначе повтор.
