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

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

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

Сообщение aidar_i »

Штатный генератор наворочен, часто нужен генератор подающий импульс в один цикл, сделал для уменьшения веса скетча.
Генератор 1ц.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Phazz
Полковник
Сообщения: 3125
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 233 раза
Поблагодарили: 114 раз

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

Сообщение Phazz »

Вообще такой вариант генератора должен быть в штатных. Нужно Сергею писать петицию)
Аватара пользователя
Dryundel
Полковник
Сообщения: 2430
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 3 раза
Поблагодарили: 30 раз

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

Сообщение Dryundel »

aidar_i писал(а): 19 мар 2023, 14:23 Штатный генератор наворочен, часто нужен генератор подающий импульс в один цикл, сделал для уменьшения веса скетча.
[ref=#ff8000]aidar_i[/ref], вот Вам еще идея генератора, но привязанная к циклам. С millis() такой фортель не покатит.

cycles++;

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

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

Где timer - период генератора (в циклах).
Аватара пользователя
Phazz
Полковник
Сообщения: 3125
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 233 раза
Поблагодарили: 114 раз

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

Сообщение Phazz »

[ref=#ff8000]Dryundel[/ref], а практический смысл в чем?
Аватара пользователя
Dryundel
Полковник
Сообщения: 2430
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 3 раза
Поблагодарили: 30 раз

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

Сообщение Dryundel »

Phazz писал(а): 19 мар 2023, 20:57 Dryundel, а практический смысл в чем?
Практический смысл чего? Такого генератора?
О! это отдельная песня. Когда идет борьба за каждый бйт, сия штука даст вам очень много.
Ну сами посчитайте. Для обычного минимального таймера нужен один флаг - это один байт и переменная типа unsigned long oldTime, а это еще 4 байта. и того 5 байт с каждого генератора. А их к примеру а какой нибудь STM8S003 не так уж много.
Аватара пользователя
Phazz
Полковник
Сообщения: 3125
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 233 раза
Поблагодарили: 114 раз

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

Сообщение Phazz »

[ref=#ff8000]Dryundel[/ref], но тогда нужно будет четко знать сколько времени займет 1 цикл.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2430
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 3 раза
Поблагодарили: 30 раз

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

Сообщение Dryundel »

Phazz писал(а): 19 мар 2023, 21:22 Dryundel, но тогда нужно будет четко знать сколько времени займет 1 цикл.
Во первых, данный вариант не для блока общего пользования. Во вторых, очень часто и не требуется великая точность по времени. В третьих, иногда к циклам привязываться даже выгодней. Ну и наконец, "жить захочешь не так раскорячишься". :)
История одного байта
aidar_i
Полковник
Сообщения: 3358
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 13 раз
Поблагодарили: 100 раз
Контактная информация:

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

Сообщение aidar_i »

Dryundel писал(а): 19 мар 2023, 20:51 вот Вам еще идея генератора, но привязанная к циклам.
Видел аналогичное решение в примерах для stm8s, но не догадался использовать.
Спасибо, сделаю блок и испытаю, уход с миллис с его unsigned long даст хорошую экономию памяти. В термостате не нужна особая точность таймера. И вообще хочу там только один генератор оставить, убрать из дисплея и датчика.
Аватара пользователя
Phazz
Полковник
Сообщения: 3125
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 233 раза
Поблагодарили: 114 раз

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

Сообщение Phazz »

[ref=#ff8000]Dryundel[/ref], ну в общем вы правы, можно просто измерить время цикла конкретного проекта . Она вряд ли сильно меняется.
aidar_i
Полковник
Сообщения: 3358
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 13 раз
Поблагодарили: 100 раз
Контактная информация:

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

Сообщение aidar_i »

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

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

Сообщение Dryundel »

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

Отправлено спустя 5 минут 39 секунд:
Dryundel писал(а): 21 мар 2023, 10:36 чтобы уложиться в ин-тежер.
Можно и интеджер применить в моём случае. Только будет чаще сбой точности происходить. Один раз на 64000 циклов, если бесзнаковый.
aidar_i
Полковник
Сообщения: 3358
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 13 раз
Поблагодарили: 100 раз
Контактная информация:

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

Сообщение aidar_i »

[ref=#ff8000]Dryundel[/ref], может сделаете свой блок и мне скинете, я пока с пид для стм8 копаюсь, в память вписывается, но не проверил работоспособность.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2430
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 3 раза
Поблагодарили: 30 раз

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

Сообщение Dryundel »

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

Отправлено спустя 2 часа 53 минуты 45 секунд:
Вот. Попробуй.
GEN-TICK.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Kot
Сержант
Сообщения: 125
Зарегистрирован: 09 окт 2021, 11:54
Имя: Дима
Поблагодарили: 1 раз

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

Сообщение Kot »

[ref=#ff8000]aidar_i[/ref], а если сделать на апаратном таймере который не привязан к милес и куклес тогда ещё точнее будет отрабатывать ?
ecoins
Полковник
Сообщения: 4006
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 153 раза

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

Сообщение ecoins »

Kot писал(а): 11 апр 2023, 14:08 aidar_i, а если сделать на апаратном таймере который не привязан к милес и куклес тогда ещё точнее будет отрабатывать ?
Только сейчас посмотрел проект и понял о чем он -генератор периодических событий.
Таким блоком из библиотеки ecoins мы пользуемся давно, в профессиональной версии редактора предусмотрены два отключаемых выхода - меандр и событие(один цикл). Есть блоки и на простом редакторе. В блоках используется генератор из RT_HW_BASE.h, но без проблем может быть заменен генератором-библиотекой от FLProg или автономным генератором.
waswas
Рядовой
Сообщения: 44
Зарегистрирован: 04 апр 2023, 18:39
Имя: Вася

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

Сообщение waswas »

Phazz писал(а): 19 мар 2023, 16:42 нужен генератор подающий импульс в один цикл
а где такой использовать нужно?
чисто теоретически можно примеры?)
Аватара пользователя
Phazz
Полковник
Сообщения: 3125
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 233 раза
Поблагодарили: 114 раз

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

Сообщение Phazz »

[ref]waswas[/ref], запись в переменную, тактирование платы дисплея. Отправка данных по вайфай. Я очень часто использую.
Naladchik
Капитан
Сообщения: 908
Зарегистрирован: 04 окт 2015, 19:10
Откуда: Новосибирск
Имя: Павел
Благодарил (а): 20 раз
Поблагодарили: 22 раза

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

Сообщение Naladchik »

Dryundel писал(а): 19 мар 2023, 20:51 if ( ! (cycles % timer)) {
aidar_i писал(а): 21 мар 2023, 09:56 Испытал, тратится больше памяти для такого генератора на стм8.
Dryundel писал(а): 21 мар 2023, 10:42 Очень странно. А почему?
А потому что " % - остаток от деления ", а любое деление это ресурсоемкая операция.
Win10-64. FLProg Portable.
Изображение
waswas
Рядовой
Сообщения: 44
Зарегистрирован: 04 апр 2023, 18:39
Имя: Вася

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

Сообщение waswas »

ecoins писал(а): 11 апр 2023, 20:35 запись в переменную, тактирование платы дисплея. Отправка данных по вайфай. Я очень часто использую
а чем r-trigger или условие для платы не подходит?
взвели его/её и получили на один цикл запись
ecoins
Полковник
Сообщения: 4006
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 153 раза

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

Сообщение ecoins »

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

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя