Как повторить последовательность импульсов?

Обсуждаем цифровые устройства...
Аватара пользователя
Муркиз
Друг Кота
Сообщения: 25780
Зарегистрирован: Пн фев 09, 2009 22:19:49
Откуда: Когда-то был прекрасный город для людей

Re: Как повторить последовательность импульсов?

Сообщение Муркиз »

Вообще-то там требуется лишь однократная передача пакета, не заметили ? Генерировать ШИМ не требуется...
Реклама
roman.com
Друг Кота
Сообщения: 9149
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Как повторить последовательность импульсов?

Сообщение roman.com »

наша картинка показывает, что у tiny13 всего 64 байт памяти... что для универсального копировальщика мало.
:tea:
далее... смотрим сигнал...

Изображение

для сравнения самый распространенный протокол ИК пультов NEC.

Изображение

как видим разницы нет))
:tea:

запись.
-берём любой МК.
-включаем прерывание... таймер... записываем в буфер... собираем байты...

Изображение

всё работает))
:tea:
получился анализатор ИК пультов ))

Изображение

:tea:

Добавлено after 16 minutes 35 seconds:
-если код не меняется то режим записи не нужен.
тогда остаётся только передать фиксированный код.
:tea:

в этом случае всё упрощается... до уровня 1-го класса... ))

Изображение

самый простой вариант - передавать обычным ногодрыгом)) через delay.

Изображение

всё работает))
:tea:
Вложения
)).jpg
(52.45 КБ) 355 скачиваний
Реклама
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1479
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Как повторить последовательность импульсов?

Сообщение Ariadna-on-Line »

Классическая задачка лямзить (сниффер-ить) протокол обмена. Простейшее решение - ногодрыг. Ардуина с блинком щас есть у любого электронщика.
Dmitrudo
Открыл глаза
Сообщения: 44
Зарегистрирован: Пт апр 18, 2025 17:13:54

Re: Как повторить последовательность импульсов?

Сообщение Dmitrudo »

[uquote="roman.com",url="/forum/viewtopic.php?p=4783986#p4783986"]наша картинка показывает, что у tiny13 всего 64 байт памяти... что для универсального копировальщика мало.

самый простой вариант - передавать обычным ногодрыгом)) через delay.

:tea:[/uquote]

Немного уточняющей инфы.
Полностью пакет выглядит так.
Абсолютно идентичные пакеты следуют с интервалом 680 ms- с момента срабатывания сигнального устройства, и до окончания срабатывания.

Изображение

Длительности импульсов . Сорри, что от руки.

Изображение

Буду попробовать ногодрыгом...
Вложения
photo_2026-01-29_23-21-08.jpg
(100.15 КБ) 312 скачиваний
photo_2026-01-29_23-23-41.jpg
(225.07 КБ) 318 скачиваний
Реклама
Эиком - электронные компоненты и радиодетали
roman.com
Друг Кота
Сообщения: 9149
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Как повторить последовательность импульсов?

Сообщение roman.com »

при удержании кнопки ИК пульта пульт непрерывно передаёт пакеты с интервалом ~100 мс.

короче... всё стандартно.
:tea:

Добавлено after 26 minutes 4 seconds:
далее... берём все пульты в доме и читаем код...

Изображение

Изображение

самсунг... LG... TV-приставки... кондиционеры... и т.д.
везде протокол NEC... всё одинаково))
отличия только в преамбуле и кода устройства.
:tea:

Добавлено after 4 minutes 22 seconds:
если писать не будем... а только воспроизводить... то пойдёт убой МК... даже tiny13.

далее... пишем программу... ногодрыг через delay. ))

...
PORTD.5=1;
delay_us(13);
PORTD.5=0;
delay_us(9);
...
delay_us(4500);
...

и т.д.
:tea:

Добавлено after 11 minutes 8 seconds:
ну и в конце самое интересное))
:roll:

-подключаем МК к интернету.
-пишем приложение для компа и телефона.
-нажимаем кнопочку на компе или телефоне... комп или телефон предаёт по интернету номер кнопки МК.
-МК принимает номер кнопки по интернету и передаёт ИК сигнал телевизору.

Изображение

сидим на диване... управляем телевизором по интернету ))

Изображение

всё работает.
прикольно )).
:tea:
Реклама
Dmitrudo
Открыл глаза
Сообщения: 44
Зарегистрирован: Пт апр 18, 2025 17:13:54

Re: Как повторить последовательность импульсов?

Сообщение Dmitrudo »

[uquote="roman.com",url="/forum/viewtopic.php?p=4784045#p4784045"]при удержании кнопки ИК пульта пульт непрерывно передаёт пакеты с интервалом ~100 мс.

короче... всё стандартно.
:tea:[/uquote]

Только у меня не пульт :)) чуток тайминги другие и не ассемблер.
Перевариваю прочитанное. Пока лишь понял, что ногодрыгом проще. Интуитивно понимаю, но не более...
Реклама
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

Re: Как повторить последовательность импульсов?

Сообщение akl »

[uquote="Муркиз",url="/forum/viewtopic.php?p=4783936#p4783936"]...Генерировать ШИМ не требуется...[/uquote]Вы не поняли. Нет никакого ШИМ, таймер отсчитывает 50мкс интервалы. Пример формирования меандра с полупериодом 50мкс на лапе PB0 и стробика 9мс на PB1 ниже. Писал вчера, когда новых вводных от стартера ещё не было.
Спойлер

Код: Выделить всё

.INCLUDE "tn13Adef.inc"

.equ	Fo=1200000

.ORG	0x000
RESET:
	RJMP	START

;***********************************
.ORG 0x0006
T0_COMP_A:
	RETI
;***********************************
START:
	LDI	R16,$FF
	OUT	DDRB,R16
	OUT	PORTB,R16
GO:
	CLI
	LDI	ZH,HIGH(TB_FRAME*2)
	LDI	ZL,LOW(TB_FRAME*2)

	LDI	R16,LOW(50*Fo/1000000-1)
	OUT	OCR0A,R16

	LDI	R16,1<<SE		; режим SLEEP IDLE
	OUT	MCUCR,R16

	LDI	R16,1<<OCIE0A
	OUT	TIMSK0,R16
	OUT	TIFR0,R16

	LDI	R16,1<<WGM01
	OUT	TCCR0A,R16				; режим CTC
	LDI	R16,0<<WGM02|1<<CS00
	OUT	TCCR0B,R16				; режим CTC F/1

	SEI

;********************
WAIT_50MKS:
	SLEEP
	LPM	R0,Z+
	OUT	PORTB,R0
	CPI	ZL,LOW(TB_FRAME_END*2)
	BRLO	WAIT_50MKS

	RJMP	GO
.org	0x080
TB_FRAME:
.DB	$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE
.DB	$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE
.DB	$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE
.DB	$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE
.DB	$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE
.DB	$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE
.DB	$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE
.DB	$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE

.DB	$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE
.DB	$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE
.DB	$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE,$FF,$FE
.DB	$FF,$FE,$FF,$FC
TB_FRAME_END:
.EXIT
Аватара пользователя
linux_rulezz
Вымогатель припоя
Сообщения: 608
Зарегистрирован: Пн сен 15, 2025 08:43:23
Откуда: Маленький СССР посреди шариатской республики

Re: Как повторить последовательность импульсов?

Сообщение linux_rulezz »

Какие же ардуинщики забавные. Везде этот убогий delay() воткнуть пытаются, даже чтобы паузу на пару микросекунд сделать…
Есть же ТАЙМЕР! Вот и пусть себе ШИМ генерит. Да, вам там с вашей упоротостью не повезло: DMA нет, ну ок: меняйте длину импульса в прерывании таймера... Всяко меньше будет камень нагружаться, и помимо передачи пакета импульсов можно будет еще чем-нибудь заниматься полезным...
// но я таки крайне советую вменяемый МК взять, где и 32 бита, и таймеров полно нормальных, а не убогих.

Добавлено after 1 minute 59 seconds:
roman.com, тебе бы с таким рвением и упорством еще и на линукс перейти - вообще замечательно бы было!
Маздай - это гниль, днище…
Windows must die!
roman.com
Друг Кота
Сообщения: 9149
Зарегистрирован: Вт мар 13, 2012 12:16:13
Откуда: .ru

Re: Как повторить последовательность импульсов?

Сообщение roman.com »

Dmitrudo писал(а):Только у меня не пульт
да какая разница... всё везде работает одинаково))
:tea:
смотрим на картинку...

1. сначала идёт преамбула (или стартовый бит)... короткий и длинный импульс.
2. потом идет сам код... 0110010.
3. в конце какой-то импульс... предположительно стоп бит.
Изображение

и чем это отличается от пульта от телевизора ?

Изображение

ничем))
:tea:

[uquote="Dmitrudo",url="/forum/viewtopic.php?p=4784052#p4784052"]Интуитивно понимаю, но не более...[/uquote]
далее... смотрим на картинку и пишем программу...

принцип простой...
выключили... подождали... включили... подождали... и т.д.

// преамбула:
PORTD.5=0; // выключили
delay_us(450); // подождали
PORTD.5=1; // включили
delay_us(11400); // подождали

// код 0110010:

// "0"
PORTD.5=0; // выключили
delay_us(400); // подождали
PORTD.5=1; // включили
delay_us(600); // подождали

// "1"
PORTD.5=0; // выключили
delay_us(400); // подождали
PORTD.5=1; // включили
delay_us(1140); // подождали

// "1"
PORTD.5=0; // выключили
delay_us(400); // подождали
PORTD.5=1; // включили
delay_us(1140); // подождали

// "0"
...
...
...
и т.д.

получили пакет.
:tea:

это не ассемблер, это Си.
Си - это самый популярный и универсальный язык программирования ))

но можно написать и на ассемблере.
принцип работы тот же. разницы нет.

обычно ассемблер используют когда надо получить максимальную скорость.
например мы хотим подключить МК к интернету...

-берём любой МК.
-подключаем к интернету .
-пишем на ассемблере.

принцип тот же...
выключили... подождали... включили... подождали... и т.д.

Изображение

получили пакет. максимальная скорость 10 Мбит/с.

всё работает.
прикольно))
:tea:

а можно вообще не использовать никакие языки программирования.
открываем HEX-редактор и пишем машинные инструкции для МК... ))

принцип тот же...
выключили... подождали... включили... подождали... и т.д.
:tea:
Вложения
картинка.jpg
(113.63 КБ) 244 скачивания
Аватара пользователя
AlexS4
Друг Кота
Сообщения: 6652
Зарегистрирован: Пт сен 10, 2021 15:19:36
Откуда: Протвино

Re: Как повторить последовательность импульсов?

Сообщение AlexS4 »

linux_rulezz писал(а):но я таки крайне советую вменяемый МК взять, где и 32 бита, и таймеров полно нормальных, а не убогих.
ага и 2G ram чтоб линукс загрузить с гномом, ато отстой жеж, ногодрыг :)

щас программеры такие что sos проморгать светодиодом не могут без dma, у них 32-407 перегружается сразу от ногодрыга 1kHz
посему щас даже светеодиодные фонарики не смогут производить без 60nm техпроцесса мляу.

мне кажется что всетаки постепенно этому прийдет конец, но может и нет :tea:
но бурное развитие в том же направлении точно остановится :music: ...собственно уже практически остановилось несколько лет назад
Dmitrudo
Открыл глаза
Сообщения: 44
Зарегистрирован: Пт апр 18, 2025 17:13:54

Re: Как повторить последовательность импульсов?

Сообщение Dmitrudo »

[uquote="roman.com",url="/forum/viewtopic.php?p=4784106#p4784106"]
Dmitrudo писал(а):Только у меня не пульт
принцип простой...
выключили... подождали... включили... подождали... и т.д.

// преамбула:
PORTD.5=0; // выключили
delay_us(450); // подождали
PORTD.5=1; // включили
delay_us(11400); // подождали

// код 0110010:

// "0"
PORTD.5=0; // выключили
delay_us(400); // подождали
PORTD.5=1; // включили
delay_us(600); // подождали


получили пакет.
:tea:[/uquote]


Вот!
Вот, эта мысль и крутилась у меня в голове! Но выхода не нашла!
Вы доходчиво донесли принцип...
Спасибо, и- всем спасибо! Натолкнули на решение.
У меня тини 13а. Буду пробовать.

Си- осилю.
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Как повторить последовательность импульсов?

Сообщение Jack_A »

[uquote="AlexS4",url="/forum/viewtopic.php?p=4784173#p4784173"]посему щас даже светеодиодные фонарики не смогут производить без 60nm техпроцесса[/uquote]
Ну так как же без него - туда же ещё нужно RTOS впиндюрить :) :)) :)
Изображение
Аватара пользователя
Муркиз
Друг Кота
Сообщения: 25780
Зарегистрирован: Пн фев 09, 2009 22:19:49
Откуда: Когда-то был прекрасный город для людей

Re: Как повторить последовательность импульсов?

Сообщение Муркиз »

А слабо написать функцию "мигнуть" светодиодом и скормить ей числовой массив из значений задержек ?
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1479
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Как повторить последовательность импульсов?

Сообщение Ariadna-on-Line »

[uquote="roman.com",url="/forum/viewtopic.php?p=4784045#p4784045"]сидим на диване... управляем телевизором по интернету ))[/uquote]Почему у унитазных бачков не делают дистанционное управление ? ...
Аватара пользователя
Муркиз
Друг Кота
Сообщения: 25780
Зарегистрирован: Пн фев 09, 2009 22:19:49
Откуда: Когда-то был прекрасный город для людей

Re: Как повторить последовательность импульсов?

Сообщение Муркиз »

Мокро там очень потому что...
Dmitrudo
Открыл глаза
Сообщения: 44
Зарегистрирован: Пт апр 18, 2025 17:13:54

Re: Как повторить последовательность импульсов?

Сообщение Dmitrudo »

[uquote="Ariadna-on-Line",url="/forum/viewtopic.php?p=4784413#p4784413"][uquote="roman.com",url="/forum/viewtopic.php?p=4784045#p4784045"]сидим на диване... управляем телевизором по интернету ))[/uquote]Почему у унитазных бачков не делают дистанционное управление ? ...[/uquote]


:)))
Товарищ! Да, вы- экстрасенс!

Вся эта канитель- как раз для управления... унитазным бачком!
Только громко не ржать, прошу!

Жизня заставила.
Старый дедушка в доме за собой уже не смывает. Помимо запаха еще вечно черная дыра сливная. Обработка кислотой дает эффект ровно на неделю- потом все снова зарастает камнем. Плюс финансово- на кислоты уходит больше, чем если бы бачок смывался сплошным потоком воды- круглые сутки.

Купил на озоне смывной механизм на моторчике, но он управляется- тоже рукой, то есть снова мимо, но к нему шла приблуда, которая по синезубу коннектится и срабатывает по отражению света от ИК-диода. Появляешься в луче, потом уходишь и через 6 сек она срабатывает.

Вот к ней я и делаю таймер, который будет помимо отражения, просто каждые пол часа смывать- вне зависимости.
Можно было проще сделать, типа таймер тупо замыкает что-то там и все срабатывает, без всяких там пачек импульсов, но прямых путей не ищем решил пойти вокруг.

Идея подкинутая Романом зашла.
И да, Тов. Муркиз пишет "...А слабо написать функцию "мигнуть" светодиодом и скормить ей числовой массив из значений задержек ?..."
Почти именно так и вышло.

Изображение
Изображение
Изображение
Вложения
Monosnap Digital Oscilloscope 2026-01-31 12.07.51.jpg
(44.63 КБ) 132 скачивания
Monosnap Digital Oscilloscope 2026-01-31 12.09.29.jpg
(34.98 КБ) 146 скачиваний
Monosnap Digital Oscilloscope 2026-01-31 12.05.30.jpg
(58.44 КБ) 151 скачивание
Аватара пользователя
abc
Друг Кота
Сообщения: 3686
Зарегистрирован: Чт мар 20, 2008 01:06:40
Откуда: Севастополь

Re: Как повторить последовательность импульсов?

Сообщение abc »

Стесняюсь спросить, а зачечм там приблуда с синезубом и пультом, плюс теперь еще и эмулятор этого самого пульта ?
Это прям оверинжиниринг какой-то...
Хотя, с такой жаждой деятельности там точно нужен и RTOS, и линух, на худой конец - просто DMA.
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Dmitrudo
Открыл глаза
Сообщения: 44
Зарегистрирован: Пт апр 18, 2025 17:13:54

Re: Как повторить последовательность импульсов?

Сообщение Dmitrudo »

[uquote="abc",url="/forum/viewtopic.php?p=4784440#p4784440"]Стесняюсь спросить, а зачечм там приблуда с синезубом и пультом, плюс теперь еще и эмулятор этого самого пульта ?
Это прям оверинжиниринг какой-то...
Хотя, с такой жаждой деятельности там точно нужен и RTOS, и линух, на худой конец - просто DMA.[/uquote]

:))

Согласен, не самое элегантное решение.
Приблуда (назовем ее- пульт) шла в комплекте со смывателем. Они коннектятся по синезубу. Пачки импульсов- это я так понимаю "ключ" для того, чтобы, к примеру конечно, в общественном китайском туалете приблуда (пульт) срабатывала именно на свой смыватель, а не на все сразу.
Вот этот пульт я хотел дополнить таймером, чтобы смывала- по времени, вне зависимости от посещений, путем отсылки пачки импульсов на смыватель.
Вы спросите: а чего не поставить таймер на сам смыватель и не управлять двигателем- напрямую? Так мне показалось сложней. Я могу расписать, конечно почему, но самое главное, как мне показалось- в этом случае мог быть конфликт между приблудой (пультом) и самой смывалкой, когда они решат крутить мотор одновременно, но в разные напрвления. В общем- сложно...


Линух- пропустим. Два года я пытался делать вид, что мне его "хватает на все", но эмулятор винды работал в нем постоянно. В итоге я решил, что если так, то лучше в случае надобности эмулировать линукс и вернул винду. И вот что забавно... за много лет эмулировать линукс мне не понадобилось- ни разу. Странно, понимаю, но объяснить не могу. Хотя, на работе поставил и люди работаею на нем!
Аватара пользователя
abc
Друг Кота
Сообщения: 3686
Зарегистрирован: Чт мар 20, 2008 01:06:40
Откуда: Севастополь

Re: Как повторить последовательность импульсов?

Сообщение abc »

Если от механизма смыва не приходит какая-то обратная связь (через проточные датчики, токовые или какие-либо другие), то - да, поставить именно таймер управления этим механизмом, будет проще всего.
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Аватара пользователя
Муркиз
Друг Кота
Сообщения: 25780
Зарегистрирован: Пн фев 09, 2009 22:19:49
Откуда: Когда-то был прекрасный город для людей

Re: Как повторить последовательность импульсов?

Сообщение Муркиз »

Просто каждый час импульс на исполнительное устройство может и платка таймера 555 без проблем и без конфликтов вообще-то.
Но вот сколько воды зря утечет ... Нам к потопу готовится, ковчег строить ?
Последний раз редактировалось Муркиз Сб янв 31, 2026 17:14:54, всего редактировалось 1 раз.
Ответить

Вернуться в «Цифровая техника»