avatar_ete

IR_HABERLEŞME PROJESİ

Başlatan ete, 21 Haziran 2015, 18:44:10

efehurkan

Merhaba Üstadlar,
Linteki IR repater yaptım ama çalıştıramadım, alıcı ledi çalışıyor gibi görünüyor kumanda tuşlarına bastığımda Led 3 yanıp sönüyor, fakat gönderici ledinde hiç bir tepki yok.

http://picprojects.org.uk/projects/miniprojects.htm#IR%20Remote%20Control%20Repeater

coco

Usta çırağa kızar çırak bozulur birşey diyemez ama birşeyler öğrenirmiş aynen öyle oluyor çalıştırdım
Sizin yazdığınızla değil ama yardımcı oldu bakalım dahada geliştireceğim

coco

Hocam merhaba
Pic12f675 ile Sony alıcı programı çalıştıramadım yardım

@ DEVICE pic12F675, INTRC_OSC_NOCLKOUT ' DAHİLİ OSİLATOR
@ DEVICE pic12F675, WDT_OFF
@ DEVICE pic12F675, PWRT_ON
@ DEVICE pic12F675, MCLR_ON
@ DEVICE pic12F675, BOD_OFF
@ DEVICE pic12F675, CPD_OFF
@ DEVICE pic12F675, PROTECT_OFF

DEFINE OSC 4

ANSEL = 0                'Portlar çıkış
TRISIO=%000100           '2. BIT GIRIS DİĞERLERİ ÇIKIŞ
CMCON=7                  'Komparator kapalı

SYMBOL LED1= GPIO.4      ' GPIO.4 pinine sembol ismi olarak LED1 adı verildi.
SYMBOL LED2= GPIO.5      ' GPIO.5 pinine sembol ismi olarak LED2 adı verildi.
symbol IR_Goz= GPIO.2
POZ  VAR  BIT

Paket var word 56
IR_AL var word(12) '58

Tus   Var Byte 82
Cihaz Var Byte 83
I     var Byte
Z     var BYTE
Led   var bit
           
BASLA:           
IF TUS=18 THEN   
       HIGH LED1 
      ELSE
       LOW LED1   
      ENDIF             
           
      IF TUS=19 THEN   
       HIGH LED2
      ELSE
       LOW  LED2 
      ENDIF   
     
           GOTO BASLA

TUSGIR:
       TUS=0:CIHAZ=0
       PuLSIN IR_Goz,0,PAKET
       if PAKET<200 OR PAKET>270 then  RETURN

       for I=0 to 11
         pulsin IR_Goz,0,IR_AL(I)
       next     

       
       Tus=127
AYIKLA:
       For I=0 to 6
         if IR_AL(I)<80 then Tus.bit0=0
       next

       Cihaz=%00011111
       for I=0 to 4
         IF IR_AL(7+I)<80 then Cihaz.Bit0=0
       next
       RETURN
GOTO BASLA
       
END

onurinci

@ DEVICE pic12F675, MCLR_OFF deneyin..

coco


ete

Bu bilgiyi (TRISIO=%000100  ) 8 bit üzerinden ver.

Ayrıca 12F675 belalı bir işlemcidir. Uzak durmanızı tavsiye ederim. Belası Osilatör Ayar değerinin (OSCCAL) program son hafızasına kaydından kaynaklanıyor. Normalde programlayıcı ara yüz programları bu değeri önce okuyup sonradan tekrar yerine yazıyorlar programlarken. Ama bunu bir komut yaptırıyor. Sende bunu otomatik yaptıran komut programında eksik gözüküyor;
DEFINE OSCCAL_1K 1  'bu komut mutlaka olacak OSCCAL değerini yeniden pice yazdırıyor
Bu olmadan programlama esnasında OSCCAL değerinin üzerine program yazılır ve pic çalışmaz hale gelir.
Şimdi yapman gereken şey,
Öncelikle o kullandığın pic i programlayıcıya yerleştir ve İçindekileri oku bakalım en sondaki adresde FF FF mi kayıtlı yoksa 3F38 gibi bir değermi kayıtlı.
FF FF var ise pic çalışmaz hale gelmiş demektir. Çaresi Pickit2 programlayıcı da. OSCCAL değerini yeniden verme seçeneğini kullanarak o işlemci için uygun değeri buldurmalısın.
Menü seçeneklerinde yer alıyor. Programlayıcın PicKit2 değilse o pici at yenisini yukarıda verdiğim komut ile kullanmaya çalış.

Ete


coco

#81
Son değer olarak 344C yazıyor.Pic çalışıyor

(Bu bilgiyi (TRISIO=%000100  ) 8 bit üzerinden ver.) Anlayamadım nasıl?

ete

#82
TRISIO=%000100  kaç digit var yazdığın şu bilgide %000100 bunu TRISIO=%00000100 şeklinde yaz diyorum.
344C yazıyorsa pic sağlam durumda demektir. Nasıl olmuş o komut olmadan onuda anlamadım ama sen yinede dediğim satırı ekle programına.

Programa da bir bakıver istersen RF okuma kısmı neresi ve sen oraya programı yolluyormusun acaba??????
Kısaca en başta BASLA ise GOTO BASLA arasında IR okumaya gidilmesini sağlayan bir komut varmı yokmu bir kontrol ediver diyorum.


Ete

coco


Son hali bu çalıştıramadım IR gözden sinyal pice gidiyor sinyalı alıglayıp Ledi yakmıyor
Programda ıf tuş ile gelen bilgiyi ilgili portlara aktarmıyormuyuz?

@ DEVICE pic12F675, INTRC_OSC_NOCLKOUT ' DAHİLİ OSİLATOR
@ DEVICE pic12F675, WDT_OFF
@ DEVICE pic12F675, PWRT_ON
@ DEVICE pic12F675, MCLR_Off
@ DEVICE pic12F675, BOD_OFF
@ DEVICE pic12F675, CPD_OFF
@ DEVICE pic12F675, PROTECT_OFF

Define OSCCAL_1K 1 ' Set OSCCAL for 1K device


ANSEL = 0                'Portlar çıkış
TRISIO=%00000100          '2. BIT GIRIS DİĞERLERİ ÇIKIŞ

CMCON=7                  'Komparator kapalı

SYMBOL LED1= GPIO.4      ' GPIO.4 pinine sembol ismi olarak LED1 adı verildi.
SYMBOL LED2= GPIO.5      ' GPIO.5 pinine sembol ismi olarak LED2 adı verildi.
symbol IR_Goz= GPIO.2
POZ  VAR  BIT

Paket var word 56
IR_AL var word(12) '58

Tus   Var Byte 82
Cihaz Var Byte 83
I     var Byte
Z     var BYTE
Led   var bit
           
BASLA:           
IF TUS=18 THEN   
       HIGH LED1 
      ELSE
       LOW LED1   
      ENDIF             
           
      IF TUS=19 THEN   
       HIGH LED2
      ELSE
       LOW  LED2 
      ENDIF   
     
           GOTO BASLA

TUSGIR:
       TUS=0:CIHAZ=0
       PuLSIN IR_Goz,0,PAKET
       if PAKET<200 OR PAKET>270 then  RETURN

       for I=0 to 11
         pulsin IR_Goz,0,IR_AL(I)
       next     

       
       Tus=127
AYIKLA:
       For I=0 to 6
         if IR_AL(I)<80 then Tus.bit0=0
       next

       Cihaz=%00011111
       for I=0 to 4
         IF IR_AL(7+I)<80 then Cihaz.Bit0=0
       next
       RETURN
GOTO BASLA
       
END

ete

Hala ısrarla aynı hatayı yapıyorsun.
Programda IR okuma TUSGIR isimli etiket altındaki alt programda yapılıyor.
IR kod okuması yapılabilmesi için programı buraya GOSUB TUSGIR şeklinde bir komut ile yönlendirmen gerekiyor.
Sen ise ne yapmışsın bakalım.
Program normalda aşağıdaki kod satırları arasında dolaşıyor. BASLA ise işe bağlanıyor ve iki tane IF komut çevriminden sonra GOTO BASLA ile tekrar başa dönülüp aynı işler tekrarlanıyor.
Peki bu komutların arasında hiç GOSUB TUSGIR diye bir şey varmı. Yok ben göremiyorum!!!!. O halde nasıl kod okuyacak bu program?okumaz ve çalışmaz elbette.

BASLA:           
IF TUS=18 THEN   
       HIGH LED1
      ELSE
       LOW LED1   
      ENDIF             
           
      IF TUS=19 THEN   
       HIGH LED2
      ELSE
       LOW  LED2
      ENDIF   
     
           GOTO BASLA

BASLA etiketinin hemen altına;
GOSUB TUSGIR komut satırını eklemen gerek. Gidip kod varmı bakacak dönüşte okunan kod 18 ise veya 19 ise dediklerini yapacak. Yoksa bekle dur bir şey yapmayacak.
Ete

coco

Evet bu şekilde yaptım sonuç yok


BASLA:
 
GOSUB TUSGIR
       
IF TUS=18 THEN   
       HIGH LED1 
      ELSE
       LOW LED1
         
      ENDIF             
           
      IF TUS=19 THEN   
       HIGH LED2
      ELSE
       LOW  LED2
       
      ENDIF   
     
goto BASLA

ete

sorunu başka yerde ara o zaman. Kullandığın IR göz 38-42 Khz aralığında çalışanbir şey olsun. Piyasada 32Khzde başlayan gözler var.
Bir başka denemede göz çıkışı bir NPN transistör ile terslenerek deneme yapılabilir.
Kullandığın verici Sony vericisi olsun.

Ete

coco

Aynı alıcı göz PIC16F628A bağlı ve çalışıyor aynı kumandayla. Harici 4mhz mi denesem?

ete


coco

#89
4mhz denedim çalışmıyor Xt_osc yaptım ve TRISIO=%00000100 aynı bıraktım Ledleride  osc  pinlerinde olduğumdan Gpıo0 ve Gpıo1 kullandım

Powered by EzPortal