BUTTON KOMUTUNDA HATA NERDE?

Başlatan sozkarabacak, 28 Ağustos 2009, 12:07:47

sozkarabacak

SELAMLAR,
Aşağıda resmini göreceğiniz devre ile aşağıdaki kodları çalıştırmak istiyorum. Program similasyonda gayet normal çalışmakta. Ama gerçek uygulama devresine pic16f628 işlemciyi programlayıp taktığımızda butonlara basmadan sürekli dtmf yolluyor. Similasyonda düzgün çalışan ama gerçek uygulamada çalışmayan bu yazılımın sorunu acaba ne olabilir?
BU UYGULAMA DEVREMİZ:


Bu devrede kullandığımız yazılım.
@ DEVICE pic16F628A                                                    
@ DEVICE pic16F628A, WDT_OFF              
@ DEVICE pic16F628A, PWRT_ON 
@ DEVICE pic16F628A, HS_OSC              
@ DEVICE pic16F628A, PROTECT_OFF
DEFINE OSC 20
D1 var byte 
D2 var byte
LEDAC VAR PORTA.0
LEDKAPA VAR PORTA.1

'-------------------------------------------------------------------------------
TRISB=%00000100
TRISA=%11111100
PORTB=0
PORTA=0
CMCON=7  
'-------------------------------------------------------------------------------
Butonkontrol:
D1=0:D2=0 
    DEFINE BUTTON_PAUSE 50
    Button PORTB.0,0,254,0,D1,0,dtmfled 
    DEFINE BUTTON_PAUSE 50
    Button PORTB.1,0,254,0,D2,0,dtmfled2
    Goto Butonkontrol
dtmfled:
 PAUSE 200
    DTMFOUT PORTB.4,90,110,[3,1,6] 'PİN,Çalma süresi,Durma zamanı,[TON1,TON2....]       
    LEDAC=1
    LEDKAPA=0
    Goto Butonkontrol
dtmfled2:
  PAUSE 200
    DTMFOUT PORTB.4,90,110,[5,1,5,1] 'PİN,Çalma süresi,Durma zamanı,[TON1,TON2..]
    LEDAC=0
    LEDKAPA=1
    Goto Butonkontrol
END 
'------------------------------------------------------------------------------
http://picasaweb.google.com/33elektronik http://www.33elektronik.tr.cx MSN: [email]sukruozkarabacak@hotmail.com[/email]

ftsahin

Şunu deneyin :

@ DEVICE pic16F628A                                                    
@ DEVICE pic16F628A, WDT_OFF              
@ DEVICE pic16F628A, PWRT_ON 
@ DEVICE pic16F628A, HS_OSC              
@ DEVICE pic16F628A, PROTECT_OFF 
DEFINE OSC 20 
D1 var Byte 
D2 var Byte 
LEDAC VAR PORTA.0 
LEDKAPA VAR PORTA.1 

'------------------------------------------------------------------------------- 
TRISB=%00000100 
TRISA=%11111100 
PORTB=0 
PORTA=0 
CMCON=7  
'------------------------------------------------------------------------------- 

butonkontrol:
  d1=0
  d2=0
  If PORTB.0=1
    While PORTB.0=1
      DelayMS 10
    Wend
    GoTo dtmfled
  EndIf
  If PORTB.1=1
    While PORTB.1=1
      DelayMS 10
    Wend
    GoTo dtmfled2
  EndIf
  DelayMS 50
  GoTo butonkontrol
  
  
dtmfled: 
 PAUSE 200 
    DTMFOut PORTB.4,90,110,[3,1,6] 'PİN,Çalma süresi,Durma zamanı,[TON1,TON2....]        
    LEDAC=1 
    LEDKAPA=0 
    GoTo butonkontrol 
dtmfled2: 
  PAUSE 200 
    DTMFOut PORTB.4,90,110,[5,1,5,1] 'PİN,Çalma süresi,Durma zamanı,[TON1,TON2..] 
    LEDAC=0 
    LEDKAPA=1 
    GoTo butonkontrol 
End 
'------------------------------------------------------------------------------

nurim

@sozkarabacak,

DİKKAT!, butonların ortak uçları +12v bağlanmış bu durumda pic'e +12v verililirki bu pic 'in yanmasına neden olur.+5v ta bağlanmalıdır.
TRIS komutlarında giriş olarak kullanılan pinler (1), çıkış olarak kullanılan pinler (0) olmalıdır.
TRISB=%00000011  gibi

Kolay gelsin
nurim
"Bilgi paylaştıkça artar ,acı ve keder paylaştıkça azalır"

sozkarabacak

Alıntı yapılan: "nurim"@sozkarabacak,

DİKKAT!, butonların ortak uçları +12v bağlanmış bu durumda pic'e +12v verililirki bu pic 'in yanmasına neden olur.+5v ta bağlanmalıdır.
TRIS komutlarında giriş olarak kullanılan pinler (1), çıkış olarak kullanılan pinler (0) olmalıdır.
TRISB=%00000011  gibi

Kolay gelsin
nurim

Selamlar,
Gerçekten dikkatimden kaçmış. Çok teşekkürler. Yazılımsal sorunuda hallettim.
http://picasaweb.google.com/33elektronik http://www.33elektronik.tr.cx MSN: [email]sukruozkarabacak@hotmail.com[/email]

solidus

Nasıl hallettiğinizi de paylaşırsanız foruma uygun bir davranış olmazmı ?
Kimine göre kralım kimine göre yalanım… Herkes rahatına baksın, ben adamına göre adamım..

Ruzgarbey

Alıntı yapılan: "solidus"Nasıl hallettiğinizi de paylaşırsanız foruma uygun bir davranış olmazmı ?
picbasic te button komutunda problem olduğu bayadır söylenmektedir ve bunun çözümüde bulunmuş değil :)
en güzel çözüm button komutunu kullanmamaktadır.
button portb.1=1  komutu yerine
while portb.1=1 :wend
komutu kullanmaktır.ben her buton uygulamamda bu komutu kullanırım şimdiye kadar bir sorun yaşamadım.
ayrıca şükrü hocanın forumlardaki mesajlarının bir çoğunu okudum.paylaşma sınırlarının çok dar olduğunu gördüm.sorununu bir şekilde forumda paylaşım yapanlar veya kendi çabaları ile çözüyor hepsi o kadar.nasıl çözdüğünü kesinlikle açıklamaz :D
saygılarımla..
Hayatta En Hakiki Mürşid İlimdir. M.K. ATATÜRK