Proton da pulse geciktirme nasıl yapılır ?

Başlatan FUNKY, 13 Ekim 2009, 02:41:36

FUNKY

merhabalar.

pic16f876   kısaca şu komutlarla frekans üretiyorum .

   PORTA.1 = 1                    
   DelayUS 200
   PORTA.1 = 0                    
   DelayUS 800
   GoTo Main
       1000us lik  bu frekansın 100us artan gecikmeyle  3 diğer pinden aynı anda cıkmaları gerek..


   PORTA.2=0    
   DelayUS 100                      
   PORTA.2=1
   DelayUS 200
   PORTA.2=0
   DelayUS  700              
   gibi....
scopta böyle görünmeli


  yardımızı bekliyorum  selamlar...

tyildizak

selamlar
porta.1 = 1

DelayUS 100

porta.2 = 1

DelayUS 100

porta.3 = 1
porta.1 = 0

DelayUS 100

porta.4 = 1
porta.2 = 0

DelayUS 100

porta.3 = 0

DelayUS 100

porta.4 = 0

DelayUS 500

(porta.4 open collector çıkış, porta.0'dan itibaren başlasan daha iyi olur bence/ 0-1-2-3 gibi..)


kolay gelsin

FUNKY

Teşekkürler Turgut arkadaşım

verdiğin kodlar  sorumun cevabı oldu RA.0~RA.3 pinlerini kullandım

RA.4 ü çıkış olarak kullanmak için pullup drenci lazım herhalde.?

Protonu henüz öğrenme aşamasındayım

şimdi RA.0 sabit kalmak şartı ile RA.1 , RA.2 , RA.3 çıkışlarındaki bu gecikmeleri birbirinden bağımsız olarak 1000us peryodu bozulmadan ötelemek  berilemek istiyorum .
örnek olarak bir ayar  yaptığımda bütün çıkışların aynı anda lojik 1 olmaları gibi .

yapmak istediğimi tek döngü içerisinde yapılması bana imkansız gibi gelidi .

4 ayrı loop yapsam ve her birini müstakil olarak ayarlarsam olur gibi gelidi ama 4 loop aynı anda çalışırmı .ben şu komutu denedim çalışmadı

main:
GoTo loop1,loop2,loop3,loop4
GoTo main.
böyle bir komut olurmu bilmiyorum ama denedim.çalışmadı


yardımlarınızı bekliyorum   selamlar....

tyildizak

loop1,loop2 diye alt programlar oluştur(herbiri return ile bitsin)sonra ana programda bunları "gosub loop1" "gosub loop2" şeklinde çağır

FUNKY

merhabalar..

4 loop şeklinde yazdım  .bu şekilde olursa bu sefer pic loop1 den 4 e kadar sırayla okuduğu için benim her loop a yazdığım 1000us lik zaman peryot bozuluyor toplam peryot ve komut geçikmeleriyle 4,06ms a çıkıyor

buda olmadı .
Device = 16F876
   XTAL =4
  
  
  ALL_DIGITAL = True
  PORTB_PULLUPS=On    ;butonlar için sonradan kullanacağım
  
  Symbol fı PORTA.0
  Symbol f2 PORTA.1
  Symbol f3 PORTA.2
  Symbol f4 PORTA.3
  
  Output PORTA
  
  PORTA =0
  DelayMS 200
  
  main:
  GoSub loop1
  GoSub loop2
  GoSub loop3
  GoSub loop4
  GoTo main
  
  loop1:
  PORTA.0=1
  DelayUS 200
  PORTA.0=0
  DelayUS 800
  Return
  
  loop2:
  DelayUS 100
  PORTA.1=1
  DelayUS 200
  PORTA.1=0
  DelayUS 700
  Return
  
  loop3:
  DelayUS 200
  PORTA.2=1
  DelayUS 200
  PORTA.2=0
  DelayUS 600
  Return          
  
  loop4:
  DelayUS 300
  PORTA.3=1
  DelayUS 200
  PORTA.3=0
  DelayUS 500
  Return
  
  End
  


çalışamya ve fikirlerinizi beklemeye devam...selamlar

FUNKY

merhaba.

yapamadım   çünkü ben yeniyim..

ya bilenler ..onlarında çook işi var demekki bir el atmadılar.

istediğim  pic in 4 pininden 1000us lık aynı frekans cıkacak(on-off süreleri faklı) ve ben bunların birinin on -off  değerleriyle oynayınca  diğer pinlerde çıkan frekans ların on-off değerii değişmeyecek...

komple proğramı yazmayın bana nasıl yapılacağını kısa örneklerle gösterin .

ustalar  bir boş vaktinizde  el atarmısınız ..lütfen