pıc de zamanlama sorunum...

Başlatan bahdiyarusta, 28 Ekim 2014, 21:04:36

bahdiyarusta

merhaba

Bir projemde 3 giriş ve 3 çıkış var burda istenilen...
1.butona basınca 1.çıkış 1dk çalışacak sonra duracak
1.çıkış 1dk beklerken 2.butona basılırsa 2. çıkışda 1dk çalışacak.
burda mantıgı çözemedim...

pause 60000 yapıyorum tabi 60sn bekliyor alt satıra geçmiyor.
burda 1.çıkış sayarken 2 veya 3. çıkışları nasıl kontrol edebilirim.

teşekkürler...





<<<***bahdiyarusta****>>>
                  - 66 -

F®T

kesme kullanmadan olmuyor.kesme kullanıp sayaç saydırıcaksınız.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ete

3 ayrı sayac çalıştırıp programı sürekli döndürmen gerekir. Yada ilk sayac için kesme kullanıp bu kesmelerle 3 sayacın değerini ayrı ayrı artırman gerek.
Diyelimki her kesme 50 ms de bir olacak . Bu durumda her 20 kesmede bir 1 sn geçecek demektir.
İlk sayac için sayac1 , ikincisi için sayac2 , üçüncüsü için sayac3 sayaclarını saydırırsın.
Her bir sayac için birer aktif biti kullanırsın. Buna uygun olarak kesme kısmında 20 kesme sayıldıktan sonra;
- sayac1 aktif ise sayac1=sayac1+1
- Sayac2 aktif ise sayac2=sayac2+1
- Sayac3 aktif ise sayac3=sayac3+1
şeklinde zamanı sayar süresi dolanın aktifliğini kaldırırsın.

Başka bir yolu da bir program döngüsünü belirli bir gecikme ile belirli bir süreye bağlarsın. Mesela , Başla satırı ile Goto basla arasına biraz gecikme de koyarak bu döngünün 50 ms olmasını sağladın. Bu durumda 20 program döngüsünde süre 1 sn geçecek demektir. Kesme işlemindekine benzer bir mantık ile ana program döngüsünde de aynı şekilde 3 sayacı çalıştırabilirsin.

Ete

bahdiyarusta

anladım hocam sayaçlar ile uğraşayım biraz.
teşekkrler
<<<***bahdiyarusta****>>>
                  - 66 -

ete

Örnek vereyim istersen basitçe aşağıdaki şekilde olur bu iş,
Çok hassas bir şey ise komut gecikmelerinide hesaba katmak gerekir. Bunun için ana döngü gecikmesini Pause 100 yerine Pause 85 gibi bir şey verebilirsin.

Ete
        IF TUS1=0 THEN 
          SAY1=1:LED1=1
        ENDIF
       
        IF TUS2=0 THEN
           SAY2=1:LED2=1
        ENDIF   
       
        IF TUS3=0 THEN
          SAY3=1:LED3=1
        ENDIF 
       
        SAYAC=SAYAC+1
        IF SAYAC=10 THEN
          SAYAC=0
          IF SAY1=1 THEN
            SURE1=SURE1+1
            IF SURE1=60 THEN   
              SAY1=0:LED1=0:SURE1=0
            ENDIF
          ENDIF   
          IF SAY2=1 THEN
             SURE2=SURE2+1
             IF SURE2=60 THEN
               SAY2=0:LED2=0:SURE2=0
             ENDIF
          ENDIF
          IF SAY3=1 THEN
             SURE3=SURE3+1
             IF SURE3=60 THEN
               SAY3=0:LED3=0:SURE3=0
             ENDIF
          ENDIF
        ENDIF
        PAUSE 100
        GOTO BASLA

bahdiyarusta

çok İYİ Anladım hocam teşekkür ederım
<<<***bahdiyarusta****>>>
                  - 66 -

insect-yol

Merhaba arkadaşlar bende şöyle sorayım PORTB.6 da bir buton var bu butona 5 sn sürekli basılması durumunda porta.1 1 olmasını istiyorum benim denemelerim olumsuz sonuçlandı proğram içi döngü kullandım

ete


IF PORTB.6=0 THEN
  SAYAC=0
WHILE PORTB.6=0
   SAYAC=SAYAC+1
   PAUSE 10
   IF SAYAC=500 THEN
       PORTA.1=1
   ENDIF
WEND
ENDIF
 

ete

insect-yol

#8
Teşekkürler hocam birde bu devreyi proteus'da kurdum ve calıştırdım portb.6 ya uzun basınca pic'in bu portu sürekli şekilde 1 konuma gecip öyle kalıyor butona bassamda basmasamda butonum pulldown olarak denedim

ete

Programında bir kusur var ve simulasyon ne yapacağına karar veremiyor demekki. Sorun simulasyon sorunuda olabilir.
verdiğim örnek pullup sistemine göredir.

Ete

insect-yol

Proğramı birkaç defa kontrol ettim PORTB.6 yı sürekli bir şekilde 1 konuma alıp öyle tutacak bir kod veya komut yok bu sorunu nasıl aşarım veya aynı sıkıntı pratiktede karşıma cıkarmı örneğinizin Pullup olduğunu fark ettim teşekkürler

ete

Yazdığın koda bir bakmam lazım. Bu gibi durumlar genellikle mantık hatalarından ortaya çıkıyor.
Ete

insect-yol

Şuan cep telefonundan yazıyorum kodlar yanımda değil  :( akşama gönderebilirim

Powered by EzPortal