pic18f25k20 tmr sayıcıda basamak hatası

Başlatan ctoglu58, 11 Eylül 2019, 12:55:10

ctoglu58

mrb arkadaşlar. pic18f25k20 ile ultrasonik  mesafe ölçümü yapıyorum.tmr1 prescaler degeri 1/1 olmasına rağmen 13 adımda bir sayıyor. kesme kullanarakda aynı  kesme kullanmadanda aynı şekilde 13 er adımda bir sayıyor . arada ki  sayaç değerlerini görmüyor. dolayısı ilede hassasiyet ayarı  beklendiğinden  1/13 daha az.bilgisi ve fikri olan varmı?

ete

Programı varsa simulasyon dosyasını koy buraya bir bakalım.
Ete

ctoglu58

ete hocam simülasyonu  yok .gerçek devre üzerinde çalıştırıyorum.istersen videosunu  gönderebilirim

ete

ortada bir programda göremedim.
Neyse yapacağım bir şey yok sanırım. Sana kolay gelsin.
Ete

ctoglu58

program MyProject

symbol bost=latb.3  ' yükselteç besleme on/off
symbol op_=latb.4  ' okuma besleme on/off
symbol maxde=latc.5
symbol maxre=latb.0
symbol dinle=porta.1
symbol puls=latb.2
dim jkr,hardware,i,ii,er,sm1l,sm1h,sm2l,sm2h,sul,suh as byte
dim isi,count,sm1,su as word
  dim drx as char[20]
sub procedure interrupt
intcon=0
pir1=0
reset
end sub
'
sub procedure gonder
SetBit(LATC, 5)
SetBit(LATB, 0)

delay_us(10)
for i=0 to 5
Uart_Write(drx)
delay_us(20)
next i
ClearBit(LATC, 5)
ClearBit(LATB, 0)
ii=0
end sub

'*******************************

'***************************
sub procedure pals 'tele pals gönderme ve  mesafeokuma buradan yapılır
CM1CON0=%10110101 'komparatör kuruldu
latb=%00011000  'op,bost acık        op,4 bost,3 puls,2
delay_ms(140)    'sarj süresi kadar bekle
intcon=%11000000 'hatalar kontrolü için interrupt acıldı
latb=%00010100  'dinleme acık pals verildi halen dinleme acık bost kapalı
lata.2=1        'test pini
T3CON.0=1  'TİMER BAŞLATILDI  16 bit lik okumada

for i=0 to 8          'palsin  on süresi yazıldı
nop
next i
latb=%00010000  'pals kapatıldı sistem dinlemede sadece dinleme acık
lata.2=0          'test pini
delay_us(20)      'palsten gelen  (sahte sinyal) ilk sinyalin sönümlenmesini bekle
do
nop

loop until porta.4=1    '1. gerçek sinyalin  alım noktası
T3CON.0=0 'TİMER durduruldu
sm1l=TMR3l
sm1h=tmr3h                '1. sinyal kaydedildi



do
loop until PORTA.4=0  '1. sinyalin sönümlenmesini bekle
do
loop until PORTA.4=1    '2. sinyalin  lınması bekleniyor

sm2l=TMR3l
sm2h=tmr3h              ' 2. sinyal kaydeliyor


T3CON.0=0 'TİMER durduruldu
tmr3h=0                  'saayac registerleri sıfırlandı
tmr3l=1
intcon=0
'delay_ms(1)      '2,5 us ila 4us arasında dene
CM1CON0=%10000101 'komperator kapatıldı
latb=%00000000    'dinleme bost ve pals tamamı  kapalı
  end sub

sub procedure donustur

sm1=sm1h
sm1=sm1 << 8
sm1 =sm1 + sm1l          'tmr3 değeri ascii koda dönüştürüldü
ii=4
for i=0 to 4
jkr=sm1 mod 10
drx[ii]=jkr + 48
sm1=sm1 div 10
dec(ii)
next i
if (drx
  • =48)  then
drx
  • =32
end if
if (drx
  • =32) and (drx[1] = 48) then
drx[1]=32
end if
if (drx
  • =32) and (drx[1] = 32) and  (drx[2] = 48) then
drx[2]=" "
end if



end sub
'*******************************


main:
ANSELH=0  'portlar digit
CM1CON0=%10010101  '
CM2CON1=0
cvrcon= 0
CVRCON2=%10000000
'HLVDCON
  trisa=%11100011
    lata=0
      trisb=%00100010 '%11110010 orjinali
    latb=0
      trisc=%11000110
      latc=0
      Uart1_Init(9600)'
      T3CON=%10000000    'tmr 3 16 bit okumada sistem saatından  kaynaklı ve kapalı
'RCON=128
'IPR1=32
pie1= 1
pir1=0
iNTCON=0
delay_ms(100)
anaprog:
while true

pals
donustur
    gonder
  delay_ms(1000)
  wend
end.

ete

İki gündür bu programa bakıp sorunuda karşıma alıp düşünüyorum.
Sorun TMR1 tabanı üzerinden açıklanıyor programda TMR1 ile ilgili bir şey yok.
Ortada bir de komparatör kullanımı var ne amaçla kullanılmış oda belli değil.
Yapılacak işide az çok biliyorum. Ultrasonik sensör dönüş puls uzunluğu ölçülecek.
Ortada daha kolay yöntemler var iken neden böyle karmaşık bir yola girilmiş onuda anlamış değilim.
Ek bir ünite kullanılacak ise en akıllıcası CAPTURE özelliğini kullanmak olurdu.

https://etepic.com/index.php/topic,1375.msg14295.html#msg14295

Şema da olmayınca pek yapacak bir şey kalmıyor. Çünki mantık yürütemiyorum.

Ete

MB_77

#6
bu mesaj tarafımdan silinmiştir.

Powered by EzPortal