BASİT AMA BECEREMEDİM!

Başlatan ta7om, 18 Kasım 2012, 00:27:24

ta7om

Değerli arkadaşlar, basit bir uygulama ama ben işin içinden çıkamadım. Yazdığımı Proteus üzerinde test ediyorum normal gözüküyor.

PIC programlayıp dereye taktıp, BUTON-1'e bastığımda LED-1 ve LED-2 nin aynı anda yanması gerekiyor. Butonu bıraktığımda ise LED-1 sönmesi, LED-2 nin 3 saniye sonra sönmesi gerekiyor.

Devrede her şey normal olmasına rağmen uygulamada LED-1  yaklaşık 2 saniye geç yanıyor. Sönerken normal yukarıda anlattığım gibi. Yani BUTON-1 bıraktığımda  LED-1 Anında sönüyor, LED-2    3 saniye sonra sönüyor.

Sorun BUTON-1 basıldığında LED-1 ve LED-2 nin aynı anda yanmaması!

Bir türlü işin içinden çıkamadım. Acemilik çok kötü.
Yardımlarınız için şimdiden teşekkürler.

Set_Defaults PROTON_4
  DEVICE 16F628 
 
  TRISB=%11111111
  TRISA=%00000000
  PORTA=0
  
  '------------------------------------------------------
  SYMBOL COR_RLA=PORTB.5         ' ROLE COR GIRISI (+)
  SYMBOL COR_L=PORTB.6           ' LINK COR GIRISI (+)
  SYMBOL ROLE_TX=PORTA.1         ' ROLE TX CIKISI.
  SYMBOL LINK_TX=PORTA.0         ' LINK TX CIKISI.
    
 
*************
BASLA:    
    
	ROLE:
           IF PortB.5=1 THEN
		   WHILE COR_RLA=1
		   PortA=%00000011
		      
		   WEND
		   PortA=%00000010
	       PAUSE 3000
		   PortA=0
		   ENDIF
		   
	LINK:
	
	      IF COR_L=1 THEN
		  WHILE COR_L=1
		  HIGH ROLE_TX
		  WEND
		  PAUSE 200
		  PortA=%00000000
	      ENDIF
	GOTO BASLA


Proteus DSN alt linktedir.
http://www.ta7om.com/buton/buton.DSN
http://www.ta7om.com/buton/R-L-2.HEX

sadogan

Buton-1 ve buton-2 uclarını 4k7 gibi bir direncle gnd ye baglayın.

Eren Eraslan

evet butonlar pull-up olmalı. birde transistör direnci 10k için fazla ,doyuma ulaşmayabilir..
1k net sonuç
insanın içine işleyen şarkılar ;  https://soundcloud.com/reeraslan

ipek

PORTB'yi giriş yapmışsın,
PortB_Pullups = On              ' Enable PORTB pull-ups
olması lazım..

Maxim

Alıntı yapılan: ipek - 18 Kasım 2012, 01:30:20
PORTB'yi giriş yapmışsın,
PortB_Pullups = On              ' Enable PORTB pull-ups
olması lazım..

evet hocam fakat arkadaş butonların ortak ucunu +5 volta vermiş, gereksiz.

üst satıra PortB_Pullups = On yazın ve buton ortak uçlarını gnd ye bağlayın


ek: böyle basit bir devre için osc kristal kullanmanız gerekmez
int osc kullanın 4mhz

ete

Port pinlerinin illaki pull-up lı olmasına gerek yok. Butonları pull down olarak da kullanabilirsiniz. Arkadaş da böyle kullanmış ama lowa çekme dirençlerini unutmuş.  Bu nedenle buton pinlerine 10 k direnç  bağlayıp low a çekmesi gerekir.
İşlemci B portunda dahili pull up dirençleri olduğu için prensip olarak daima pull up lı buton sistemini kullanmak avantajlıdır. Ama her ne hikmetse bu pull down lı buton sistemini de pek seviyorlar. Butona basılınca pine high gitmesini tercih ettikleri için olsa gerek.
Her neyse bu sistemin tek eksiği buton lowa çekme dirençleri. Bunlar olmadan buton pinleri low ile high arasında gezinir buna floating deniliyor bir anlamda yüzer pin demek oluyor nereye gideceği belli olmayan pin demek. Buton pini mutlaka bir konumda sabit durmalı ki butuna basılınca beklediği konumun tersi port pinine tatbik edilmeli ve böylece işlemcide butona basıldığını anlayabilmelidir.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

ta7om

Alıntı yapılan: ipek - 18 Kasım 2012, 01:30:20
PORTB'yi giriş yapmışsın,
PortB_Pullups = On              ' Enable PORTB pull-ups
olması lazım..

Bu satırları nereye ekleyecem bilmiyorum?

- Ayrıca cevaplar için çok teşekkür ederim. Bir iki konuya açıklık getireyim;

1- PileUp direnci kullandım.  Şemada yok ama asıl devrede var. 4.7k
2- Transistör dirençlerini 10k değil 1.5 k kullandım. 10K sadece şemada  görünmektedir.
3- Tasarladığım derede + ile sürmem gerekiyordu bu sebeple butonlara +5v verdim.

Teşekkürler!

sadogan

Alıntı yapılan: ta7om - 18 Kasım 2012, 10:09:57
Bu satırları nereye ekleyecem bilmiyorum?

- Ayrıca cevaplar için çok teşekkür ederim. Bir iki konuya açıklık getireyim;

1- PileUp direnci kullandım.  Şemada yok ama asıl devrede var. 4.7k
2- Transistör dirençlerini 10k değil 1.5 k kullandım. 10K sadece şemada  görünmektedir.
3- Tasarladığım derede + ile sürmem gerekiyordu bu sebeple butonlara +5v verdim.

Teşekkürler!
Pull-up direnci deyil pull-down direnci olacak.

ta7om

#8
Evet yanlış yazdım. Pardon "pull-down"!

Ama sorun henüz çözülemedi.

ta7om

Sorunu henüz çözemedim.Yardımcı olabilecek arkadaş varmı?

kudretuzuner

Merhaba
dsn dosyasına ulaşamadım.rar olarak upload eder misiniz?
Amatör

ta7om


kudretuzuner

Amatör

ta7om

Öncelikle ilginiz için çok teşekkür ederim.
PIC 16F628A ya programlarken  "fuse error 0X2007" hatası alıyorum. Dolayısı ile çalıştıramadım.

ipek

Config uzantısını beğenmemiş olabilir proglamlayıcınız.
aldığınız hata internal Eeprom adresi ile ilgili oysa programda kullnanılmamış.
Mpasm derleyiciniz mevcut ise config satırını,,,,,,,
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT  & _MCLRE_OFF & _LVP_OFF ile değiştirip yeniden derleyin..kristal kullanmanıza gerek yoktur..

ta7om_3.asm dosyasını yeniden derledim birde bunu deneyin..

:020000040000FA
:1000000007309F0083161F30850000308600831262
:100010008501860105180A28033086001D20051871
:1000200012280A281D2006101D201D201D201D201D
:100030001D201D201D2086100A285F30A0005F3083
:0E004000A100A10B2128A00B1F2808000A28F0
:02400E00103F61
:00000001FF