Например TDA7294

Форум РадиоКот • Просмотр темы - Сложный вопрос AVR на С про volatile to const
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 08:02:07

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 75 ]    , 2, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Сложный вопрос AVR на С про volatile to const
СообщениеДобавлено: Пн апр 22, 2019 13:58:18 
Грызет канифоль

Зарегистрирован: Сб янв 03, 2015 21:03:24
Сообщений: 266
Рейтинг сообщения: 0
я попробовал в моем коде заменить все ссылки на указатели и просто скомпилировать без проверки на железе - то да с указателями вроде компелируется. незнаю если работает но компелируется.

ARV, да можно и так правда интервал сброса, и лапку надо еще как аргумент передать туда. так а в чем ошибка в моем коде ? там же элементарно синтаксическая какаято ошибка, мне не хватает знаний это просто увидеть и исправить

Добавлено after 44 minutes 4 seconds:
КРАМ, да можно как ARV проверять перед while что у нас впеременной порта. если ничего то default значение. это один путь. мой путь использовать возможности языка Си а именно, указывать дефолтное значение при объявление аргумента. это другой путь. если физически нельзя передать ссылку на volatile и дефолтное значение тогда буду исправлять логику как ARV или еще както. но я думаю что это возможно просто правильно объявить/передать нужно. но как?!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сложный вопрос AVR на С про volatile to const
СообщениеДобавлено: Пн апр 22, 2019 14:52:04 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Не понятно для чего передать ссылку на volatile? Она что в коде может поменяться?
И что означает дефолтное значение? Какое у пина порта может быть дефолтное значение?

Добавлено after 28 minutes 24 seconds:
Если я правильно понял, всего-то нужно передать ожидаемый уровень на пине порта
Код:
while((level ^ (PIND&(1 << INT0))));   // где level либо 0 либо 1


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сложный вопрос AVR на С про volatile to const
СообщениеДобавлено: Пн апр 22, 2019 14:55:44 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21795
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
если ничего то default значение.
В порте не может быть "ничего". Там либо ноль, либо единица.
Под пустым значением (NULL) понимают ОПРЕДЕЛЕННЫЙ, специально выделенный код, который не пересекается с иными возможными значениями. В битовых переменных это невозможно принципиально.
В данном случае, физический смысл дефолтного значения порта может быть только один - это ПАССИВНОЕ его состояние. Физически пассивное состояние означает уровень подтяжки пина порта. Его реализуют либо внешним резистором, либо встроенной схемой подтяжки через специальный регистр управления.
Если есть желание создать универсальную функцию на все случаи жизни, можно передать в нее пассивный уровень для данного пина, тогда while будет ожидать ПРОТИВОПОЛОЖНОГО значения.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Сложный вопрос AVR на С про volatile to const
СообщениеДобавлено: Пн апр 22, 2019 15:23:03 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
я так понимаю, что есть желание сделать нечто подобное такому:
procedure proc(param : integer = 1);
к сожалению, я не знаю, как такое оформляется в С++ (потому привел пример из паскаля), но суть такая, что допустимы следующие варианты использования процедуры:
proc(5); // передача параметра 5
proc; // передача параметра 1 (по умолчанию)

то есть если явно параметр функции не указан, используется его "дефолтное" значение. ну а если указан - то фактическое.

зачем это нужно в программе для МК - я не знаю... оно и в "большом" программировании не особо нужно...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Сложный вопрос AVR на С про volatile to const
СообщениеДобавлено: Пн апр 22, 2019 18:52:41 
Грызет канифоль

Зарегистрирован: Сб янв 03, 2015 21:03:24
Сообщений: 266
Рейтинг сообщения: 0
ARV, вы правильно поняли . в с++ так оно и передается. просто как я понял тип переменная(в моём случае 1) , тип конст и тип волатили не дружат с другдругом. т.е. надо менять объявление или одного или другого или всего сразу... в большом очень нужно (как минимум "защита от дурака")

КРАМ, а кто сказал что в порте ? я могу вызвать так soft_reset() без аргумента. и откуда я возьму порт ? :) вот оно и нужно дефолтное

друзья а что скажите насчёт такой реализации ? валидно? не валидно - почему? а функция таки да с прицелом на универсальность. не всего и вся но более-менее да

Код:
void soft_reset(const uint8_t wdt_prescale, const volatile uint8_t &port, const uint8_t pin){
   const volatile uint8_t &port_new = (port == NULL) ? 1 :  port;
   const uint8_t pin = (pin == NULL) ? 1 :  pin;
   const uint8_t wdt_prescale = (wdt_prescale == NULL) ? WDTO_15MS :  wdt_prescale;
   wdt_enable(wdt_prescale);
   while(port_new & pin);
   wdt_disable();
}


Добавлено after 7 minutes 42 seconds:
Если я правильно понял, всего-то нужно передать ожидаемый уровень на пине порта
Код:
while((level ^ (PIND&(1 << INT0))));   // где level либо 0 либо 1


да оно(состояние порта) в коде может меняться , точнее не в коде а вне кода именно поэтому волтали. да проверка именно такая только через ссылки т.к. порты и пины я подсовываю в функцию разные. у вас же жестко привязано к INT0 и его порту


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Сложный вопрос AVR на С про volatile to const
СообщениеДобавлено: Пн апр 22, 2019 19:25:54 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
друзья а что скажите насчёт такой реализации ? валидно? не валидно - почему?

Подумай над таким вариантом:
Код:
void soft_reset(uint8_t wdt_prescale = WDTO_15MS)
{
   wdt_enable(wdt_prescale);
   while(true) {}
}

void soft_reset(const volatile uint8_t& port, uint8_t pin, uint8_t wdt_prescale = WDTO_15MS)
{
   wdt_enable(wdt_prescale);
   while(port_new & pin) {}
   wdt_disable();
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сложный вопрос AVR на С про volatile to const
СообщениеДобавлено: Пн апр 22, 2019 19:40:22 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
alex68md писал(а):
да оно(состояние порта) в коде может меняться

Да не вопрос
Создаем две переменных, точнее указатель и переменную
Код:
volatile uint8_t *portd;
volatile uint8_t int_pin;

Далее, к примеру
Код:
void isPIRAlive(){
   portd = &PIND;
   int_pin = 0;
   isPIRHigh();
   portd = &PINC;
   int_pin = 1;
   isPIRLow();
}
и конечный
Код:
while((level ^ (*portd &(1 << int_pin))));


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сложный вопрос AVR на С про volatile to const
СообщениеДобавлено: Пн апр 22, 2019 19:46:01 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
и весь этот геморрой только для того, чтобы не делать две отдельные функции для сброса - одну с параметром, другую без... чудны дела твои, господи!

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сложный вопрос AVR на С про volatile to const
СообщениеДобавлено: Вт апр 23, 2019 06:24:50 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 1
Вот для наглядности
Спойлер
Код:
#include <avr/wdt.h>

#define D_PIN    PIND
#define D_INT   PIND0
#define C_PIN    PINC
#define C_INT   PINC1

void soft_reset(const uint8_t wdt_prescale, volatile uint8_t *PORT_set, const uint8_t int_pin, const uint8_t level){ //uint8_t *PIN_set
 
   wdt_enable(wdt_prescale);
   //while((level ^ (*PORT_set &(1 << int_pin))));   // если level=1 то 1 на пине порта ждем
   while(!(level ^ (*PORT_set &(1 << int_pin))));   // если level=1 то 0 на пине порта ждем
   wdt_reset();
   wdt_disable();
}

void isPIRHigh(void){
   soft_reset(WDTO_8S, &D_PIN, D_INT, 1);       //finish when PD0 high
}

void isPIRLow(void){
   soft_reset(WDTO_8S, &D_PIN, D_INT, 0);               //finish when PD0 low
}

void isPIRAlive(){
   isPIRHigh();
   isPIRLow();
   
   // для наглядности
   soft_reset(WDTO_8S, &D_PIN, D_INT, 1);
   soft_reset(WDTO_8S, &D_PIN, D_INT, 0);
   soft_reset(WDTO_8S, &C_PIN, C_INT, 1);
   soft_reset(WDTO_8S, &C_PIN, C_INT, 0);
}

void setup(){

   // конфигурация портов на вход на выход
   // назначить вывод порта на ввод
   // включить подтягивающий резистор   
 
isPIRAlive();
}
 
void loop()
 { //
 }


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сложный вопрос AVR на С про volatile to const
СообщениеДобавлено: Вт апр 23, 2019 15:54:24 
Грызет канифоль

Зарегистрирован: Сб янв 03, 2015 21:03:24
Сообщений: 266
Рейтинг сообщения: 0
ARV , я вам больше скажу. конструкция языка таки не позволяет сделать через одну :) точнее как я понял есть 2 пути. один через глобальные переменные как раз Dimon456 в предпоследнем посте упомянул. либо через две наподобе как Reflector упомянул только из первой пустой (без аргументов) вызываем вторую и передаем её дефолтные аргументы - метод перезагрузки функции. на втором методе я пока и остановился но упёрся в строчку
Код:
soft_reset(WDTO_8S, ~port, pin);

~port не хочет передаваться как volatile и пока даже не представляю как решить эту загвоздку ...

ЗЫ: Димон , интересный последний пост , надо обмозговать


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сложный вопрос AVR на С про volatile to const
СообщениеДобавлено: Вт апр 23, 2019 16:14:22 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 1
~port не хочет передаваться как volatile и пока даже не представляю как решить эту загвоздку ...

Тут создается временный объект, причем не константный, потому по обычной ссылке его не передашь, но можно передать по rvalue ссылке:
Код:
void soft_reset(volatile uint8_t&& port);

Единственное, что нужен С++11, не знаю какой там в ардуино...
Другое дело что непонятно зачем в принципе передавать ~port... Думаешь потом будешь читать из порта и там будет инверсное значение или как? :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сложный вопрос AVR на С про volatile to const
СообщениеДобавлено: Вт апр 23, 2019 17:28:58 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Reflector писал(а):
Другое дело что непонятно зачем в принципе
это творить... 2 функции - 1 минута делов и все свободны. нет, надо неделю на форуме людям головы морочить, самому себе голову морочить - а ради чего? какая ценность в этом варианте есть, что стоит этого геморроя?!

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сложный вопрос AVR на С про volatile to const
СообщениеДобавлено: Вт апр 23, 2019 19:20:36 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Правильно поставленная задача - половина успеха.
Правильно поставленный вопрос - половина ответа.

Нет, опять тресет
alex68md писал(а):
на втором методе я пока и остановился но упёрся в строчку
Код:
soft_reset(WDTO_8S, ~port, pin);

~port не хочет передаваться как volatile и пока даже не представляю как решить эту загвоздку ...
Открываем даташит на контроллер, читаем
Цитата:
С помощью регистров PINx осуществляется доступ к физическим значениям сигналов на выводах порта, они доступны только для чтения
Чего вы пытаетесь ~port туда записать?
Второе: к примеру портД состоит из 8 пинов (8 выводов), надо читать конкретный пин порта, а не полностью порт. Вы можете гарантировать что на состояние остальных пинах (выводах) порта не изменится?
Третье: я перерыл кучу компиляторов, кучу операционных систем, везде константа есть константа, переменная есть переменная.
Цитата:
Константа, переменная — это основополагающие понятия в любом языке программирования.

PS: видать компилятор оказался умнее человека, по этому и не позволяет вам записать в регистр предназначенный для чтения.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сложный вопрос AVR на С про volatile to const
СообщениеДобавлено: Вт апр 23, 2019 19:28:35 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 1
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Dimon456 писал(а):
Открываем даташит на контроллер, читаем
вот именно, читаем (конкретно эта цитата из даташита на atmega328, но такое поведение во всех "новых" МК семейства AVR8):
Цитата:
However, writing '1' to a bit in the PINx Register will result in a toggle in the corresponding bit in the Data Register.
так что запись в PINx очень даже имеет смысл

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сложный вопрос AVR на С про volatile to const
СообщениеДобавлено: Вт апр 23, 2019 20:21:47 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
А, ну да, там же ЛЕОНАРДО....АРДУИНО....
Тогда точнее будет так
Цитата:
Writing a logic one to PINxn toggles the value of PORTxn, independent on the value of DDRxn.
Note that the SBI instruction can be used to toggle one single bit in a port.
То есть другими словами включим подтяжку, выключим подтяжку. Что это изменило?
Нее .. не хороший подход, выводы настроенные на выход.....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сложный вопрос AVR на С про volatile to const
СообщениеДобавлено: Вт апр 23, 2019 20:49:34 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 97
Рейтинг сообщений: 2058
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18030
Откуда: Новочеркасск
Рейтинг сообщения: 1
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
я не оцениваю подходы, я указываю на вашу неточность: запись в PINx возможна и имеет определенный смысл. если DDRx=255, то записью в PINx можно получить "частоту" на PORTx, недостижимую для других способов "дрыгонога".

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сложный вопрос AVR на С про volatile to const
СообщениеДобавлено: Ср апр 24, 2019 05:54:13 
Грызет канифоль

Зарегистрирован: Сб янв 03, 2015 21:03:24
Сообщений: 266
Рейтинг сообщения: 0
ARV, ну я больше в качестве самооброзования, понимания железа и возможностей языка. я понимаю что может маги регистров сделают это проще красивее быстрее но я помогу только так :(

Reflector, Dimon456, подождите, так что получается эта строчка, это будет запись в порт ? а не просто инверсное чтение ? мне запись категорически нельзя :)
Код:
 soft_reset(WDTO_8S, ~port, pin);

"Думаешь потом будешь читать из порта и там будет инверсное значение" - да я так и подумал что в WHILE будет сверяться инверсное значение порта через чтение и всё :( Оно так и сверяеться когда я на кошках тренировался - просто volatile переменную передавал. а что в случае с регистром так не получиться ?

а как тогда минимумом строк кода передать инверсное realtime чтение порта ?
если я меняю все вызовы на поинтеры ~*port и потом while (*port&pin) то оно в принципе компилируеться но не знаю если будет эфект которого я жду ?


"видать компилятор оказался умнее человека, по этому и не позволяет вам записать в регистр предназначенный для чтения." да причем тут компилятор, именно поэтому const еще используется как защита от записи, поэтому я и пишу const volatile чтоб компилятор считал это как read only переменную. я не знал что ~port пишет чтото в порт. мы же просто читаем инверсию. не понимаю откуда запись


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сложный вопрос AVR на С про volatile to const
СообщениеДобавлено: Ср апр 24, 2019 08:39:24 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14054
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Обсуждать программное решение, использующее особенности аппаратной начинки МК,
БЕЗ КОНКРЕТНОЙ СХЕМЫ И ОПИСАНИЯ ХОТЕЛКИ
есть абсолютно бесполезная задача...
8)
Тем более, ежли за основу берем
адуринку и написание программы для оной в рамках ардуиноIDE
а не
"платку с атмегой328Р" в "чистом СИ" хотя-бы в рамках АВР-студии (7й на сегодня вроде).
:wink:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сложный вопрос AVR на С про volatile to const
СообщениеДобавлено: Ср апр 24, 2019 08:55:55 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
если я меняю все вызовы на поинтеры ~*port и потом while (*port&pin) то оно в принципе компилируеться но не знаю если будет эфект которого я жду ?

У мк есть регистр из которого можно читать инверсное значение порта? Если бы был, то ты бы его вместо PINx и передавал, а сейчас ~*port читает с порта один раз в момент передачи в функцию, потом там в цикле проверяется одно и то же значение. Со ссылками будет то же самое.

Цитата:
подождите, так что получается эта строчка, это будет запись в порт ? а не просто инверсное чтение ? мне запись категорически нельзя :)
Код:
 soft_reset(WDTO_8S, ~port, pin);

Это просто инверсное чтение, но невозможно получить напрямую ссылку для ~port, так же как нельзя у этой сущности взять адрес, тут будет создан временный объект(в случае передачи по &&) в котором хранится прочитанное значение.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Сложный вопрос AVR на С про volatile to const
СообщениеДобавлено: Ср апр 24, 2019 12:20:57 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Может все таки так
Спойлер
Код:
#include <avr/wdt.h>

#define D_PIN    PIND
#define D_INT   0

void soft_reset(const uint8_t wdt_prescale, volatile uint8_t *PORT_set, const uint8_t int_pin, const uint8_t level){
 
   wdt_enable(wdt_prescale);
   while((level ^ ((*PORT_set &(1 << int_pin))>>int_pin)));   //
   wdt_reset();
   wdt_disable();
}

void isPIRHigh(void){
uint8_t level;

level = ((D_PIN&(1<<D_INT))>>D_INT);          //получение состояния пина порта

if (level==1) {               //если пин порта равен 1 то
   soft_reset(WDTO_8S, &D_PIN, D_INT, 0);   //ждать на пине порта 0
} else {               //иначе если пин порта равен 0 то
   soft_reset(WDTO_8S, &D_PIN, D_INT, 1);   //ждать на пине порта 1
}

}


void isPIRAlive(){
   isPIRHigh();
}

void setup(){

   // назначить вывод порта на ввод
   // включить подтягивающий резистор
   // конфигурация портов на вход на выход
   
isPIRAlive();
}
 
void loop()
 {
 }


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 75 ]    , 2, ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y