Например TDA7294

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





Текущее время: Ср май 14, 2025 00:44:19

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


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



Начать новую тему Ответить на тему  [ Сообщений: 48 ]    , 2,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Ср окт 16, 2024 22:26:40 
Открыл глаза

Зарегистрирован: Пт дек 09, 2011 18:31:13
Сообщений: 51
Рейтинг сообщения: 0
В PIC12f508 TMR0 с этим справится?
Пытаюсь разобраться в настройке и запуске таймера на pic12f508
Из мануала
Режим Таймера выбирается сбросом бита T0CS (OPTION 5). В режиме таймера, модуль Timer0 инкременируется каждый машинный цикл (без ПД). После записи в регистр TMR0 его инкрементация задерживается на следующие два цикла (Рис 6-2 и Рис. 6-3). Подробное описание смотреть в руководстве по PIC16C8X. Пользователь может это использовать, для записи и коррекции значения регистра. Режим счетчика выбирается установкой бита T0CS (OPTION < 5 >). В этом режиме, Timer0 инкременируется по фронту или спаду входного сигнала на выводе T0CKI. Бит T0SE (OPTION < 4 >) определяет фронт переключения. Установка бита T0SE вызывает инкремент ТС по спаду входного сигнала.

РЕГИСТР OPTION
Bit5: T0CS: Timer0 выбор источника тактирования 1 = С внешнего вывода GP2 / T0CKI, 0 = Внутренняя частота, Fosc/4
Bit4: T0SE: выбор фронта переключения Timer0 1 = Инкремент при переходе с “1”на “0” на выводе T0CKI,, 0 = Инкремент при переходе с “0”на “1” на выводе T0CKI
Импульсы нужно подавать только на ногу T0CKI или можно на любую другую GP0, 1, и тд?
Bit3: PSA: Бит назначения предварительного делителя (ПД) 1 = Предварительный делитель включен после WDT 0 = Предварительный делитель включен перед Timer0 Bit2-0: PS2-PS0: Выбор коэф.деления ПД
Нужно включать делитель?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Чт окт 17, 2024 08:11:09 
Мудрый кот
Аватар пользователя

Карма: 27
Рейтинг сообщений: 656
Зарегистрирован: Ср апр 04, 2012 09:55:53
Сообщений: 1788
Откуда: Северодонецк
Рейтинг сообщения: 0
С максимальным делителем таймер переполнится за 1/15с . Забудьте в про таймер в этом мк в отношении к вашей задаче.
Разберитесь с алгоритмами предложными мной и описанным Martian.
За вас код никто не напишет, но вас поправят и подскажут.
Вы движетесь , пока, не туда.

_________________
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Чт окт 17, 2024 09:07:43 
Открыл глаза

Зарегистрирован: Пт дек 09, 2011 18:31:13
Сообщений: 51
Рейтинг сообщения: 4
Я для себя понимаю примерный алгоритм работы, но по идее нужен отдельно таймер либо отдельный независимый процесс, который будет считать время между импульсами, и отдельно кусок программы на всё остальное.
Код естественно буду пробовать писать самостоятельно.

В алгоритме мартина не совсем понял про сдвиг 1 влево.
Позавчера проводил эксперименты с функцией __Delay, при ее работе контроллер стоит на месте, ждет.
Для теста заменил ее на цикл for где просто было N=N+1; и проверка нажатия кнопки, по замерам осциллографом 12500 сложений=500ms, 250 сложений=10ms.
Была идея по приходу импульса запускать цикл for, по второму приходу останавливаем, таким образом будет известно время ( количество сложений) между импульсами, но возникла проблема, нужно же параллельно запускать еще один цикл по приходу импульса на вход, который будет равен прошлое время минус 15ms к примеру, и он будет включать выход.
Но параллельно два цикла работать не смогут, либо нужен цикл внутри цикла. :cry:

Добавлено after 23 minutes 56 seconds:
Набросал блок схему, она не совсем полная, тут скажем так на один цикл работы, далее все по кругу
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Чт окт 17, 2024 09:09:19 
Говорящий с текстолитом

Карма: 25
Рейтинг сообщений: 449
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1579
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Измерение временных характеристик сигналов одним таймером (и у которого нет interrupt при преполнения) - это своего рода "мазохизм" :П.
Вариант: с помощью имеющегося таймера организовать "временное окно", в течение которого будете "замерять" входной сигнал. Но без interrupt в таймере метод опять полный беспорядок. Приходится постоянно "проверять", сколько времени прошло от предыдущего события или предыдущего сброса. С задержкой на чтение и вычитанием сравнения - метод снова бессмысленен. И это должно быть помещено в 25 байт SRAM :). Поменяйте МК на такой, у которого два таймера. Один: для отчета о времени, другой: для состояния входного сигнала – передний/задний фронт. А после анализа времени запускайте/останавливайте другие выходы по мере необходимости. (частично пользуюсь переводчиком)


Вернуться наверх
 
Открыт интернет-магазин MEAN WELL.Market – весь ассортимент MEAN WELL, выгодные цены

Открыта удобная площадка с выгодными ценами, поставляющая весь ассортимент продукции, производимой компанией MEAN WELL – от завоевавших популярность и известных на рынке изделий до новинок. MEAN WELL.Market предоставляет гарантийную и сервисную поддержку, удобный подбор продукции, оперативную доставку по России. На сайте интернет-магазина посетители смогут найти обзоры, интересные статьи о применении, максимальный объем технических сведений.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Чт окт 17, 2024 10:14:23 
Открыл глаза

Зарегистрирован: Пт дек 09, 2011 18:31:13
Сообщений: 51
Рейтинг сообщения: 0
Думал на вариантом 12f629, там больше функционал, но оригинальный вариант вроде работает на 12c(f)508 ( но это не точно) , поэтому изначально и пал на него выбор


Вернуться наверх
 
LED-драйверы MOSO - надежные решения для индустриальных приложений

Продукция MOSO предназначена в основном для индустриальных приложений, использует инновационные решения на основе более 200 собственных патентов для силовой электроники и соответствует международным стандартам. LED-драйверы MOSO применяются в системах наружного освещения разных отраслей, включая промышленность, сельское хозяйство, транспорт и железную дорогу. В ряде серий реализована возможность дистанционного контроля и программирования работы по заданному сценарию. Разберем решения MOSO подробнее>>
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Чт окт 17, 2024 10:30:13 
Сверлит текстолит когтями

Карма: 12
Рейтинг сообщений: 124
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1204
Рейтинг сообщения: 0
Для таких задач, зачастую, даже таймер не нужен.


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Чт окт 17, 2024 11:24:15 
Мудрый кот
Аватар пользователя

Карма: 27
Рейтинг сообщений: 656
Зарегистрирован: Ср апр 04, 2012 09:55:53
Сообщений: 1788
Откуда: Северодонецк
Рейтинг сообщения: 0
veso74 писал(а):
Вариант: с помощью имеющегося таймера организовать "временное окно", в течение которого будете "замерять" входной сигнал.

Не путайте человека
СпойлерИзображение


Цитата:
Поменяйте МК на такой, у которого два таймера.

Ага, на stm32 :facepalm: (сарказм)


Вложения:
прерывание таймера 2.png [72.12 KiB]
Скачиваний: 228

_________________
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Чт окт 17, 2024 12:07:38 
Друг Кота

Карма: 68
Рейтинг сообщений: 1958
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
не совсем понял про сдвиг 1 влево.
Я написал влево? :shock: прошу прощения, этот от бессонницы. Вправо, конечно же. Эквивалент делению на два.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Чт окт 17, 2024 14:06:33 
Мудрый кот
Аватар пользователя

Карма: 27
Рейтинг сообщений: 656
Зарегистрирован: Ср апр 04, 2012 09:55:53
Сообщений: 1788
Откуда: Северодонецк
Рейтинг сообщения: 0
Если вы подаете на вход постоянно 1 , что у вас с выходом твориться?

_________________
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Чт окт 17, 2024 14:31:28 
Открыл глаза

Зарегистрирован: Пт дек 09, 2011 18:31:13
Сообщений: 51
Рейтинг сообщения: 0
Если 1 на входе постоянная, то просто срабатывает выход на 760ms и всё.
(на фото а начале)
Изображение

Мартин, извиняюсь, я ошибся, у Вас и было указано сдвиг вправо (немного непривычная формулировка для меня, поэтому уточнил) деление на 2 звучит проще :)))

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Чт окт 17, 2024 14:39:58 
Друг Кота

Карма: 68
Рейтинг сообщений: 1958
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
не, было влево, я после Вашего замечания исправил.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Чт окт 17, 2024 14:40:32 
Открыл глаза

Зарегистрирован: Пт дек 09, 2011 18:31:13
Сообщений: 51
Рейтинг сообщения: 0
по приходу импульса:
значение счётчика сохранить в переменную N со сдвигом вправо на 1 (делим на 2)
сбросить счётчик
инвертировать выход
запустить цикл до N.


Но тогда выход будет включен все время до прихода нового импульса, разве нет? Задача именно включить выход немного заранее ( 10-30ms) перед новым импульсом


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Чт окт 17, 2024 14:46:24 
Друг Кота

Карма: 68
Рейтинг сообщений: 1958
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
необходимость вычисления времени между двумя импульсами будет всегда, либо придётся строить невероятно огромную и вряд ли здесь нужную систему сбора статистики и прогнозирования, которая может оказать совершенно недостоверной, если изменения абсолютно случайны.
Так что, выход всегда будет отставать от входа на один период.

Добавлено after 3 minutes 6 seconds:
Но тогда выход будет включен все время до прихода нового импульса, разве нет? Задача именно включить выход немного заранее ( 10-30ms) перед новым импульсом
Это возможно только при постоянной частоте на входе. Если постоянна - то тогда измеряем первые несколько периодов, убеждаемся, что она постоянна, ну и дальше каждый импульс запускает счётчик, равный длительности минус 10-30 мс, и проверяет эти 10-30 мс на следующем импульсе.
И это всё можно без таймера, просто инкрементировать переменные и знать, сколько времени это занимает.
А на графике мне показалось /2


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Чт окт 17, 2024 14:48:37 
Открыл глаза

Зарегистрирован: Пт дек 09, 2011 18:31:13
Сообщений: 51
Рейтинг сообщения: 0
Завтра сделаю например от 0 до 5-10гц как происходит корректировка времени выхода


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Чт окт 17, 2024 15:00:04 
Друг Кота

Карма: 68
Рейтинг сообщений: 1958
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
ну, в зависимости от направления, скорости и диапазона изменения частоты, при таком простом алгоритме, будет ситуация, когда выходной импульс совпадёт со входным, и то, если это заставить его делать, иначе он будет позже. Либо писать какой-то анализ, что если два раза частота изменилась на какую-то дельту, примерно равную, то предполагать, что и в третий раз будет. Это очень запарно, на мой взгляд и меняет время вычислений непрогнозируемо, придётся использовать таймер.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Чт окт 17, 2024 15:12:23 
Друг Кота
Аватар пользователя

Карма: 94
Рейтинг сообщений: 1464
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14980
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Я вот не пойму... А зачем по сути повторителю импульсов временные характеристики измерять - то?
Похоже rusman159 перемудрил с задачей.
Для начала словами описать "чего хочется" да ручками график желаемого нарисовать.
А там и прояснится...
Интервалы времени не только таймером обеспечиваются.
Вопрос "предсказания" ожидаемого входного сигнала можно решать только при заранее заданном диапазоне входных параметров - иначе для столь простого МК это не имеет решения.
Да и программу для такой "букашки" лучше под ассемблером делать.
:dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Чт окт 17, 2024 16:25:21 
Открыл глаза

Зарегистрирован: Пт дек 09, 2011 18:31:13
Сообщений: 51
Рейтинг сообщения: 0
Задача простая, мк должен обеспечивать минимально короткий импульс на выходе при поступлении сигнала на вход.
И стремится при стабильной частоте к минимальному времени работы выхода, около 10ms.
При этом включение выхода должно быть еще до поступления сигнала на вход.

Вот осциллограммы с исходника из поста выше
Скорее всего мк ориентируется по времени между двумя прошлыми импульсами и исходя из этого времени заранее включает выход, чтобы на момент поступления сигнала на вход время работы выхода составило около 10мс ( в идеале), завтра сделаю замер, есть ли зависимость времени выхода от частоты.

Тут я вручную жал на кнопку, поэтому периоды разные, но мк +- подгоняет работы выхода под нужный интервал.
Изображение Изображение
Вот пример работы при стабильной частоте 25hz, частота может плавно меняться от 0 до 300hz и обратно
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Чт окт 17, 2024 16:43:56 
Друг Кота

Карма: 68
Рейтинг сообщений: 1958
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
ну, понятие "плавно" не очень информативно... нужно описывать скорость изменения математически, если это вообще возможно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Чт окт 17, 2024 16:50:24 
Мудрый кот
Аватар пользователя

Карма: 27
Рейтинг сообщений: 656
Зарегистрирован: Ср апр 04, 2012 09:55:53
Сообщений: 1788
Откуда: Северодонецк
Рейтинг сообщения: 0
Изображение
В середине видно , что никаких там предсказаний и 10мс нет.
Скорее всего ПИД. Регулирующий импульс макс 760мс мин 0
ПЕресчет ПИД либо по таймеру и/или по ниспадающему фронту.
повторю вопрос при постоянной 1 на входе на выходе сигнал переодический или единичный?
Если единичный, то только по фронту, переодический = фронт+ таймер.
На фото видно и колебания и перерегулирование.

_________________
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Чт окт 17, 2024 17:27:10 
Друг Кота
Аватар пользователя

Карма: 94
Рейтинг сообщений: 1464
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14980
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Задачка предсказания для датчика положения ленты относительно нагревательных ножей фасовочного автомата?
Штука весьма неблагодарная и самим МК ничего особо не меняющая, если механика уже свой срок отработала...
8)


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

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


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

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


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

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


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