Frekvencmetar prost a potrebna pomoc

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: stojke369, pedja089, [eDo], trax

MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Frekvencmetar prost a potrebna pomoc

Post by MIKI73 »

Pozdrav svima.Poceo sam poodavno da napisem kod za frekvencmetar koji ce raditi do 65535Hz pa kasnije da ga preuredim ali mi nikako neuspeva da mi proradi za sad u proteusu.Evo nekog koda koji sam pronasao pa ako moze neka izmena da to proradi.Probao sam sve sto sam znao i sto mi je palo napamet ali neide pa bih zato zamolio za pomoc.

Code: Select all

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 
lcdout $FE, 2
lcdout $FE, $80, "BROJ="
  
  
capture  VAR PIR1.2    ' CCP1 capture flag
overflow VAR PIR1.1    ' Timer1 overflow flag
period   VAR WORD      ' Word variable that stores the value
broj var word
TMR1_Vred Var word
TMR1_Vred = 64536   
   CCP1CON = %00000100 ' Enable the CCP1 capture, falling edge
   T1CON = %00000011   ' TMR1 prescale=1, and turn it on (1uS per count)

mainloop:
   IF (capture = 0) Then mainloop ' Wait here until captured 
   TMR1L = TMR1_Vred.lowbyte  'Postavi TMR1 na 64536
   TMR1H = TMR1_Vred.highbyte
   period.lowbyte = CCPR1L   ' Store the captured value in
   period.highbyte = CCPR1H  ' period variable
        
   IF overflow = 0 Then      ' Skip the output if the timer overflowed
      lcdout $FE, $80, "BROJ=",#broj
   EndIF
   capture = 0   ' Clear the capture flag
   lcdout $FE, $80, "BROJ=",#broj     
reset:
   IF (capture = 0) Then reset ' Wait for beginning of next period
   TMR1L = 0     ' Clear Timer1 low register
   TMR1H = 0     ' Clear Timer1 high register
   capture = 0   ' Clear capture flag
   overflow = 0  ' Clear overflow flag
   
   GoTo mainloop ' Do it forever
        
   End
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Frekvencmetar prost a potrebna pomoc

Post by pedja089 »

Kod je u redu. Samo tmr treba postaviti na 0.Premalo informacija si dao za bilo sta.
Sta ne radi? Zasto ne radi? gde zapleo? Da li kontroler izvrsava uopste kod? Da li radi displej? Da li radi prikaz broja na displeju? Da li meri bilo sta? Kako si dovodio ulazni signal? Gde si ga dovodio? Amplitude? Frekfencije?
Samo par pitanja za pocetak rasprave o tome sta bi moglo da ne radi...
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Frekvencmetar prost a potrebna pomoc

Post by MIKI73 »

Na displeju samo pokaze nulu,ja sam to radio u proteusu pa ako proradi onda da ga napravim medjutim neide nikako.Kad pustim u priteusu sve je kao normalno i neprijavljuje greske ali i nemeri.Signal uvodim iz generatora u proteusu,stavio sam da budu 100Hz i nista,onda sam komandu za displej pomerao na nekoliko razlicitih mesta i opet nista tj.probao sam jos dosta stvari da uradim i kad nije uspelo ja sam ga ovde na forumu postavio onako kako sam ga skinuo.Iznem ja zamo za displej jer je u originalu bila komanda za setiski port.Evo odakle je to

http://melabs.com/samples/LABX2-16F877A/ccpx2.htm

Naravno nebih dosadjivao sa ovim da hoce da radi,i meni je izgledalo da ce iz prve jer je ovaj kod skinut odavde ali neide.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Frekvencmetar prost a potrebna pomoc

Post by MIKI73 »

lcdout $FE, $80, "BROJ=",#broj

Ovo mi je ostalo dok sam pokusavao da proradi pa ubacio promenljivu #broj a u originalnom pise period.Mada ni sa "period" nece,samo stoji BROJ=0
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Frekvencmetar prost a potrebna pomoc

Post by MIKI73 »

evo sad ovako i na displeju pise 06439 Sve sam probao sto mi je palo napamet i neide.Ako mozete pomagajte,ja bih jos pokusavao sa ovim ali vise stvarno neznam sta da mu radim,sve sam probao sto sam znao

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

capture VAR PIR1.2 ' CCP1 capture flag

overflow VAR PIR1.1 ' Timer1 overflow flag

period VAR WORD ' Word variable that stores the value

broj var word

TMR1_Vred Var word
TMR1_Vred = 64536
CCP1CON = %00000100 ' Enable the CCP1 capture, falling edge
T1CON = %00000011 ' TMR1 prescale=1, and turn it on (1uS per count)
trisc = 1
mainloop:


IF (capture = 0) Then mainloop ' Wait here until captured
TMR1L = TMR1_Vred.lowbyte 'Postavi TMR1 na 64536
TMR1H = TMR1_Vred.highbyte
period.lowbyte = CCPR1L ' Store the captured value in
period.highbyte = CCPR1H ' period variable

lcdout $FE, $80, "BROJ=",#period

IF overflow = 0 Then ' Skip the output if the timer overflowed
EndIF


capture = 0 ' Clear the capture flag

reset:
IF (capture = 0) Then reset ' Wait for beginning of next period
TMR1L = 0 ' Clear Timer1 low register
TMR1H = 0 ' Clear Timer1 high register
capture = 0 ' Clear capture flag
overflow = 0 ' Clear overflow flag

GoTo mainloop ' Do it forever

End
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Frekvencmetar prost a potrebna pomoc

Post by pedja089 »

Ok. Znaci ipak radi, samo ne broji.
Na koji pin dovodis signal? Koji oblik signala? Koja amplituda? I ne vidoh nigde koji pic si stavio u proteusu?
Daj sliku simulacije dok radi, i sa zakacenim osciloskopom i otvorenim. Pa da vidimo sta je sa signalom.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Frekvencmetar prost a potrebna pomoc

Post by MIKI73 »

Koristim 16f877A,merim 5V cetvrtke perid 50% i vevo rezultata na displeju.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Frekvencmetar prost a potrebna pomoc

Post by MIKI73 »

nece slika da se posalje,neznam zasto.Na osciloskopu su cetvrtke.Uvodim signal u RC1 mada kad vise nisam znao sta cu pokusavao sam i u RC0 i RC1 ali prikaz na displeju imam samo na RC2 dok na 0 i 1 mi nepokazuje nista na displeju.Slika mi je jpg ali stvarno neznam zasto nece da se posalje.Cim pokazuje nesto na displeju mislim da tu nije greka u definiciji displeja sem mozda u programu da se nalazi na pogresnom mestu.Pokusacu ponovo za sliku da vam posaljem.Pic je 16f877A na 4MHz. I ono u dodjem delu proteusa mi je zeleno,nema znak ! i da ispisuje neke greske.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Frekvencmetar prost a potrebna pomoc

Post by pedja089 »

Pa signal moze samo na RC2 da se dovodi. Ne razumem kako prikaz imas na displeju kad dovodis na RC1.
Sa linka koji si postavio
Input signal should be connected to RC2/CCP1.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Frekvencmetar prost a potrebna pomoc

Post by MIKI73 »

Sve sam probao i tako sam iskopirao kod dok mi je bili neki od pokusaja u toku.Video sam u DS da treba na RC2
ali kad vise nisam znao sta cu onda... kako kazu kad nas "cesas se gde te ne svrbi" i eto,nesto sto treba da je prosto mene muci vec dvadesetak dana jer treba mi takav frekvencmetar za dosta ozbiljniju stvar gde treba pustiti uvek paran broj perioda jer u pitanju je trafo od nekoliko KA. Neznam sta dalje da navedem dabiste mogli da uvidite gresku koju pravim
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Frekvencmetar prost a potrebna pomoc

Post by pedja089 »

Al ti onda volis da komplikujes...
Sto odma ne rece sta ti treba. Ovo meri jednu poluperiodu. Tako da od ovoga koristi ne bi imao.
Ali ajde jos jednom razmisli da li je tacno to sto si napisao. Kazes paran broj perioda? Pa kakve veze ima da li je paran ili ne? Da nisi mislio na poluperiode? Da ako iskljucis na pozitivnu poluperiodu, pa kad ga opet ukljucis na pozitivnu, bojis se da jezgro ne ode u zasicenje?
Za to ima puno jednostavnije resenje.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Frekvencmetar prost a potrebna pomoc

Post by MIKI73 »

Za jednosmernu pulsirajucu, nema negativnih poluperioda. E zato mi treba ovako prostiji kod jer njega cu znati kako da ubacim i prilagodim a i da dodam joj nesto ako zatreba ali sve to ako ovo proradi. Ja nisam bas nesto vest u programiranju pa sam se zato javio da zamolim za pomoc pa kad proradi onda je sve lakse za nadalje.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Frekvencmetar prost a potrebna pomoc

Post by pedja089 »

Pogledaj ovo
viewtopic.php?f=3&t=4249&p=43641#p43641

Code: Select all

SYMBOL LED=PORTB.7
SYMBOL TASTER=PORTB.0
INPUT TASTER
 
Brojac var byte
NovoStanje var bit
StaroStanje var bit
starostanje = taster ' ovde se uzima pocetno stanje, tj stanje kada je taster pusten 
brojac=0
Pocetak:     
novostanje = taster        'OVDE SE UZIMA TRENUTNO STANJE NA TASTERU
if novostanje<starostanje then 
brojac=brojac+1
if brojac>1 then
brojac=0
'Ovde stavi da radi sta god treba npr
If PaliGasi=0 then
izlaz=0
else
izlaz=1
endif
endif
ENDIF
STAROSTANJE=NOVOSTANJE   
GOTO POCETAK   
END
Nikakve pauze i blokirajuce komande ne dolaze u ovbzir u ovakom programu
PaliGasi moze da bude pin na kontroleru na koji je zakacen prekidac. Moze da bude i promenljiva koju ces na postaviti na 1 ili 0 u zavisnosti od cega god.
Taster je ulaz na koji dolazi taj pulsirajuci napon.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Frekvencmetar prost a potrebna pomoc

Post by MIKI73 »

Probacu nesto.Oco definitivno nece a neznam zasto, nema logike da neradi a ipak neradi dok na pr. program koji meri trajanje periode proradio na prvu, po istom principu kao ovaj za frekvencmetar.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Frekvencmetar prost a potrebna pomoc

Post by MIKI73 »

Pozdrav.Evo mene opet sa ovim frekvencmetrom,kad god nadjem slobodno vreme pokusavam da ga ozivim i sad kad sam ubacio

intcon.6=0 '================
intcon.7=0 '====================
pie1.2=1 '=======================
pie1.0=1 '========================

daje neke znake zivota,kad mu menjam u proteusu frekvenciju na ulazu menja se i rezultat na displeju ali nije ni priblizno tano.Moze li se sad videti i ispraviti greska ? Oci mi ispadose pored kompa i nevidim vise sta da mu uradim.Evo sad sa ovim izmenama,mozda sam samo pogresio redosled kako sta da konfigurisem,neznam.Samo bar da hoce do 65535 i netreba nista drugo jer koliko toliko razumem kako bi ovo trebalo da radi pa nadalje mogu da ga prilagodim kako mi sta treba.


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


portc.2 = 1
capture VAR PIR1.2 ' CCP1 capture flag
overflow VAR PIR1.1 ' Timer1 overflow flag
period VAR WORD ' Word variable that stores the value
period = 0
broj var word
broj = 0
TMR1_Vred Var word
TMR1_Vred = 64536
CCP1CON = %00000101 ' Enable the CCP1 capture, falling edge
T1CON = %00000001 ' TMR1 prescale=1, and turn it on (1uS per count)
intcon.6=0 '================
intcon.7=0 '====================
pie1.2=1 '=======================
pie1.0=1 '========================


mainloop:


IF (capture = 0 ) Then mainloop ' Wait here until captured

TMR1L = TMR1_Vred.lowbyte 'Postavi TMR1 na 64536
TMR1H = TMR1_Vred.highbyte
period.lowbyte = CCPR1L ' Store the captured value in
period.highbyte = CCPR1H ' period variable

IF overflow = 0 Then ' Skip the output if the timer overflowed
lcdout $FE, $80, "BROJ=",#period

pause 100
capture = 0 ' Clear the capture flag
EndIF
reset:
IF (capture = 0) Then reset: ' Wait for beginning of next period
TMR1L = 0 ' Clear Timer1 low register
TMR1H = 0 ' Clear Timer1 high register
capture = 0 ' Clear capture flag
overflow = 0 ' Clear overflow flag
intcon.6=0 '=================================
intcon.7=0 '========================================


GoTo mainloop

End
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Frekvencmetar prost a potrebna pomoc

Post by pedja089 »

Mozes pojasniti sta ti je zamisao ovog programa?
Ja ga bas ne kontam.
Ovo me jako buni

Code: Select all

TMR1L = TMR1_Vred.lowbyte 'Postavi TMR1 na 64536
TMR1H = TMR1_Vred.highbyte
I 17bit broj ne moze stati u 16 bita.
Upisivanjem 64536 isto je kao da si upisao nulu.
I ne znam koji pic koristis, ali na nekima je bitan redosled upisivanja H i L registra.
Proveri da li ti je brzina pica postavljena na 4MHz u simulaciji.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Frekvencmetar prost a potrebna pomoc

Post by MIKI73 »

Koristim 16f877A imam 4MHz u simulaciji. Svrha je da meri frekvenciju i nista vise. To valjda moze tako do 65535 bez preskalera. Ako ozivi i proradi posle lako mogu da da ga prilagodim jer koliko toliko razumem princip rada.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Frekvencmetar prost a potrebna pomoc

Post by MIKI73 »

Stavio sam 65535 i isto se ponasa,to sam i ja video ali zaboravi da ispravim pre nego sto sam ga postavio na forum.Probao sam ba nadjem na internetu i nesto slicno tom nacinu merenja frekvencije ali nista u picbasic-u
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Frekvencmetar prost a potrebna pomoc

Post by pedja089 »

A zasto ne bih stavio 0?
I taj program ne meri frekfenciju nego period izmedju 2 rastuce ivice...
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Frekvencmetar prost a potrebna pomoc

Post by MIKI73 »

Sad tek stizem da pisem. Skinuo sam sa nekog stranog foruma prog za merenje periode i ovaj sto sam postavio, a za njega je pisalo da meri frekvenciju. Ili sam ja lose shvatio ili se tej neko zeznuo. Jbg. ostdo bez frekvencmetra, nema veze, hvala vam u svakom slucaj.
Post Reply