Analog deger

Başlatan Ersin, 13 Ağustos 2004, 17:28:31

Ersin

Selamarkadaslar,
16f877A da PBP de yazilan programim var
yalnizproblem su analog degeri surekli okumasi gerekiyo
yani program calisirken bu surekli deger okuyacak
ornegin :

high portb.4
pause 2000
low portb.5
pause 1000 .....



gibi

yani analog degeri okuyan kisim sanki bagimsizmis gibi calisacak.
Bu konuda herhangi bir oneriniz var mi ?

birumher

Anladığım kadarıyla bir fikir vermeye çalışayım, analog değeri bir timer interrupt ı yardımıyla ADC ile okutup okuma bittiğinde oluşan interrupt ile de gerekli düzenlemeleri yaparsın. Programın diğer kısımları olduğu gibi çalışmaya devam eder...
Birkan.Herguner

Ersin

Biraz ayrintili anlatayim

main:
gosub adread

high portb.2
puase 2000
high portb.5
pause 1000
low portc.4
pause 1000 ......   (yaklasık 13-14 adim)


goto main

adread:
 adcin 0,read
if read > z then high portd.2
if read < z then high portd.3
return

end

burdaki adread subroutine surekli calisacak.Her adimdan sonra
gosub ile cagirdimda belli bir sayidan sora hata veri ki
her taraf gosub komutu ile dolacak

Veli B.

ADIE VE ADIF ile yapılabileceğini düşünüyorum ama program ne kadar sağlıklı çalışır ondan şüpheliyim.Her 20 us de bir kesme oluştuğunu düşünelim program ne kadar dayanabilirki buna?
Biraz daha esnetmek için tmr kullandın diyelim ama örnekleme frekansın düşsede, işlemci için zor olacaktır gibi geliyor bana.
Seni tatmin edecek frekansa kadar tmr ile oynayabilirsin.

fsan

interrupt suz bu sekilde yapaciksin baska caresi yok  :?
sure var word
sayac var word

Main: 
    sure=1: gosub adread                     'pause 1
    high portb.2 : sure=2000 : gosub adread  'pause 2000
    high portb.5 : sure=1000 : gosub adread  'pause 1000 
    low portc.4  : sure=1000 : gosub adread  'pause 1000 ...... 
goto Main 

adread: 
    sayac = 0
    while (sayac < sure)
        sayac = sayac + 1
'       adcin 0,read 
'       if read_ > z then high portd.2 
'       if read_ < z then high portd.3 
        pause 1
    wend
return 

end

Alıntı Yap
sure=2000 : gosub adread
iste bu picbasic dezavantajlarindan biri;
bu sekilde: gosub adread(2000)  veya  sadece adread(2000) yazabilsek ne güzel olurdu

Ersin

Selam,
peki assembly veya c de bir cozumu var mi ?