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

Пользовательские блоки дополняющие набор стандартных блоков
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
aidar_i
Полковник
Сообщения: 3124
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 676
Откуда: Уфа
Имя: Айдар
Контактная информация:

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

#1

Сообщение aidar_i » 19.03.2023{, 14:23}

Штатный генератор наворочен, часто нужен генератор подающий импульс в один цикл, сделал для уменьшения веса скетча.
Генератор 1ц.flp
(74.91 КБ) 107 скачиваний

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

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

#2

Сообщение Phazz » 19.03.2023{, 16:42}

Вообще такой вариант генератора должен быть в штатных. Нужно Сергею писать петицию)

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#3

Сообщение Dryundel » 19.03.2023{, 20:51}

aidar_i писал(а):
19.03.2023{, 14:23}
Штатный генератор наворочен, часто нужен генератор подающий импульс в один цикл, сделал для уменьшения веса скетча.
aidar_i, вот Вам еще идея генератора, но привязанная к циклам. С millis() такой фортель не покатит.

cycles++;

и теперь используем в нужных условиях типа так:

if ( ! (cycles % timer)) {
//....Требующееся действие
}

Где timer - период генератора (в циклах).

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

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

#4

Сообщение Phazz » 19.03.2023{, 20:57}

Dryundel, а практический смысл в чем?

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#5

Сообщение Dryundel » 19.03.2023{, 21:15}

Phazz писал(а):
19.03.2023{, 20:57}
Dryundel, а практический смысл в чем?
Практический смысл чего? Такого генератора?
О! это отдельная песня. Когда идет борьба за каждый бйт, сия штука даст вам очень много.
Ну сами посчитайте. Для обычного минимального таймера нужен один флаг - это один байт и переменная типа unsigned long oldTime, а это еще 4 байта. и того 5 байт с каждого генератора. А их к примеру а какой нибудь STM8S003 не так уж много.

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

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

#6

Сообщение Phazz » 19.03.2023{, 21:22}

Dryundel, но тогда нужно будет четко знать сколько времени займет 1 цикл.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#7

Сообщение Dryundel » 19.03.2023{, 21:36}

Phazz писал(а):
19.03.2023{, 21:22}
Dryundel, но тогда нужно будет четко знать сколько времени займет 1 цикл.
Во первых, данный вариант не для блока общего пользования. Во вторых, очень часто и не требуется великая точность по времени. В третьих, иногда к циклам привязываться даже выгодней. Ну и наконец, "жить захочешь не так раскорячишься". :)
История одного байта

aidar_i
Полковник
Сообщения: 3124
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 676
Откуда: Уфа
Имя: Айдар
Контактная информация:

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

#8

Сообщение aidar_i » 19.03.2023{, 23:16}

Dryundel писал(а):
19.03.2023{, 20:51}
вот Вам еще идея генератора, но привязанная к циклам.
Видел аналогичное решение в примерах для stm8s, но не догадался использовать.
Спасибо, сделаю блок и испытаю, уход с миллис с его unsigned long даст хорошую экономию памяти. В термостате не нужна особая точность таймера. И вообще хочу там только один генератор оставить, убрать из дисплея и датчика.

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

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

#9

Сообщение Phazz » 19.03.2023{, 23:59}

Dryundel, ну в общем вы правы, можно просто измерить время цикла конкретного проекта . Она вряд ли сильно меняется.

aidar_i
Полковник
Сообщения: 3124
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 676
Откуда: Уфа
Имя: Айдар
Контактная информация:

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

#10

Сообщение aidar_i » 21.03.2023{, 09:56}

Dryundel писал(а):
19.03.2023{, 21:15}
Phazz писал(а):
19.03.2023{, 20:57}
Dryundel, а практический смысл в чем?
Практический смысл чего? Такого генератора?
О! это отдельная песня. Когда идет борьба за каждый бйт, сия штука даст вам очень много.
Ну сами посчитайте. Для обычного минимального таймера нужен один флаг - это один байт и переменная типа unsigned long oldTime, а это еще 4 байта. и того 5 байт с каждого генератора. А их к примеру а какой нибудь STM8S003 не так уж много.
Испытал, тратится больше памяти для такого генератора на стм8.
Dryundel писал(а):
19.03.2023{, 21:15}
unsigned long
от него не возможно уйти, если выдавать время напрямую(там нужно сотни тысяч ставить) , попробую со счётчиком, может так меньше будет или генератор в генераторе поставить, чтобы уложиться в ин-тежер.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#11

Сообщение Dryundel » 21.03.2023{, 10:36}

aidar_i писал(а):
21.03.2023{, 09:56}
Испытал, тратится больше памяти для такого генератора на стм8.
Очень странно. А почему?
Можно код испытуемый глянуть?
aidar_i писал(а):
21.03.2023{, 09:56}
от него не возможно уйти,
Совсем не возможно. Но в случае с той идеей что я предложил, такая переменная нужна одна на весь проект, а не для каждого таймера своя.

Отправлено спустя 5 минут 39 секунд:
Dryundel писал(а):
21.03.2023{, 10:36}
чтобы уложиться в ин-тежер.
Можно и интеджер применить в моём случае. Только будет чаще сбой точности происходить. Один раз на 64000 циклов, если бесзнаковый.

aidar_i
Полковник
Сообщения: 3124
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 676
Откуда: Уфа
Имя: Айдар
Контактная информация:

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

#12

Сообщение aidar_i » 21.03.2023{, 11:28}

Dryundel, может сделаете свой блок и мне скинете, я пока с пид для стм8 копаюсь, в память вписывается, но не проверил работоспособность.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#13

Сообщение Dryundel » 21.03.2023{, 11:44}

aidar_i писал(а):
21.03.2023{, 11:28}
Dryundel, может сделаете свой блок и мне скинете
Ок. Через часик до компа доберусь.

Отправлено спустя 2 часа 53 минуты 45 секунд:
Вот. Попробуй.
GEN-TICK.flp
(177.08 КБ) 45 скачиваний

Kot
Сержант
Сообщения: 125
Зарегистрирован: 09.10.2021{, 11:54}
Репутация: 1
Имя: Дима

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

#14

Сообщение Kot » 11.04.2023{, 14:08}

aidar_i, а если сделать на апаратном таймере который не привязан к милес и куклес тогда ещё точнее будет отрабатывать ?

ecoins
Полковник
Сообщения: 2930
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

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

#15

Сообщение ecoins » 11.04.2023{, 20:35}

Kot писал(а):
11.04.2023{, 14:08}
aidar_i, а если сделать на апаратном таймере который не привязан к милес и куклес тогда ещё точнее будет отрабатывать ?
Только сейчас посмотрел проект и понял о чем он -генератор периодических событий.
Таким блоком из библиотеки ecoins мы пользуемся давно, в профессиональной версии редактора предусмотрены два отключаемых выхода - меандр и событие(один цикл). Есть блоки и на простом редакторе. В блоках используется генератор из RT_HW_BASE.h, но без проблем может быть заменен генератором-библиотекой от FLProg или автономным генератором.

waswas
Рядовой
Сообщения: 44
Зарегистрирован: 04.04.2023{, 18:39}
Репутация: 2
Имя: Вася

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

#16

Сообщение waswas » 11.04.2023{, 21:36}

Phazz писал(а):
19.03.2023{, 16:42}
нужен генератор подающий импульс в один цикл
а где такой использовать нужно?
чисто теоретически можно примеры?)

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

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

#17

Сообщение Phazz » 11.04.2023{, 22:35}

waswas, запись в переменную, тактирование платы дисплея. Отправка данных по вайфай. Я очень часто использую.

Naladchik
Капитан
Сообщения: 823
Зарегистрирован: 04.10.2015{, 19:10}
Репутация: 153
Откуда: Новосибирск
Имя: Павел

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

#18

Сообщение Naladchik » 12.04.2023{, 19:21}

Dryundel писал(а):
19.03.2023{, 20:51}
if ( ! (cycles % timer)) {
aidar_i писал(а):
21.03.2023{, 09:56}
Испытал, тратится больше памяти для такого генератора на стм8.
Dryundel писал(а):
21.03.2023{, 10:42}
Очень странно. А почему?
А потому что " % - остаток от деления ", а любое деление это ресурсоемкая операция.
Win10-64. FLProg Portable.
Изображение

waswas
Рядовой
Сообщения: 44
Зарегистрирован: 04.04.2023{, 18:39}
Репутация: 2
Имя: Вася

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

#19

Сообщение waswas » 12.04.2023{, 19:57}

ecoins писал(а):
11.04.2023{, 20:35}
запись в переменную, тактирование платы дисплея. Отправка данных по вайфай. Я очень часто использую
а чем r-trigger или условие для платы не подходит?
взвели его/её и получили на один цикл запись

ecoins
Полковник
Сообщения: 2930
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

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

#20

Сообщение ecoins » 12.04.2023{, 20:56}

waswas писал(а):
12.04.2023{, 19:57}
а чем r-trigger или условие для платы не подходит?
взвели его/её и получили на один цикл запись
В принципе тоже самое.
Но блок, который упоминался, совмещает в себе и генератор с минимальным количеством настроек (только период) и формирователь события(триггер), на плате занимает мало места, удобен в использовании.

Ответить

Вернуться в «Триггеры, таймеры, счетчики, детекторы сигнала»