Отговори на тема  [ 22 мнения ]  Отиди на страница Предишна  1, 2
PIC16F1829 IR приемник полудях 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 03, 2005 2:21 am
Мнения: 12765
Местоположение: София
Мнение Re: PIC16F1829 IR приемник полудях
Това:

Прикачени файлове:
Button_code.jpg
Button_code.jpg [ 10.94 KiB | Прегледано 2291 пъти ]


Пет Май 20, 2016 4:04 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Юли 04, 2012 1:51 pm
Мнения: 44
Местоположение: София
Мнение Re: PIC16F1829 IR приемник полудях
В SONY стандарта се чака безспир стартов импулс от 2.4 милисекунди. След това се чакат следващи 12 импулса, които могат да бъдат:
фалшив - кратко смущение, елиминира се;
единица - с продължителност 1.2 мс;
нула - 0.6 мс.Импулсите са разделени с 0.6 мс паузи. Ако не се разбере кода,се чака за следващия сигнал. Идват през 45 мс, докато е натиснат бутона.
Аз съм се ограничил до 8 импулса - стигат ми.
Някои наричат тази машинария "дистанционно". На мен ми трябва за управление на нетелевизори.

_________________
Бай Цветан


Пет Май 20, 2016 4:37 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Юли 04, 2012 1:51 pm
Мнения: 44
Местоположение: София
Мнение Re: PIC16F1829 IR приемник полудях
ПРОБА ЗА ФОРМАТИРАНЕ. НЕ ЧЕТИ ТОВА
Здравей
Добро Утро
Това е страхотно!
Здрасти!
МАЛЪК
ПОГЛЕДНИ МЕ!
Код:
echo \"Това е код\";
while(1){
       while (1) {
           PulseLength = 0;
           id_but = 0;
           test = 1;
           while (RB6) {}                      //StartPuls
           TMR0 = 0;
           while (!RB6) {}                 
            PulseLength = TMR0;
           while(RB6){}
           rez = 1;
           if(PulseLength <80)  {
               rez = 0;
               continue;
         }
         if (rez == 1)break;
      }

_________________
Бай Цветан


Пет Май 20, 2016 7:56 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 8:04 pm
Мнения: 2663
Местоположение: София / Велико Търново
Мнение Re: PIC16F1829 IR приемник полудях
Добре де, и какво стана в крайна сметка ? Според мен подкарай едно по едно нещата. Не се опитвай да запуснеш всикчо наведнъж.

_________________
https://github.com/slav4ocom/


Пет Май 20, 2016 11:07 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 27, 2012 9:27 pm
Мнения: 2011
Мнение Re: PIC16F1829 IR приемник полудях
@peast, колега, ще ме извиняваш ама какво значи ника ти? На ум ми идват изпуснати букви!


Пет Май 20, 2016 11:43 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Юли 04, 2012 1:51 pm
Мнения: 44
Местоположение: София
Мнение Re: PIC16F1829 IR приемник полудях
Код:
Първо - извинявам се за пробата, с която се научих да форматирам кода. Вече ще знам.
   В крайна сметка - току що успях да реша проблема си. По съветите на Толстолоб увеличих прескалера на 1:16, за да хваща стартовия импулс. Не знам дали от това, или от няколко други незначителни промени, но в тази късна доба приключих. Ако за някого е интересно, утре (т.е.днес)ще пусна окончателната прогрaма, вече в човешки вид.
   Относно ника : тъй като често пускам безплатни обяви за фирмичката си Пласмент Изток, съм съкратил Placement East на peast
   Благодарен съм на всички вас. Започвам да смятам, че тук човек за човека е приятел.

_________________
Бай Цветан


Съб Май 21, 2016 2:03 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Юли 04, 2012 1:51 pm
Мнения: 44
Местоположение: София
Мнение Re: PIC16F1829 IR приемник полудях
Код:

Това е работещата програма. Хардуерът е базовия за контролера, като на RB6 е включен стандартен инфрачервен сензор RPM7038 или 7040 - има ги в Комет винаги за стотинки. Осцилаторът е кварцов 4 Мх, мисля, че ставаше и с вътрешния. Предавателят е от туториала на Nigel Goodwin, като съм изрязал нещата за приемника и LSD дисплея. Там е и софтуера му.

/*  * File:   dcVel3.c   * Author: tsetso * * Created on Maj 20, 2016, 1.40 PM */


#include "pic16f1829.h"

// CONFIG1
#pragma config FOSC = HS    // Oscillator Selection (ECH, External Clock, High Power Mode (4-32 MHz): device clock supplied to CLKIN pin)
#pragma config WDTE = OFF       // Watchdog Timer Enable (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable (PWRT disabled)
#pragma config MCLRE = ON       // MCLR Pin Function Select (MCLR/VPP pin function is MCLR)
#pragma config CP = OFF         // Flash Program Memory Code Protection (Program memory code protection is disabled)
#pragma config CPD = OFF        // Data Memory Code Protection (Data memory code protection is disabled)
#pragma config BOREN = ON       // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config CLKOUTEN = OFF   // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
#pragma config IESO = ON       // Internal/External Switchover (Internal/External Switchover mode is enabled)
#pragma config FCMEN = ON       // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled)
//#pragma config "DEBUG" = OFF
// CONFIG2
#pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)
#pragma config PLLEN = OFF       // PLL Enable (4x PLL enabled)
#pragma config STVREN = ON      // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will cause a Reset)
#pragma config BORV = HI        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LVP = OFF        // Low-Voltage Programming Enable (High-voltage on MCLR/VPP must be used for programming)

#include <xc.h>

int err = 0, i, j, PulseLength = 0;
unsigned int id_but = 0, test = 1, rez = 0;

void Init(void) {
  //  OSCCON =
    PORTA = 0;
    PORTB = 0;
    PORTC = 0;
    LATA = 0;
    LATB = 0;
    LATC = 0;
    TRISA = 0;
    TRISB = 0b01000000; // Port B bit 6 is input
    TRISC = 0;
    ANSELA = 0;
    ANSELB = 0;
    ANSELC = 0;
     nWPUEN = 0; // Enabled Weak Pull Up's
    WPUA = 0;
    WPUB6 = 1; //
    TMR0CS = 0; //Timer choosed, not counter
    INTCON = 0;
    INTEDG = 1; //rising edge trigger the interrupt
    PSA = 0; // PRESCALER ASSIGNED TO TIMER0
    PS2 = 0;
    PS1 = 1; //  1:16  PRESCALER RATE
    PS0 = 1;
}

void Puls(void){
     TMR0 = 0;
        while (!RB6) {}                 
         PulseLength = TMR0;
         while(RB6){}                   
         if ( PulseLength >45){           // 1 or 0?
               for (j=0; j <= i; j++)test = test*2;
               id_but =  id_but | test;
        }
}

void main() {
    Init();
    while(1){
       while (1) {
           PulseLength = 0;
           id_but = 0;
           test = 1;                           //StartPuls
           while (RB6) {}                 
           TMR0 = 0;
           while (!RB6) {}                 
            PulseLength = TMR0;       
           while(RB6){}                     
           rez = 1;
           if(PulseLength <85)  {         //accidental
               rez = 0;
               continue;
         }
         if (rez == 1)break;
      }
// If here, it is start pulse. Wait for the  next pulse
      for (i = 1; i <9; i++){
        Puls();
     }
     switch (id_but){
        case 32832:  {LATC = 1;       // button   1
                             break;}
        case 260:  {LATC = 2;           // button  2
                             break;}
        case 520:  {LATC = 4;           // button  3
                             break;}
        case 2084:  {LATC = 8;         // button  4
                             break;}
    }             
    i = 0;
    }
  }


_________________
Бай Цветан


Съб Май 21, 2016 5:51 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 22 мнения ]  Отиди на страница Предишна  1, 2

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни