как в блоке разместить void isr() { }

Создаем свой блок. Вопросы, помощь знатоков.
Ответить
Аватара пользователя
slavas
Лейтенант
Сообщения: 595
Зарегистрирован: 14.09.2015{, 22:29}
Репутация: 1
Откуда: Санкт-Петербург

как в блоке разместить void isr() { }

#1

Сообщение slavas » 14.10.2021{, 14:23}

Здравствуйте уважаемые коллеги, решил нарисовать себе блок для усыпления и последующего пробуждения по прерыванию. Рукописный скетч работает без проблем но в редакторе не могу вставить обработчик прерываний
void isr()
{
}
эти строчки должны быть между setup b loop
заранее благодарю.

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

как в блоке разместить void isr() { }

#2

Сообщение Naladchik » 14.10.2021{, 14:42}

slavas писал(а):
14.10.2021{, 14:23}
...эти строчки должны быть между setup b loop...
Вот вообще не факт. В данном случае Вы просто объявляете функцию, и где Вы расположите ее код - большого значения не имеет, лишь бы не внутри секций setup и loop, так как это тоже функции.
Вообще считается правильным размещение функции в секции Declare, но можно ее разместить и в секции Function, компилятор проглатывает.
Win10-64. FLProg Portable.
Изображение

Аватара пользователя
slavas
Лейтенант
Сообщения: 595
Зарегистрирован: 14.09.2015{, 22:29}
Репутация: 1
Откуда: Санкт-Петербург

как в блоке разместить void isr() { }

#3

Сообщение slavas » 14.10.2021{, 15:09}

в редакторе ругается

Отправлено спустя 6 минут 11 секунд:
Текст который я хочу получить

#include <GyverPower.h>
bool en_37325871_1;
void setup()
{
pinMode(3, INPUT_PULLUP); // кнопка подключена к GND и D3
attachInterrupt(1, isr, FALLING); // подключаем прерывание на пин D3 (Arduino NANO)
power.setSleepMode(POWERDOWN_SLEEP); // глубокий сон
}

void isr()
{
}

void loop()
{
//Плата:1
en_37325871_1 = !(0);
if (en_37325871_1 ==1)
power.sleep(SLEEP_8192MS); // спим ~8 секунд, но можем проснуться по кнопке
}

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

как в блоке разместить void isr() { }

#4

Сообщение Naladchik » 14.10.2021{, 16:01}

slavas писал(а):
14.10.2021{, 15:15}
в редакторе ругается
ничего не ругается
СпойлерПоказать
1.png
P.S.
Вы бы, для порядка, приложили бы свой проект с Вашим блоком, тогда и было бы что обсуждать.
Последний раз редактировалось Naladchik 14.10.2021{, 17:06}, всего редактировалось 1 раз.
Win10-64. FLProg Portable.
Изображение

Аватара пользователя
slavas
Лейтенант
Сообщения: 595
Зарегистрирован: 14.09.2015{, 22:29}
Репутация: 1
Откуда: Санкт-Петербург

как в блоке разместить void isr() { }

#5

Сообщение slavas » 14.10.2021{, 16:16}

Спасибо огромное! я в функции пытался со скобками записать
Спасибо!

Отправлено спустя 24 минуты 53 секунды:
Проекта как такового нет просто решил поиграть с библиотекой от Gayvera
библиотеки
и заодно научиться профессиональные блоки рисовать.
Вложения
Error__(Code_-_Professional).ubi
(290.22 КБ) 29 скачиваний

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

как в блоке разместить void isr() { }

#6

Сообщение Naladchik » 14.10.2021{, 17:11}

slavas,
То, что Вы нарисовали это просто кошмар.
Ваш блок должен был выглядеть примерно так:
GyverPower_sleep_(Code_-_Professional).ubi
(371.67 КБ) 47 скачиваний
!!!это только пример, работоспособность не проверялась!!!
А тем, кто скачал блок из предыдущего сообщения - прошу удалить, так как он только демонстрационный и может работать только при задании в блоке пина D3 (номер пина и номер прерывания разные вещи).
Советую почитать https://alexgyver.ru/lessons/interrupts/
Последний раз редактировалось Naladchik 14.10.2021{, 19:26}, всего редактировалось 2 раза.
Win10-64. FLProg Portable.
Изображение

Аватара пользователя
slavas
Лейтенант
Сообщения: 595
Зарегистрирован: 14.09.2015{, 22:29}
Репутация: 1
Откуда: Санкт-Петербург

как в блоке разместить void isr() { }

#7

Сообщение slavas » 14.10.2021{, 18:39}

Naladchik, да это и не блок в принципе это проба пера, я просто хотел понять как в код вставить функцию пока Вы не показали. Что касается прерываний это понятно, у MEGA 328 например это пины 2 и 3 прерывания 0 и 1 соответственно, у других контроллеров они другие. Была мысль сделать выбор прерывания в параметрах для этого буду учиться собирать профессиональные блоки.

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

как в блоке разместить void isr() { }

#8

Сообщение Naladchik » 14.10.2021{, 18:44}

slavas писал(а):
14.10.2021{, 18:39}
...Была мысль сделать выбор прерывания в параметрах...
Посмотрите как это реализовано в том, что я выложил (в новом редакторе).

Отправлено спустя 7 минут 13 секунд:
slavas,
Главная Ваша ошибка при создании блока в новом редакторе заключалась в том, что те ветки кода, которые должны быть в экземпляре блока Вы разместили в общих ветках.
Win10-64. FLProg Portable.
Изображение

Аватара пользователя
slavas
Лейтенант
Сообщения: 595
Зарегистрирован: 14.09.2015{, 22:29}
Репутация: 1
Откуда: Санкт-Петербург

как в блоке разместить void isr() { }

#9

Сообщение slavas » 14.10.2021{, 19:20}

Naladchik, Всё супер Ваш блок на примере показывает как собирать П блоки на новом редакторе. Спасибо.

Ответить

Вернуться в «Разработка пользовательских блоков»