Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Merenje periode pomocu pic basica
#1
Pozdrav svima.Nisam nesto odmakao u programiranju,probao nesto ali neide pa ako neko moze i ako ovo neoduzima vreme racite mi sta da izmenim.Ovo je neki gorov kod tajmera koji sam prepravio i na kome sam hteo da dodam da pokaze koliko uSek traje neka merioda.Probao ovo nabrzinu ali vidim da nesto neide.Napisao sam da dok je   porta.0=1 
tj dok traje taj pozitivni deo koji merimo odbrojava mS=mS+1 i kad vise nebude porta.0 na 1 onda da ispise koliko je izbrojao ali ... nece. Probao sam samo u proteusu ovako:

 
DEFINE LCD_BITS 4
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 0
DEFINE LCD_RWREG PORTB
DEFINE LCD_RWBIT 3
DEFINE LCD_LINES 2
pause 100 

  
  mS  Var Word     'Promenljiva za milisekunde
  TRISA=%00000011  
   
    
     

Inicijalizacija:

INTCON.5 = 0   'Onemoguci TMR0 prekide




OPTION_REG.0 = 0    
OPTION_REG.1 = 0  
OPTION_REG.2 = 0
OPTION_REG.3 = 0

OPTION_REG.5 = 0 'Izaberi Interni takt
OPTION_REG.7 = 1

TMR0 = $FF   'Postavi vrednost TMR0 

INTCON.5 = 1 'Omoguci TMR0 prekide
INTCON.7 = 1 'Omoguci sve prekide

    ON INTERRUPT goto Int_Sub

Pocetak:


lcdout $FE, $80, "BROJ=" ,DEC4  Ms
pause 100
GOTO POCETAK

 
'------Podprogram obrade prekida-----------------------
       Disable
Int_Sub:
    IF PORTA.0=1  THEN  ' kad se pojavi perioda koju merimo
    INTCON.7 = 0
    
If INTCON.2 and INTCON.5  Then
  INTCON.2 = 0
   mS = mS + 1
 
ENDIF  
EndIf
     
    INTCON.7 = 1  'Omoguci prekide
    INTCON.5 = 1  'Omoguci prekide

     
    Resume        'Vrati se iz rutine prekida
    End
Reply
#2
To se radi jednostavno preko CAPTURE moda.
Ulazni pin mora biti CCP.
Imaš primer na http://www.picbasic.co.uk/forum/content....re-capture

Pozz
Reply
#3
Hvala Zelja,sutra da probam mada neide mi ali pomucicu se i da napisem ili da izguglam neki gotov ako neumem da ga skockam sam. jbg
Reply
#4
Ovo radi,za sad u proteusu ali radice i uzivo,desavalo se da nece u proteusu a uzivo hoce.Hvala Zelja.
Reply
#5
Podesio sam da na displeju imam prikaz trajanja i pozitivne i negativne poluperiode i to zajedno pa imam i prikaz cele periode.Na pr. za frekvenciju od 10kHz imam prikaz petioda=00100 znaci 100uS (nisam stavljao da bude prikaz u mS pa iza zareza uS ) E sad ako je t=1/f kako mogu da napisem da bude F=1/t tj 1/0.0001 u da imam prikaz i frekvencije ? Koliko se secam picbasik nemoze da radi sa brojevima koji nisu celi ali valjda moze nekako jer probao sam sve sto mi je palo napamet i neuspeva mi.
Reply
#6
Nabavi ( torentuj ... ) PBP3 Gold edition koji radi sa 32 bit (Long) varijablama i tada periodu pretvaraj u frekvenciju na jednostavan način :
F(Hz) = 1 000 000 / Perioda (uS).

Pozz
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)