Например TDA7294

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





Текущее время: Вт апр 16, 2024 13:19:10

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


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



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Как реализовать контроль порта с задержкой времени
СообщениеДобавлено: Сб июл 08, 2023 18:51:18 
Нашел транзистор. Понюхал.

Зарегистрирован: Ср сен 04, 2019 17:59:23
Сообщений: 165
Откуда: Гомель
Рейтинг сообщения: 0
Подскажите пожалуйста. В бесконечном цикле есть if(PINC.4==1){break;}; Как сделать, чтобы эта команда выполнилась, если единица на порту присутствует более 500 ms или на крайняк 1000 ms. Если плюс присутствует меньше данного времени , то if не выполнялась. Задержка нужна для того, что на данный порт подключено будет реле, которое будет срабатывать с опозданием, после подачи несущей с модуляцией с микроконтроллера. Использования задержки delay не подходит, так как на СИ для atmega 8 написана программа несущих частот на таймере Т1 и в бесконечном цикле, программно, частоты модуляции и есть вывод информации на LCD. На таймере Т0 написана секунда, так как в программе нужен отсчёт времени.


Последний раз редактировалось Alex_ka Сб июл 08, 2023 18:58:23, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как реализовать контроль порта с задержкой времени
СообщениеДобавлено: Сб июл 08, 2023 18:55:35 
Друг Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 1320
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 10429
Рейтинг сообщения: 0
напишите на таймере Т0 полсекунды.

_________________
добавь radiokot.ru##.tablebg > tbody > tr:has(td>a[href*="?f=17"]) в адблок, сделай форум чище!
"Э-э-э-хей... растёт правосознание!"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как реализовать контроль порта с задержкой времени
СообщениеДобавлено: Сб июл 08, 2023 18:56:39 
Нашел транзистор. Понюхал.

Зарегистрирован: Ср сен 04, 2019 17:59:23
Сообщений: 165
Откуда: Гомель
Рейтинг сообщения: 0
Так меня и задержка в секунду устраивает. Но не могу сообразить, как её реализовать на данном порту.


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Как реализовать контроль порта с задержкой времени
СообщениеДобавлено: Сб июл 08, 2023 19:03:57 
Друг Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 1320
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 10429
Рейтинг сообщения: 0
Код:
unsigned char sekunda_proshla = 0; // флаг, показывающий, что секунда прошла
....
 if(PINC.4== sekunda_proshla){break;}
....
где-то в обработке таймера T0:

sekunda_proshla = 1;


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

_________________
добавь radiokot.ru##.tablebg > tbody > tr:has(td>a[href*="?f=17"]) в адблок, сделай форум чище!
"Э-э-э-хей... растёт правосознание!"


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Как реализовать контроль порта с задержкой времени
СообщениеДобавлено: Сб июл 08, 2023 19:10:29 
Нашел транзистор. Понюхал.

Зарегистрирован: Ср сен 04, 2019 17:59:23
Сообщений: 165
Откуда: Гомель
Рейтинг сообщения: 0
Так при такой команде как написано, меня отправит в брек, а не станет контролировать наличие нуля на данном порту.


Последний раз редактировалось Alex_ka Сб июл 08, 2023 19:10:54, всего редактировалось 1 раз.

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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Как реализовать контроль порта с задержкой времени
СообщениеДобавлено: Сб июл 08, 2023 19:10:46 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2801
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18058
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
Alex_ka писал(а):
На таймере Т0 написана секунда
порт проверять не бесконечном цикле, а когда прошла секунда. если порт равен 1, поставить флаг. через еще секунду опять проверить порт. если на порту осталась единица И установлен флаг, выполнить действие.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как реализовать контроль порта с задержкой времени
СообщениеДобавлено: Сб июл 08, 2023 19:13:49 
Нашел транзистор. Понюхал.

Зарегистрирован: Ср сен 04, 2019 17:59:23
Сообщений: 165
Откуда: Гомель
Рейтинг сообщения: 0
Не получается у меня не в бесконечном цикле. Мне надо постоянный контроль за отвалом реле в случае отказа проверяемого блока.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как реализовать контроль порта с задержкой времени
СообщениеДобавлено: Сб июл 08, 2023 19:16:16 
Друг Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 1320
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 10429
Рейтинг сообщения: 0
а, про порт проглядел...

Тогда надо настроить обработку внешнего прерывания на порт, если сработало - проверить, что там с sekunda_proshla

_________________
добавь radiokot.ru##.tablebg > tbody > tr:has(td>a[href*="?f=17"]) в адблок, сделай форум чище!
"Э-э-э-хей... растёт правосознание!"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как реализовать контроль порта с задержкой времени
СообщениеДобавлено: Сб июл 08, 2023 23:22:40 
Нашел транзистор. Понюхал.

Зарегистрирован: Ср сен 04, 2019 17:59:23
Сообщений: 165
Откуда: Гомель
Рейтинг сообщения: 0
В принципе над этим можно подумать.

Добавлено after 4 hours 2 minutes 27 seconds:
Подумал и решил пойти иным путём. Так как мне нужно только, чтобы задержка контроля порта происходила только после запуска генераторов частот, а не постоянно висела, буду вводить ещё одну переменную секунды, которая будет считать одну секунду и обнулятся и в этом бесконечном цикле уберу контроль состояния порта, а введу команду если выше указанная переменная ровна единице, остановить этот бесконечный цикл и перейти к следующему, где будет if(PINC.4==1){break;}; Попробую так, посмотрю, что протеус покажет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как реализовать контроль порта с задержкой времени
СообщениеДобавлено: Сб июл 08, 2023 23:41:34 
Друг Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 1320
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 10429
Рейтинг сообщения: 0
Замечу, что у наиболее достоверного контроля порта должна быть буферизация для программы. Работа с внешним прерыванием это позволяет сделать без дополнительных аппаратных затрат. В ином случае есть риск, что до момента if(PINC.4){break;} много раз PINC.4 изменит состояние. Впрочем, если его состояние необходимо только на момент проверки, тогда ок.

_________________
добавь radiokot.ru##.tablebg > tbody > tr:has(td>a[href*="?f=17"]) в адблок, сделай форум чище!
"Э-э-э-хей... растёт правосознание!"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как реализовать контроль порта с задержкой времени
СообщениеДобавлено: Вс июл 09, 2023 00:23:12 
Нашел транзистор. Понюхал.

Зарегистрирован: Ср сен 04, 2019 17:59:23
Сообщений: 165
Откуда: Гомель
Рейтинг сообщения: 0
Я понял о чём речь. Но у меня в бесконечном нет команды delay, которая тормозит цикл и цикл работает на скорости тактовой частоты. Мне кажется, что в таком случае контроль состояния порта выше, чем делать постоянный опрос через таймер. Проверил в протеусе, задержка пашет и отвал моментальный если на порту С4 разорвать ноль. Можно пробовать в железо переносить.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как реализовать контроль порта с задержкой времени
СообщениеДобавлено: Вс июл 09, 2023 00:31:37 
Друг Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 1320
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 10429
Рейтинг сообщения: 0
внешнее прерывание - не есть опрос вообще, тем более через таймер. это некий триггер, который сработает именно тогда, когда произойдет внешнее событие. Микроконтроллер при этом вообще может спать (при условии, что у него есть функция проснуться по внешнему прерыванию) или делать какие-то иные задачи.
Моментальным будет только если изменение состояния порта по времени дольше, чем пробег всего цикла. К тому же, Вы там говорили, что у Вас таймер работает и есть вывод информации на LCD. Это означает, что главный цикл вовсе не такой быстрый, как выглядит - часть времени отводится на обслуживание таймера и этого вывода. Так что, далеко не равно тактовой частоте.

_________________
добавь radiokot.ru##.tablebg > tbody > tr:has(td>a[href*="?f=17"]) в адблок, сделай форум чище!
"Э-э-э-хей... растёт правосознание!"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как реализовать контроль порта с задержкой времени
СообщениеДобавлено: Вс июл 09, 2023 02:40:00 
Сверлит текстолит когтями

Карма: 20
Рейтинг сообщений: 296
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1219
Откуда: KN34PC, Болгария
Рейтинг сообщения: 1
Если не в используемом IDE, напишите функцию по timer0/timer2 для текущего времени через 1 ms (как напр. millis(), get_ticks() ... ).
Код:
if (PINC.4 == 1) {
  if (start == 0) {
    start = 1;
    t = get_ticks();
  }
  else
    if ((t - get_tick()) > 1000) {  // 1 s
      start = 0;
      break;
   }
}
else
  start = 0;

Программа в основном цикле при нормальной работе будет замедляться на: время на чтение состояния одного вывода и на присвоение 0 одной переменной.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как реализовать контроль порта с задержкой времени
СообщениеДобавлено: Вс июл 09, 2023 07:55:35 
Нашел транзистор. Понюхал.

Зарегистрирован: Ср сен 04, 2019 17:59:23
Сообщений: 165
Откуда: Гомель
Рейтинг сообщения: 0
Спасибо. Попробую.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как реализовать контроль порта с задержкой времени
СообщениеДобавлено: Вс июл 09, 2023 18:38:57 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14052
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Встроить в цикл счетчик "условных енотов", который будет менять значение (в "условных енотах") при каждом опросе линии ввода данных. При достижении заданного количества - выход из цикла.
8)


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

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


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

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


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

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


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