Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

PROTON İLE PULSE SAYDIRMA

Başlatan bahadir01, 29 Ocak 2008, 15:36:55

bahadir01

Arkadaşlar merhaba..

Yaptığım bir proje için pic'in bir bacağından gelen pulse'leri saydırmam gerekiyor. Nasıl yapacağımı bilmiyorum..

Yardımcı olursanız çok sevinirim...

NOT. bir bacaktan pulse (darbe) 'ler gelecek, ve ben o darbeleri saydıracam..  istediğim kadar darbe gelinceye kadar motoru çalıştıracam..

Maxim

counter komutunu kullanabilirsin

teknikelektronikci

pulsin pulsout komutu vardi sanirim ama bence eger pic cok islem yapiorsa ayni anda o zaman innterrupt kullanman gerekebilir hem daa saglikli olur diye düsünüyorum kolay gelsin
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

Veli B.

Pulslerin frekansi nedir? (Soru sorarken bu tip bilgileri verirseniz dogru ve hizli cevaplar alirsiniz. Frekans 100MHZ olsa ve biz ne onersek, sistem calismayacak ;). )
En saglikli dolayisi ile dogru olani INTERRUPT(kesme) ile yapmandir.

Maxim

countermı ? yoksa pulsin mi ? bu arkadaşın işine yarar ? tam karar veremedim bende .

başka bir örnek :
eğer çok hızlı değilse girişteki frekansımız ,
böyle bir uygulama iş görürmü acaba ?

Device 16F628A
XTAL 4

Dim ABC As Word
ABC = 0

Symbol Giris = PORTB.0

Loop:

If Giris = 1 Then ABC = ABC +1 
If ABC = 65500 Then ABC = 0
If ABC >= 1500 Then High PORTB.1

GoTo Loop

Maxim

böyle çok daha iyi oldu

Device 16F628A
XTAL 4

Dim ABC As Word
ABC = 0

Symbol Giris = PORTB.0

Loop:

While Giris=0 : Wend
While Giris=1 : Wend
ABC = ABC + 1

If ABC = 40 Then High PORTB.1
If ABC = 50 Then High PORTB.2
If ABC = 80 Then High PORTB.3
If ABC = 120 Then High PORTB.4
If ABC = 150 Then High PORTB.5
If ABC = 180 Then 
High PORTB.1
ABC = 0
EndIf

GoTo Loop

bahadir01

arkadaşlar çok teşekkür ederim....

sorunun TIMER kullanarak çözmeyi başardım.. 16f628A da TMR0 kullandım.

option_reg ayarlarını yaparak harici sayıcıyı seçtim.

RA4 bacağından girdim...

tekrar çok teşekkür ederim..

Maxim

Alıntı yapılan: "bahadir01"arkadaşlar çok teşekkür ederim....

sorunun TIMER kullanarak çözmeyi başardım.. 16f628A da TMR0 kullandım.

option_reg ayarlarını yaparak harici sayıcıyı seçtim.

RA4 bacağından girdim...

tekrar çok teşekkür ederim..

kodu alabilirmiyiz ?

bahadir01

Arkadaşlar kodu veriyorum. Çok güzel çalışıyor..

-----------------------
Device 16F628A
XTAL = 4
Dim w As Word

Symbol pin PORTA.4
Symbol led1 PORTB.0
Symbol led2 PORTB.1

TRISA=%11111111
TRISB=%00000000
 PORTA=0
 PORTB=0
 TMR0=0
CMCON=$07
OPTION_REG=%01111000

           
basla:
 w=TMR0
If w<5 Then
led1=%1
led2=%0
EndIf
If w>5 Then
led1=%0
led2=%1

EndIf

GoTo basla

End

Veli B.

Bu kod ile sizin yapmak istediginiz is arasinda ki bagintiyi kuramadim? Bu kod ne is yapar simdi?

bahadir01

bu şu işe yarıyor;

pic, 4.bacaktan gelen pulseleri sayıyor..
eğer pulse sayısı 5ten küçükse 1.ledi
5ten büyükse 2.ledi yakıyor..

burda sadece saydırma işleminin gerçekleştiğini göstermek amaçlı bu kodları verdim..

bunun bir avantajı da prgram nerde olursa olsn TMR0 saymaya devam ediyor...

teknikelektronikci

Alıntı yapılan: "bahadir01"bu şu işe yarıyor;

pic, 4.bacaktan gelen pulseleri sayıyor..
eğer pulse sayısı 5ten küçükse 1.ledi
5ten büyükse 2.ledi yakıyor..

burda sadece saydırma işleminin gerçekleştiğini göstermek amaçlı bu kodları verdim..

bunun bir avantajı da prgram nerde olursa olsn TMR0 saymaya devam ediyor...


bu saymayi 4.pinden gelen pulse göre saydigindan eminmisiniz?


edit:pardon register ayarlarina dikkat etmemisim
ama led=%1 demenize gerek yok direk led=1 derseniz olur
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!