Frekvencmetar prost a potrebna pomoc

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

Moderators: stojke369, pedja089, [eDo], trax

Frekvencmetar prost a potrebna pomoc

Postby MIKI73 » 06-01-2020, 20:32

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
MIKI73
 
Posts: 69
Joined: 01-11-2014, 16:57

Re: Frekvencmetar prost a potrebna pomoc


Re: Frekvencmetar prost a potrebna pomoc

Postby pedja089 » 07-01-2020, 03:30

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...
User avatar
pedja089
 
Posts: 7667
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Frekvencmetar prost a potrebna pomoc

Postby MIKI73 » 07-01-2020, 16:47

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
 
Posts: 69
Joined: 01-11-2014, 16:57

Re: Frekvencmetar prost a potrebna pomoc

Postby MIKI73 » 07-01-2020, 16:51

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
 
Posts: 69
Joined: 01-11-2014, 16:57

Re: Frekvencmetar prost a potrebna pomoc

Postby MIKI73 » 07-01-2020, 17:42

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
MIKI73
 
Posts: 69
Joined: 01-11-2014, 16:57

Re: Frekvencmetar prost a potrebna pomoc

Postby pedja089 » 08-01-2020, 02:27

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.
User avatar
pedja089
 
Posts: 7667
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Frekvencmetar prost a potrebna pomoc

Postby MIKI73 » 08-01-2020, 15:29

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

Re: Frekvencmetar prost a potrebna pomoc

Postby MIKI73 » 08-01-2020, 15:43

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.
MIKI73
 
Posts: 69
Joined: 01-11-2014, 16:57

Re: Frekvencmetar prost a potrebna pomoc

Postby pedja089 » 08-01-2020, 18:34

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.
User avatar
pedja089
 
Posts: 7667
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Frekvencmetar prost a potrebna pomoc

Postby MIKI73 » 08-01-2020, 19:39

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
MIKI73
 
Posts: 69
Joined: 01-11-2014, 16:57

Re: Re: Frekvencmetar prost a potrebna pomoc


Re: Frekvencmetar prost a potrebna pomoc

Postby pedja089 » 09-01-2020, 00:09

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.
User avatar
pedja089
 
Posts: 7667
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Frekvencmetar prost a potrebna pomoc

Postby MIKI73 » 09-01-2020, 12:28

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.
MIKI73
 
Posts: 69
Joined: 01-11-2014, 16:57

Re: Frekvencmetar prost a potrebna pomoc

Postby pedja089 » 09-01-2020, 13:39

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.
User avatar
pedja089
 
Posts: 7667
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Frekvencmetar prost a potrebna pomoc

Postby MIKI73 » 09-01-2020, 14:17

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
 
Posts: 69
Joined: 01-11-2014, 16:57


Return to Mikrokontroleri - PIC

Who is online

Users browsing this forum: No registered users and 8 guests

GOOGLE