Arkadaşlar yavaştan bu pici programlamaya başladım. Sitelerde okuduklarımdan anladığım kadarı ile basit basit bir şeyler yapmaya çalışıyorum. İlk olarak butona bastığımda 2 sn ledi yakacak, sonra 4 sn beklicek sonra 1sn ledi yakacak bir devre yapmaya çalışıyorum (burdaki amaç basit döngüleri kullanıp isiste simülasyon yapmayı becerebilmek :) ). Bu amaçla microcode studio plusta basic ile aşağıdaki kodları yazdım ve complier olarak pic basic pro 2.47 kullanmaktayım.
TRISB=%00000001 PAUSE 70 BASLA: IF PORTB.0=1 THEN HIGH PORTB.1 PAUSE 2000 LOW PORTB.1 PAUSE 4000 HIGH PORTB.1 PAUSE 1000 LOW PORTB.1 ENDIF GOTO BASLA END
Ancak isiste simülasyona başladığımda şöyle problemler oluşuyor: 1- Butona basmadan led sürekli yanıyor, ben butona basınca bir süre sonra sönüyor. 2- Led sönünce tekrar butona basıyorum. Bu durumda led yanıyor, bir süre sönük yanıyor ve tekrar yanıyor. Bu durumda devre düzgün çalışıyor gibi görünüyor; fakat led 2 sn yanıcağına 5 sn yanık kalıyor simülasyonda.
Sizce nerelerde hata yapıyorum. Program basit ama daha çırağız bu konularda yardım
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
öncelikle, pic in ilk anda tüm çıkışları 1 olur bu çok kısa süren bi süreçtir ama yazılımda yavaşlama ile uzun sürebilir ya da kafasından bi değer atamış da olabilir.. bu kafadan değer atamayı önlemek için öncelikle programın başında tüm portları sıfırlamak yararına olacaktır. zaman farkı olayı ise yine isisin pc kasması durumunda real time da çalışmamasından kaynaklanıyor olabilir, altta ünlem işaretine tıklayarak uyarılara bakabilirsin.. ayrıca pic e program yazarken osilatör ayarını doğru yapmalısın.. programı 4mhz lik kristal ayarında yazıyorsan isiste de entegrenin detaylarından bu kristal değerini girmelisin..
Çıkışları başlangıçta sıfırlayıp tekrar deneyeceğim. Programı yazarken krsital ayarı ile ilgili herhangi bir işlem yapmamıştım. Tekrar gözden geçireyim. Teşekkürler.
PORTB.0 ucuna pull-down direnç takmazsanız Pic havadan gelen elektromanyetik dalgalardan etkilenir ve girişi High olarak algılayabilir. Bu sorunu çözmek için PORTB.0 ile şase arasına 10K direnç takmanız lazım.
@ DEVICE pic16f84a
@ DEVICE pic16f84a, WDT_OFF
@ DEVICE pic16f84a, PWRT_ON
@ DEVICE pic16f84a, PROTECT_OFF
@ DEVICE pic16f84a, XT_OSC
TRISB=%00000001
PAUSE 70
BASLA:
IF PORTB.0=1 THEN
HIGH PORTB.1
PAUSE 2000
LOW PORTB.1
PAUSE 4000
HIGH PORTB.1
PAUSE 1000
LOW PORTB.1
ENDIF
GOTO BASLA
END
Ancak isiste simülasyona başladığımda şöyle problemler oluşuyor:
1- Butona basmadan led sürekli yanıyor, ben butona basınca bir süre sonra sönüyor.
2- Led sönünce tekrar butona basıyorum. Bu durumda led yanıyor, bir süre sönük yanıyor ve tekrar yanıyor. Bu durumda devre düzgün çalışıyor gibi görünüyor; fakat led 2 sn yanıcağına 5 sn yanık kalıyor simülasyonda.
Sizce nerelerde hata yapıyorum. Program basit ama daha çırağız bu konularda yardım
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.