DIY Electronic projects
Merenje periode pomocu pic basica - Printable Version

+- DIY Electronic projects (https://forum.yu3ma.net)
+-- Forum: Mikrokontroleri (https://forum.yu3ma.net/forumdisplay.php?fid=52)
+--- Forum: Microchip PIC (https://forum.yu3ma.net/forumdisplay.php?fid=53)
+--- Thread: Merenje periode pomocu pic basica (/showthread.php?tid=2050)



Merenje periode pomocu pic basica - MILANNN - 11-27-2018

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


RE: Merenje periode pomocu pic basica - Želja - 11-27-2018

To se radi jednostavno preko CAPTURE moda.
Ulazni pin mora biti CCP.
Imaš primer na http://www.picbasic.co.uk/forum/content.php?r=222-Using-hardware-capture

Pozz


RE: Merenje periode pomocu pic basica - MILANNN - 11-27-2018

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


RE: Merenje periode pomocu pic basica - MILANNN - 11-28-2018

Ovo radi,za sad u proteusu ali radice i uzivo,desavalo se da nece u proteusu a uzivo hoce.Hvala Zelja.


RE: Merenje periode pomocu pic basica - MILANNN - 12-01-2018

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.


RE: Merenje periode pomocu pic basica - Želja - 12-01-2018

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