tk 19 muadili ve RBO/INT çalışması

Başlatan aqua, 13 Şubat 2013, 14:53:22

aqua

Önce herkese merhaba....
Projemin  bir kısmı olan tv kumandası ile kontrol için, tk-19 muadili 536aa3p d21b kullandım ve uygulama devresi üzerinde sinyal alıyorum.(Led bağlantısı yaptığımda  kumandaya basınca led yanıp sönüyor.)Ancak bu alıcının kumanda bilgisi aldığında  0V olması gereken çıkış ucu 18f452 RBO/INT ucunu tetikleyemiyor.(kumandaya basılı tuttuğumda avometre ile gerilim ölçümümde minimum 4-4,5 v  görüyorum.Tabiki 18 ms içindeki 0v gerilimi göremem ama...).Bağlantı şeması datasheetindeki gibi..4,7 mF kondasatör,100 ohm direnç bağlı..Yardımlarınızı bekliyorum...

aqua

Herneyse,,.. zorda olsa bu sorunun üstesinden şimdilik geldim.

Ama şimdi ekranda, Toggle  0, Adres  0, Command 0 sonucu her kumandaya basmamla geliyor.Kumanda rc5 update i  geçip sinyal olarak algıladığı halde  sonuç ekranda çoğu tuşta aynı... Yardım edebileceklere şimdiden tşk...

ferit06

Aslında bu tür mesajlara cevap verilmez. ama yenisiniz ben size bir şeyler yazayım. Nasıl bir cevap bekliyorsunuz. Ortaya sunduğunuz hiç bir şey yok( devre, kod vs.). Siz bir şeyler yapmış olabilirsiniz ancak "tk 19 muadili ve RBO/INT çalışması" başlığından başka otrada hiç bir şey yok, ne yardımı almayı umuyorsunuz?

Önce
https://www.picproje.org/index.php/topic,4587.0.html

burayı okuyun ki cevap alabilesiniz.

aqua

Alakanıza teşekkürler..
Aslında soru sorma tekniğinde hem mesleki hemde yaşım itibari ile  gayet yeterliyimdir.Ancak bilinen doğru..İnsan bildiği kadar sorar...Sonuç olarak dediğiniz gibi pic programlamaya 40 yaşından sonra hobi olarak başlayan birisi olarak gayet yeniyim.Mühendisim ama elektronik branşım değil.......öğrenmeye çalışıyorum...

Sorunu program dilinde aktaramamın nedeni ise yazılımı flowcode ile yaptığımdandır.Aynı sorunla karşılaşan varsa cevap verebilir diye kısa bir soru sordum.Yoksa benim  projemin destek bölümü olarak kimseden birşey beklediğimden değil...  ;)

ferit06

#4
buradakilerin tamamı da elektronik mühendisi değiller. Çoğu kişi de sizin gibi, benim gibi hobi olarak uğraşıyorlar.  Ancak dediğim gibi size cevap gelebilmesi için devre şeması, kod veya sizin yaptığınız gibi flowcode olmadan veya sorunu tam olarak anlatmadan/anlatamadan buradan size cevap vermek zor.

mesajınızdan:

ma şimdi ekranda, Toggle  0, Adres  0, Command 0 sonucu her kumandaya basmamla geliyor. Kumanda rc5 update i  , buradan ne yapmak istediğinizi nasıl anlayıp cevap verilsin?
Size yardım edilebilmesi için öncelikle sizin bu konuda yardımcı olmanız gerekir ki burada okuyanlar tecrübelerini/bilgilerini paylaşabilsin.

Bakın burada bir program örneği var ve kumandanın RC5 veya SIRC protokolünde olduğunu tespit edip verilen komutu LCD ekrana veriyor.
'*****************************************************************
'*  Name     : IR KUMANDA TEST SONY/PHILIPS RC5  (Sony_rc5x1.bas *
'*  Designer : FERIT06                                           *
'*  Notice   : All rights free                                   *
'*           :  Tüm hakları serbesttir.                          *
'*  Date     : 07/01/2013                                        *
'*  Version  : 1.0                                               *
'*  Notes    :                                                   *
'*****************************************************************
Config  INTRC_OSC_NOCLKOUT, WDT_OFF , PWRTE_ON , BODEN_OFF , LVP_OFF ,CP_OFF
Device = 16F628A
Xtal = 4			
TRISB = %00000001
TRISA = %11111011
CMCON=7    		   '16F628 de komparatör pinleri iptal hepsi giriş çikis
All_Digital = TRUE 		   	' TÜM PORTLAR DIGITAL
Declare LCD_DTPin PORTB.4 
Declare LCD_ENPin PORTB.3 
Declare LCD_RSPin PORTB.2 
Declare LCD_Interface 4 
Declare LCD_Lines 2 
Symbol SSG = PORTA.3
Symbol LED = PORTA.2
Sonyin_Pin PORTB.0
RC5In_Pin PORTB.0
Dim IR_Data As Word
Dim SYS_Data As IR_Data.HighByte
Dim COM_Data As  IR_Data.LowByte
Dim sistem As Byte
Dim timtim As Word
Dim sinyal As Byte

On_Hardware_Interrupt uyar

LED=0
Print $FE,1 
Print $FE,2, "SONY/RC5 IR TEST"
DelayMS 500
sinyal=0

basla:
If PORTA.1=0 Then  GoTo yeni    'Programca sistem belirlenmesi
OPTION_REG.6=1                  'yükselen kenar tetik
INTCON.7=1                      'Genel interrupt açık
INTCON.4=1                      'RB0 Interrupt Enable
While sinyal=1 :Wend         'IR_sinyal gelene kadar bekle
LED=1                           'IR sinyal alındı
sinyal=0
sistem=5
eski:

If PORTA.1=0 Then  GoTo yeni   'Programca sistem belirlenmesi
Print At 2,1,"SISTEM PORTA.1   "
INTCON.7=0                      ' Genel interrupt kapalı
INTCON.4=0                      'RB0 Interrupt kapalı
LED=0
While sinyal=1 :Wend         'IR_sinyal gelene kadar bekle
LED=1                           'IR sinyal alındı
sinyal=0

If SSG =1 Then      GoSub SONY           'sistem SONY

If SSG = 0 Then     GoSub RC5            'sistem RC5

GoTo eski

yeni:
sistem=5
sinyal=0
Print At 2,1,"SISTEM PROGRAM  "

OPTION_REG.6=1                  'yükselen kenar tetik
INTCON=%10010000                'Genel Interrupt açık RB0 Enable
'INTCON.7=1                     'Genel interrupt açık
'INTCON.4=1                     'RB0 Interrupt Enable
' INTCON bit şeklindeki atamayı çalışmanın ilk aşamasında kabul etmesine
' rağmen kesmeden dönüşte bu şekikdek atamada 7 nolu bit1 olmakta ancak
' 4 nolu bit 1 olmuyordu....
While sinyal=1 : Wend           'IR_sinyal gelene kadar bekle
LED=1                           'IR sinyal alındı

sinyal=0

GoSub sistem_oku                'sistemin programca belirlenmesi

If sistem=2 Or sistem=3 Then basla

LED=0


devam:                          'sistem belli komut oku

If PORTA.1=1 Then  GoTo eski   'PORTA.3 ce sistem belirlenmesi
INTCON=%10010000                'Genel Interrupt açık RB0 Enable
'INTCON.7=1                     'Genel interrupt açık
'INTCON.4=1                     'RB0 Interrupt Enable
' INTCON bit şeklindeki atamayı çalışmanın ilk aşamasında kabul etmesine
' rağmen kesmeden dönüşte bu şekikdek atamada 7 nolu bit1 olmakta ancak
' 4 nolu bit 1 olmuyordu....
While sinyal=1    : Wend        'IR_sinyal gelene kadar bekle
LED=1                           'IR sinyal alındı
sinyal=0                     
INTCON.7=0                      'Genel interrupt kapalı
'INTCON.4=0                      'RB0 Interrupt kapalı


If sistem =0 Then    GoSub SONY           'sistem SONY

If sistem = 1 Then   GoSub RC5            'sistem RC5

If sistem=2 Or sistem=3 Then yeni      'sistemin yeniden okunması 

GoTo devam
'============== ALT PROGRAMLAR==========================
sistem_oku:

T1CON=%00000000   'TMR1 SAYACI AYARLANIYOR  FOSC/4 YUKSELEN KENAR
INTCON.7=0                          'interrupt kapalı
PORTB.1=1                           'komut okunuyor
TMR1L=0 : TMR1H=0  
    While PORTB.0=1: Wend
PORTB.1=~ PORTB.1
    While PORTB.0=0: Wend
PORTB.1=~ PORTB.1
    T1CON.0=1                       'sayma başlat
    While PORTB.0=1: Wend
    T1CON.0=0                       'sayma durdur
    
timtim=256*TMR1H
timtim=timtim+TMR1L

header:    

If timtim <500 Or timtim >1800 Then  'kısa veya uzun bir pals ise tuş 
                                      'okumadan çık,  512 us den kısa veya          
                                      '1800 uS den uzun boşluk  
    Print At 2,1,"SISTEM OKUNAMADI"
    sistem=2
   DelayMS 500
EndIf             

If timtim >750 And timtim <1800 Then ' kumanda sistemi RC5 (boşluk min 900 us)
    sistem=1                         ' 768 us den uzun boşluk
    Print At 2,1,"SISTEM RC5      "     
EndIf              
                                ' 768 us den  kısa boşluk(boşluk max 600 us)
If timtim >500 And timtim <650 Then  ' kumanda sistemi SIRC
    sistem=0 
    Print At 2,1,"SISTEM SONY    "
EndIf

If timtim>650 And timtim <750  Then
    TMR1L=0:TMR1H=0           'tmr1'i sıfırla  (yaklaşık 1.8ms)
    PORTB.1=~ PORTB.1         'SIRC header süresi 2.4 ms seviyesindedir.                            
    Print At 2,1,"SISTEM BELIRSIZ"
    sistem=3
'    DelayMS 2000
EndIf
timtim=0
Return

SONY:   '=================================================
     'sistem SONY

    Repeat
    IR_Data = SonyIn
    Until COM_Data <> 255
    LED = 0                      'IR sinyal okundu
    
    Cls
    Print $FE,2,"SONY KOD OKUMA  "
    Print At 2,1,"CIHAZ=",Hex2 SYS_Data," ","KOD=",Hex2 COM_Data
    DelayMS 100
 Return
 RC5:  '======================================================


   Repeat
    IR_Data = RC5In
    Until COM_Data <> 255
    LED = 0                     'IR sinyal okundu

    Cls
    Print $FE,2,"RC5 KOD OKUMA  "
    Print At 2,1,"CIHAZ=",Hex2 SYS_Data," ","KOD=",Hex2 COM_Data
    DelayMS 100
 
Return

 
'=================KESME PROGRAMI=======================================
uyar:                        'kesme programı
Context Save 
INTCON=0                   ' Global interrupt disable
INTCON.4=0     
sinyal=1
INTCON.1=0 
                  ' Kesme bayrağı sıfırlanıyor
Context Restore     
'=======================================================================
End


bu program çalışıyor. Ancak  sadece kumandanın kodunun görüntülenmesi amacıyla yazılmış bir program değildir. başka bir proje için alt yapı amacıyla hazırlanmıştır.