Например TDA7294

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





Текущее время: Вс июл 06, 2025 21:27:06

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


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



Начать новую тему Ответить на тему  [ Сообщений: 48 ]  1, ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Вс окт 13, 2024 23:41:01 
Открыл глаза

Зарегистрирован: Пт дек 09, 2011 18:31:13
Сообщений: 51
Рейтинг сообщения: 0
Добрый вечер!
Имеется мини отладочная плата и PIC12F508
Пробую простейшие программы со светодиодами
Не могу разобраться, почему уровни 0=включено, 1= выключено.
К примеру GPIO = 0b00000011; выключает два светодиода на ногах GP0 и GP1
Кнопки тоже работают наоборот, в чем может быть проблема?

Код:
#include <xc.h>
// chip=PIC12F508

// CONFIG
#pragma config CP = OFF    // Code protection off
#pragma config OSC = IntRC // internal RC oscillator
#pragma config MCLRE = ON  // GP3/MCLR pin function is MCLR
#pragma config WDT = OFF   // WDT disabled


#define _XTAL_FREQ 4000000L
//#define BUTTON GPIO0
#define LED1 GP0
#define LED2 GP1
#define KEY1 GP2
#define KEY2 GP5
void main(void)
{
  GPIO = 0x00; //
  OPTION = 0b11000000; // Подтяжка и пробуждение по входам отключены
  TRIS = 0b11111100; // GP1,GP2 = output
  GPIO = 0x00;
  int flag=0;
 
while (1)
{
    LED1=1;
    LED2=0;
}
}


Тут LED1 не горит, LED2 горит


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Вс окт 13, 2024 23:53:18 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4563
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
На схему пробовали смотреть ?
Ну, или, в крайнем случае, нам показать её :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Пн окт 14, 2024 00:16:03 
Друг Кота

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


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

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


Последний раз редактировалось rusman159 Пн окт 14, 2024 07:41:35, всего редактировалось 1 раз.

Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Пн окт 14, 2024 07:34:15 
Друг Кота

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Пн окт 14, 2024 23:57:49 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4563
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
:facepalm:


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

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Вт окт 15, 2024 00:42:11 
Друг Кота

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


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

Зарегистрирован: Пт дек 09, 2011 18:31:13
Сообщений: 51
Рейтинг сообщения: 0
Спасибо большое!

Добавлено after 1 hour 8 minutes 43 seconds:
Еще возник вопрос, как работать с таймером TMR0 ?
Необходимо вычислить время между двумя импульсами на ноге GP0 или GP1
Как можно настроить таймер на счет времени и куда будет записываться значение?
не смог найти примеры на 12f508, но ранее с таймерами на pic не работал


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

Карма: 25
Рейтинг сообщений: 450
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1630
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Начало деятельности именно с PIC12F508 не OK. Его ресурсы слишком ограничены. Напр. по TMR0 - нет interrupt при переполнении. Вообще нет interrupts. Вариант: на той же пробной плате замените МК на другой из серии: PIC12F675, PIC12F683, PIC12F1822, PIC12F1840 ...


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

Карма: 27
Рейтинг сообщений: 656
Зарегистрирован: Ср апр 04, 2012 09:55:53
Сообщений: 1789
Откуда: Северодонецк
Рейтинг сообщения: 0
Боюсь, что ваш контроллер аппаратно захват не сможет сделать.
Софтово, надо знать какие промежутки надо ловить и с какой точностью.

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


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

Зарегистрирован: Пт дек 09, 2011 18:31:13
Сообщений: 51
Рейтинг сообщения: 0
У меня есть устройство на чипе 12с508 ( вроде как ), но прочитать его не смогу.
насколько я понимаю, там реализация такая:
1 вход
1 выход
При поступлении первого и (если он единственный) импульса на вход мк включает выход на 0.7сек
Потом со 2 и далее импульса мк сокращает время включения выхода примерно до 10ms по замерам осциллографом, но самый нюанс в том, что мк должен включить выход заранее, когда импульс на вход еще не поступил.
Т.е необходимо сделать замер времени между двумя импульсами на входе и при поступлении 2, 3 и далее импульсов заранее ( за 10-15ms ) до предполагаемого импульса включаем выход, при поступлении импульса отключаем выход, делаем перерасчет времени и всё сначала.
Как мне кажется, это можно сделать только таймером, или как еще можно рассчитать время между двумя прошлыми импульсами, чтобы заранее включить выход?
Пример во вложении (нажать для увеличения)
Изображение


Последний раз редактировалось rusman159 Ср окт 16, 2024 14:14:15, всего редактировалось 1 раз.

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

Карма: 27
Рейтинг сообщений: 656
Зарегистрирован: Ср апр 04, 2012 09:55:53
Сообщений: 1789
Откуда: Северодонецк
Рейтинг сообщения: 0
По ослику он его включает по ниспадающему фронту, фиксированной длинны. :roll:

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


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

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

Да, так как для замеров на входе был сигнал около 25hz
Опытным путем ( при нажатии кнопки рукой, либо с генератора ) мк начинает подстраивать включение выхода заранее, чтобы время накопления было около 10ms ( т.е лампочка, которая подключена на выход загорается всего 10ms+- ), но включена или выключена сейчас не суть важно, главное как включить заранее)

Добавлено after 2 minutes 22 seconds:
По ослику он его включает по ниспадающему фронту, фиксированной длинны. :roll:

Да, так как для замеров на входе был сигнал около 25hz
Опытным путем ( при нажатии кнопки рукой, либо с генератора ) мк начинает подстраивать включение выхода заранее, чтобы время накопления было около 10ms ( т.е лампочка, которая подключена на выход загорается всего 10ms+- )

Если 12f508 не может посчитать время между импульсами, то кто из его братьев сможет? Например 12f629?
Но от производителя информация была именно о чипе 12c508 ( без маркировки на нем )


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

Карма: 27
Рейтинг сообщений: 656
Зарегистрирован: Ср апр 04, 2012 09:55:53
Сообщений: 1789
Откуда: Северодонецк
Рейтинг сообщения: 0
У вас грубо период 40мс . Вы постоянно считываете в цикле состояние сигнала с входа(желтый сигнал GP0, предположим) и как только он станет равным 0 GP1 =1 задержка 30 мс GP1=0(красный сигнал) и вернулись к считыванию состояния сигнала.

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


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

Зарегистрирован: Пт дек 09, 2011 18:31:13
Сообщений: 51
Рейтинг сообщения: 0
А если заранее неизвестна частота или период? Условно от 2 до 300hz, тогда опять возвращаемся к необходимости вычислить время между прошлыми импульсами.
Т.е сейчас скорость вентилятора 5hz, далее изменилась до 150hz и каждый раз нужно включать выход заранее на 10ms
Необходимо использовать таймер, ведь так?


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

Карма: 27
Рейтинг сообщений: 656
Зарегистрирован: Ср апр 04, 2012 09:55:53
Сообщений: 1789
Откуда: Северодонецк
Рейтинг сообщения: 0
Вы "ЗАРАНЕЕ" никак не узнаете при изменяющейся частоте. С таймером или без, т.к. вам неизвестно будет на сл. импульсе период больше или меньше. Скорее всего вы не правильно интенсифицируете полученные данные.

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


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

Зарегистрирован: Пт дек 09, 2011 18:31:13
Сообщений: 51
Рейтинг сообщения: 0
Если частота станет меньше, то пройдут несколько более длинных импульсов на выходе, это не критично, на следующем такте длина уже скорректируется.
Т.е мк посчитал, что период был 40ms, значит нужно включить выход через 30ms, включает выход через 30ms, но вдруг импульс поступил через 60ms, выход будет включен дольше, далее скорректируется, так как частота изменяется плавно в большую либо меньшую сторону
Могу снять осциллограмму работы при изменении частоты.


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

Карма: 27
Рейтинг сообщений: 656
Зарегистрирован: Ср апр 04, 2012 09:55:53
Сообщений: 1789
Откуда: Северодонецк
Рейтинг сообщения: 0
Т.е. абстрактно это должно работать так с максимальной длинной импульса ~255 мс?
Код:
     time=0;
   duration=0;
   tik=0;
   while(1)
   {
      if ((KEY_PULS == 1)&(tik==0))   {tik=1;   time=0;}   
      if ((KEY_PULS == 0){tik=0;duration=time;load =1; }                                                         
      delay_1ms();
      if (tik) { time++;}
            else
            {   
               if (duration==0) {
                              load =0;}
               else {
                              duration--;}
            }
   }

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


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

Зарегистрирован: Пт дек 09, 2011 18:31:13
Сообщений: 51
Рейтинг сообщения: 0
Все работает и на более низкой частоте, вот к примеру 1 и 2 картинка.
Первый импульс, после него сделал задержку, выход был включен максимальное время 760ms, далее со 2 и далее импульса начинается подстройка, тут время работы выхода не 10мс, а около 80-100ms, но оно подстраивается с повышением частоты.
Изображение
в середине частота около 1.75-2hz, всё отрабатывает корректно. ( сделаем погрешность на мою неравномерность подучи импульсов)
Изображение
Далее подал импульсы ( вручную ) около 7hz, не очень равномерно, но результат работы +- стабильный.
Изображение
Т.е вот такую логику работы и нужно получить.


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

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

вне прихода имульса:
приращивать единичку на счётчике
по завершению цикла (N) инвертировать выход


Последний раз редактировалось Martian Чт окт 17, 2024 12:08:36, всего редактировалось 1 раз.

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

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


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

Сейчас этот форум просматривают: frogling777 и гости: 3


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

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


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