10F222 Portan Sabit Çıkış Sorunu

Başlatan UGR, 19 Aralık 2014, 05:39:19

UGR

Merhaba
10F222 ile puls okuyup puls'e göre çıkış almak istiyorum. İsiste devreyi çalıştırıyorum herhangi bir sorun gözükmüyor fakat devrede çıkış 1 saniye 1 veya daha sık aralıklarla High komutunda kesiklikler oluyor sorun nereden kaynaklanıyor olabilir ?
Device=10F222
Xtal=4
''Config $0f8
All_Digital = TRUE
@ CONFIG_REQ
@ __config MCLRE_OFF & CP_ON & WDT_Off  & IOFSCS_4MHZ
Input GPIO.0
Output GPIO.1

GPIO=%00000

Dim led As GPIO.1
Dim puls As Word
Dim I As Byte
puls=0


led=0
DelayMS 1000




basla:
DelayMS 50
puls=0
puls = PulseIn GPIO.0,1 

If puls > 150 Then
led=1
Else
led=0
EndIf


 


GoTo basla



End
       


ete

Açıklamana bakılırsa derleyici analog olan pinleri tam anlamı ile digital yapamamış gibi gözüküyor.
Programın baş kısmına ;
ADCON0=0 komut satırınıda ekleyip yeniden derle bakalım.
PBP da deniyorum sorun gözükmüyor ama zaten senin programında da sorun gözükmüyormuş.
Her neyse belki sorunu çözer sen dediğimi bir ekle bakalım.

Ete

UGR

Ekledim hocam sorun aynı. Voltaj düşmelerinden etkilense programın başına dönemsi dönmesi gerekmezmi ? Sanki 1000 ms nin 10 ms low oluyormuş gibi oluyor

ete

Programınbaşında 50 ms lik bir gecikme var. Onu kaldır bence. Zira frekans yükselir ise yada tam kritik noktada kalırsa led bir yanar bir söner. Bu durumda yanma ile sönme arasında 50 ms lik bir gecikme uygulanmış olabilir ve sende bunu görüyor olabilirsin.
Pulsin komutu her ölçümde aynı sayıyı buamayabilir. Örneğin puls genişliğini 150 okuyor ise bunu bir149 bir 150 okur. Bu durumda led bir yanar bir söner. Bunu önlemek için programa şu ilaveyi yapabilirsin.
IF PULS>150 then
  LED=1
ELSE
  IF PULS<148 then led=0
ENDIF
bunlara program kapasitesi yeterse tabiiki.

Ete

UGR

Hocam yaptım çalışmadı fakat deger 150 küçük oldugunda high yaptıgımda stabil çalıştırabildim ilginç bir durum

ete

Pulsin komutunun 10 un katları şeklinde veri verdiğini biliyormusun?
Örneğin puls genişiliği 500us ise puls=50 olarak alırsın. Bu durumda sen 150 vererek 1500us den büyükse led yansın değilse sönsün demiş oluyorsun. Sorun buradadır belkide.

Ete

UGR

Evet biliyorum hocam 1500us buyuk oldugu zaman çıkış almak istiyorum 1500 den kucuk ise cikis ver dedikten sonra devre guzel calisiyor ama buyukte sıkıntı cikariyor. 12f675 te ayni kod sorunsuz calisirken 10f222 stabil çalışmamakta

Powered by EzPortal