Например TDA7294

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





Текущее время: Вт июл 15, 2025 15:06:58

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


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



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

Зарегистрирован: Пт дек 09, 2011 18:31:13
Сообщений: 51
Рейтинг сообщения: 0
Это логика работы управления катушкой зажигания на старом скутере, около 10ms-время заряда катушки перед искрой.
Скорость нарастания около 30hz/сек.

Цитата:
повторю вопрос при постоянной 1 на входе на выходе сигнал переодический или единичный?
Если единичный, то только по фронту, переодический = фронт+ таймер.

При постоянной 1 на входе на выходе один единичный сигнал 760ms и всё

Цитата:
На фото видно и колебания и перерегулирование.

Да, так как я подавал сигнал нажатием на кнопку, отсюда и нестабильная частота на входе.
Вечером подключу генератор импульсов и сделаю замер выхода на 2-10-15hz.

Добавлено after 1 hour 29 minutes 42 seconds:
Замеры с генератором импульсов.
2.5hz, период = 395ms, импульс на выходе 58ms
5hz, период = 200ms, импульс на выходе 30ms

7.5hz, период = 133ms, импульс на выходе 20ms
10hz, период = 100ms, импульс на выходе 15ms
15hz, период = 66ms, импульс на выходе 10ms
Т.е выход примерно в 6.8 раз короче чем период на входе.

75hz, период = 13.2ms, импульс на выходе 5.8ms
150hz, период = 6.68ms, импульс на выходе 3.92ms
Но тут скважность возможно не совсем корректно настроена на генераторе, завтра сделаю замер без генератора, на железе.

Несколько осциллограмм с генератором (красный это выходной импульс):
7.5hz
Изображение
15hz
Изображение


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

Карма: 27
Рейтинг сообщений: 656
Зарегистрирован: Ср апр 04, 2012 09:55:53
Сообщений: 1789
Откуда: Северодонецк
Рейтинг сообщения: 0
Исходник для 629(в протеусе нет 508 :))) )
Код:
#include <pic.h>
#include <stdio.h>
#include <htc.h>

#define KEY_PULS   GPIO5
#define LOAD      GPIO1

void power_on_delay(void);
void delay_1ms(void);

bit tik;                                    
   
unsigned char time_hi,time_lo;
unsigned int duration;

/***********************************************************/
 
__CONFIG(FOSC_INTRCIO & WDTE_OFF & MCLRE_OFF & PWRTE_ON & BOREN_OFF & CP_OFF & CPD_OFF);

__EEPROM_DATA(0,0,0,0,0,0,0,0);

_READ_OSCCAL_DATA();

main()
{

   power_on_delay(); 

    CMCON = 0x7;                /* turn off comparators */
     GPIO=0;                        
    TRISIO = 0b110000;            
   duration=0;
   tik=0;
   while(1)
   {
      if ((KEY_PULS == 0)&(!tik))   {tik=1;LOAD =1;                           
                           duration=time_lo;
                           duration+=time_hi;
                           duration-=5;
                           time_lo=0;
       }   
      if ((KEY_PULS == 1)&(tik))  {tik=0;time_hi=0; }            
      delay_1ms();
      delay_1ms();
      if (tik) { time_lo++;}
         else { time_hi++;}
      if (duration==0) {
                              LOAD =0;}
               else {
                              duration--;}
   
   }
}

void power_on_delay(void)
{
   unsigned int i;
   for(i = 0; i<1000; i++)
   {
      delay_1ms();
   }   
}

void delay_1ms(void)
{
   unsigned char i;
   for(i = 0; i<130; i++)
   {
      ;
   }   
}

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


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

Карма: 25
Рейтинг сообщений: 450
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1633
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Исходник для 629(в протеусе нет 508 :))) )

Вероятно снова шутите. Сделайте на 12F508 как в теме.
Изображение


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

Карма: 27
Рейтинг сообщений: 656
Зарегистрирован: Ср апр 04, 2012 09:55:53
Сообщений: 1789
Откуда: Северодонецк
Рейтинг сообщения: 0
Отнюдь :dont_know: , но думаю rusman159 справится :music:
Изображение

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


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Пт окт 18, 2024 13:18:26 
Открыл глаза

Зарегистрирован: Пт дек 09, 2011 18:31:13
Сообщений: 51
Рейтинг сообщения: 0
RoboC, Спасибо!
Вечером буду проверять, вчера тоже пробовал через циклы, но столкнулся с одной проблемой ( скорее всего она звучит глупо)
При первом нажатии проверял

Код:
if ((KEY1 == 0)&&(Flag==0))
{
KEY1=1;
LED1=0; (Включаем выход при первом цикле)
flag=1;
for(i = 0; i<15000; i++)
   {
if ((KEY1 == 0) && (flag==1)) (второе нажатие кнопки)
{
LED1=1;
Break;

}
      ;
   } 
Далее делаем действия и тд


Получилось так, что при нажатии кнопки я заходил в цикл и сразу вылетал через Break, так как кнопка была уже нажата.
Хотя с ставил KEY1=1;
Если вместо KEY1 Указывал KEY2, то как положенно заходил в первый цикл ожидания, включался выход, при нажатии второй кнопки выход отключался и цикл прерывался как положено.
Но с одной и той же кнопки не хотело работать :)))
Нужно как-то не учитывать ее состояние, либо только по переднему фронту проверять


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

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

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


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

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: PIC12f508 Инвертирование сигналов
СообщениеДобавлено: Пт окт 18, 2024 19:43:52 
Открыл глаза

Зарегистрирован: Пт дек 09, 2011 18:31:13
Сообщений: 51
Рейтинг сообщения: 0
RoboC, Проверил на мк, вместо bit tik пришлось поставить int tik
Результат получился обратный, импульс на выход подается После поступления импульса на вход
Изображение
Вот как должно быть, выход включается до поступления импульса на вход
Изображение


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

Зарегистрирован: Пт дек 09, 2011 18:31:13
Сообщений: 51
Рейтинг сообщения: 0
Взял на тест несколько PIC12F675, они уже с прерыванием.
Не могу разобраться со входами
По даташиту настроил GP2, GP5 на входы, но если ставлю if (KEY1==0), то переключение выходов не работает в цикле, если ставлю if (KEY2==0), то всё работает, как так?
Пробовал подключать кнопку к GP4, if (GP4==0), тоже не работает

Код:
#pragma config CP = OFF    // Code protection off
#pragma config FOSC = INTRCCLK  // Oscillator Selection bits (INTOSC oscillator: CLKOUT function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN)
#pragma config WDTE = ON        // Watchdog Timer Enable bit (WDT enabled)
#pragma config PWRTE = OFF   
#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#define _XTAL_FREQ 4000000L

//#define BUTTON GPIO0
#define LED1 GP0
#define LED2 GP1
#define KEY1 GP2
#define KEY2 GP5
/*
 *
 */
void main(void)
{
 //GPIO =0; //
 WPU =0b11111111;
 OPTION_REG = 0b10000000; // ???????? ? ??????????? ?? ?????? ?????????
 TRISIO = 0b00111100; // GP0,GP1 = output
 GPIO = 0b00000011;
 while(1)
 {
     if (KEY1==0)
  GPIO = 0b00000010;
     else
  GPIO = 0b00000001;
 }
   
   
}


Нужно было
ANSEL = 0x00; //disable all analog pins and make digital I/O


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

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


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

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


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

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


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