avatar_jun

devrede reset ve parazit sorunu

Başlatan jun, 07 Ocak 2013, 14:53:19

jun

Merhaba arkadaşlar aşagıdaki kodları kullanarak sayıcı devresi yaptım ve çalıştırdım fakat zamanla sıkıntılar oluşmaya başladı,reset tuşuna basmadan sıfırlıyor kendi kendine sayıyor vs aşagıdaki kodlara bakarmısınız yanlış olan bir şeymi var baskı devreyide ekliyorum (devre kutulu şekilde florasan lambanın yanında duruyor devre parazit yaparmı? yaparsa çözümü nedir.parazitr için sigorta ayarları ne olmalı.)


;@ DEVICE pic16F628A                      ;'işlemci 16F628                               
;@ DEVICE pic16F628A, WDT_OFF              ;'Watch Dog timer açık
;@ DEVICE pic16F628A, PWRT_OFF             ;'Power on timer açık
;@ DEVICE pic16F628A, PROTECT_ON          ;'Kod Koruma kapalı
;@ DEVICE pic16F628A, MCLR_OFF             ;'MCLR pini kullanılıyor.
;@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT  ;Dahili osilatör kullanılacak
@ __config _XT_OSC & _WDT_OFF & _MCLRE_OFF & _LVP_OFF & _CP_ON
CMCON=7
'ADCON1=7
PortA=0
TrisA=%00001111
PortB=0
TrisB=%00000000

TUSA VAR PORTA.0
TUSB VAR PORTA.1
TUSC VAR PORTA.2
TUSD VAR PORTA.3

SURE     VAR BYTE
SAYI     var WORD
BIRLER   VAR BYTE
ONLAR    VAR BYTE
YUZLER   VAR BYTE
A        VAR BIT
B        VAR BIT
A=0
B=0
PAUSE 3000
PORTB=0
'-------------------------------------------------------------------------------
'SAYI=999:GOSUB GONDER:PAUSE 300:SAYI=899:GOSUB GONDER:PAUSE 300:SAYI=799:GOSUB GONDER:PAUSE 300
'SAYI=699:GOSUB GONDER:PAUSE 300:SAYI=599:GOSUB GONDER:PAUSE 300:SAYI=499:GOSUB GONDER:PAUSE 300
'SAYI=399:GOSUB GONDER:PAUSE 300:SAYI=299:GOSUB GONDER:PAUSE 300:SAYI=199:GOSUB GONDER:PAUSE 300
'SAYI=99:GOSUB GONDER:PAUSE 300:SAYI=89:GOSUB GONDER:PAUSE 300:SAYI=79:GOSUB GONDER:PAUSE 300
'SAYI=69:GOSUB GONDER:PAUSE 300:SAYI=59:GOSUB GONDER:PAUSE 300:SAYI=49:GOSUB GONDER:PAUSE 300
'SAYI=39:GOSUB GONDER:PAUSE 300:SAYI=29:GOSUB GONDER:PAUSE 300:SAYI=19:GOSUB GONDER:PAUSE 300
'SAYI=9:GOSUB GONDER:PAUSE 300:SAYI=8:GOSUB GONDER:PAUSE 300:SAYI=7:GOSUB GONDER:PAUSE 300
'SAYI=6:GOSUB GONDER:PAUSE 300:SAYI=5:GOSUB GONDER:PAUSE 300:SAYI=4:GOSUB GONDER:PAUSE 300
'SAYI=3:GOSUB GONDER:PAUSE 300:SAYI=2:GOSUB GONDER:PAUSE 300:SAYI=1:GOSUB GONDER:PAUSE 300
'SAYI=0:GOSUB GONDER:PAUSE 300


GOSUB OKU
PAUSE 20
GOSUB GONDER
PAUSE 200
'-------------------------------------------------------------------------------
BASLA:
        pause 100
     IF TUSC=0 THEN RST
     
     if TUSA=0 then ART
                 
     if TUSB=0 then AZ
     
     if TUSD=0 then ARTT
     
      GOTO BASLA
     
      RST:
      SAYI=0
      GOSUB GONDERR
      GOTO BASLA
     
      ART:
      SAYI=SAYI+1
       pause 200
       gosub yaz
     IF SAYI=1000 THEN SAYI=0
       
        gosub gonder
        GOTO BASLA
       
        ARTT:
      SAYI=SAYI+1
       pause 200
       gosub yaz
     IF SAYI=1000 THEN SAYI=0
       
        gosub gonderR
        GOTO BASLA
     
     AZ:
     SAYI=SAYI-1
        pause 200
        gosub yaz
     IF SAYI=65535 THEN SAYI=999
       
        gosub GONDERR
        GOTO BASLA
     
      YAZ:
      write 0, SAYI.lowbyte
      write 1, SAYI.HIGHBYTE
     
      RETURN
     
      OKU:
      READ 0, SAYI.LOWBYTE
      READ 1, SAYI.HIGHBYTE
     
      RETURN
     
      GONDER:
      BIRLER=SAYI DIG 0
      ONLAR= SAYI DIG 1
      YUZLER= SAYI DIG 2
     
      PORTB=240 | BIRLER
      LOW PORTB.6
      PAUSE 1
      HIGH PORTB.6
      PAUSE 1
   
      PORTB=240 | ONLAR
      LOW PORTB.5
      PAUSE 1
      HIGH PORTB.5
      PAUSE 2
     
      PORTB=240 | YUZLER
      LOW PORTB.4
      PAUSE 1
      HIGH PORTB.4
     
      PAUSE 5000
      PAUSE 5000
      PAUSE 5000
     
      RETURN
     
       GONDERR:
      BIRLER=SAYI DIG 0
      ONLAR= SAYI DIG 1
      YUZLER= SAYI DIG 2
     
      PORTB=240 | BIRLER
      LOW PORTB.6
      PAUSE 1
      HIGH PORTB.6
      PAUSE 1
   
      PORTB=240 | ONLAR
      LOW PORTB.5
      PAUSE 1
      HIGH PORTB.5
      PAUSE 2
     
      PORTB=240 | YUZLER
      LOW PORTB.4
      PAUSE 1
      HIGH PORTB.4
     
      'PAUSE 5000
      'PAUSE 5000
      'PAUSE 5000
     
      RETURN         
     
     
      END
                 

jun


ete

#2
Yardım edecek yokmu derken sanki bir yardım varda onu yapmıyormuşuz gibi bir hava yaratılıyor. Bu sorunun program üzerinden çözülmesi mümkün değil. Bu sebeple kimse cevap yazmıyor. Bazı sorunları gidermek için devre elinizde olması gerekiyor. Buda yanlış anlaşılmasın devre şeması yada pcb şemasıda yeterli değil. Bir sürü ölçüm yapıp sorunun neden kaynaklandığını bulmak gerekir.
Senin sorununa benzer sorunla karşılaştım ama hep işlemci bacaklarındaki 100 n lik kondansatör eksikliğinden kaynaklanıyordu. Senin pcb de bu kondansatörü görüyorum. Bu nedenle sebep başka olmalı ama nedir bilemiyorum açıkçası.
Ete

jun

estagfurullah ete abi.devredeki sıkıntı şu devreye 12 v anahtarını actıgında hemen sayıcı butona basılmış gibi davranıp sayıyı 1 artırıyor neden kaynaklandıgını bulamadım,programda mantık hatasımı diye baktım bulamadım.beslemeye filtremi koymalıyım yada buton baglantısının optolu yada filtreli bir çeşiti varmıdır?

ete

Filtre ile bu iş çözülürmü bilemem. Ama bazı denemeler yapabilirsin.
Mesela,
TRISA=%00001111 komutunu TRISA=0 olarak değiştir ve pice yükle. Programı çalıştır bak bakalım yine sayıyormu programın.
Sayıyorsa donanımla ilgili bir sorunun var demektir. Bu yaptığımız denemede tuş pinlerini çıkış olarak ayarlamış olduk.
Dolayısıyla saydırma yapmaması gerekir.
Bu denemeyi yap sonucu bildir sonra başka bir şey düşünelim.

Ete

F®T

İstersen devreyii florasandan uzaklastirip  bir dene
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

kotan04

eğer filtre kullanılması gerekiyorsa bozuk bilgisayar powerlarını filtre kısmı kesip kullanabilirsin

jun

cevaplarınız içn teşekkürederim deneyip hemen bilgilendircem.

outlaw57

değerli hocalarım,

Benim bir sorum var. Ben tasarladığım devrede L7805 girişinde 10uf elektrolitik çıkışında ise 100nf polyester kapasitör kullandım ve bu regülatör ile 3 tane işlemci besledim (2 adet 16f876, 1 adet 18f4550) bu durumda devrem çalışıyor ancak bir süre sonra (süre belirli değil ancak yaklaşık olarak 3 ay gibi) devre kilitleniyor.  Daha önce yazılanları inceledim ve regülatörün datasheetine göre yanlış kapasitör kullanımı yapmışım. Bunu değiştirmek (yani girişte 330nf çıkışta 100nf) sorunumu çözer mi yoksa hem bu değişikliği yapıp hemde işlemcilerin Vdd-Vss arasına ekstradan bir kapasitör (decoupling capasitor) atmak mı gerekir.
2. durumda bu decoupling capasitor değeri ne olmalıdır?
Teşekkür ederim.

hakıkat

 Merhaba outlaw57
Devredeki parazitlere ilişkin kapsamlı bilgiyi forumda şu başlık altında bulabilirsin.
Alıntı YapPIC lerde Parazit ve Çözümleri
Burda da öğreneceğin gibi artık herkes  7805 girisine 330 nf ,  7805 cikisina da 100nf ve
10 mikrofarad kullanmaktadır ve bende kullandım henüz ciddi bir sorunla karşılaşmadım.
saygılar.

Powered by EzPortal