Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Problem sa programom
#1
Pozdrav svima.Potrebno mi je bilo neto da moze da se menja frekvencija i perioda i napiso sam ovako za 16f628 i u proteusu radi sve kako treba ali kad sam povezao na plocici javlja se problem.Kad menjam frekvenciju menja se i perioda.U donjem redu mi pokazeje PR2 ali to cu da izmenim da pokazuje frekvenciju ako ovo gore navedeno resim.Evo koda:


cmcon=7
Define OSC 4

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

duty VAR WORD
milan var word

milan=245   
duty = 100  
   
   
   trisa=%00111111          
   trisb.3=0
   portb.3=0
   CCP1CON = %00001100  
   T2CON = %00000101    
   
lcdout $FE, 1

mainloop:
   
   PR2 = milan
   if porta.0=0 then
   milan=milan-1
   endif
   if porta.1=0 then
   milan=milan+1
   endif
   
opet:   
   CCP1CON.4 = duty.0   
   CCP1CON.5 = duty.1   
   CCPR1L = DUTY >> 2
   
   if porta.2=0 then
   duty = duty + 1     
   lcdout $FE, $80, "DUTY=", #duty
   pause 10
   IF ( duty < 500) Then opet:  
   duty = 500           
   endif
   
   if porta.3=0 then
   duty=duty-1
   lcdout $FE, $80, "DUTY=", #duty
   pause 10 
   if duty > 101 then opet:
   duty=100
   endif
   
   lcdout $FE, $80, "DUTY=", #duty
   lcdout $fe,$c0
   lcdout "f=",#milan
   
   GoTo mainloop                         
   End
Reply
#2
u cemu je ovo pisano?
Reply
#3
Izgleda da je u pitanju PIC BASIC ili PROTON compiler.

A zašto ne koristiš neki mikrokontroler sa hardverskim PWM modulom ( gomila iz serije 16F, napr 16F870)
i jednostavnom komandom završiš posao.

HPWM Channel,Dutycycle,Frequency
Napr: HPWM 1,127,10000 (na kanalu 1,duty 50%, 10KHz)
(duty je 127 jer 255 predstavlja 100%)
Pri promeni duty ne menja se frekvencija i obratno.

Pozz
Reply
#4
Znam za to samo nisam probao jer neznam kako da menjam duty i frekvenciju ako koristim HPWM.Ima li neki primer za promenu frekvencije u HPWM ?
Reply
#5
Mislim na promenu duty i frekvencije tasterima.
Reply
#6
Milane,

U HPWM komandi varijable : Dutycycle i Frequency možeš menjati čime ti padne na pamet pa i tasterima.

Kada koristiš tastere, NIMALO NIJE pametno koristiti ih samo kroz IF-THEN komandu zbog DEBOUNCE
I tu postoji komanda : "BUTTON" koja sve radi - proverava pin,stanje, postavlja vreme kašnjenja, vreme automatskog ponavljanja itd..

Kada se izvrši skok na labelu koju odredi "BUTTON" treba samo reći:

labela:
Dutycycle = Dutycycle + 1 ( ili Dutycycle = Dutycycle - 1)

takodje isto i za frekvenciju.

i posle ovoga izvršiš HPWM komandu :
HPWM Channel,Dutycycle,Frequency

..............................................

Primer za BUTTON:

http://melabs.com/downloads/pbpm108.pdf

na strani br.50

........................................................

Ne znam šta koristiš PBP ili PROTON, sintakse su vrlo slične.
Pročitaj prvo dobro uputstvo od kompajlera, drugačije će teško ići.

Nadji na internetu neki open sors od bilo kog projetka sa tastaturom i videćeš kako je to izvedeno.

Pozz
Reply
#7
Za debouncing algoritme pogledajte ovu temu:
http://forum.yu3ma.net/showthread.php?tid=690
Reply
#8
Vidim ja Milane šta mi je činiti.
Evo napisah ti nabrzinu programče u PBP ( Milan.pbp)

Imaš četiri tastera:
SET,ESC,UP,DOWN

Sa tasterima UP i DOWN menjaš Duty i automaski čuvaš promene u EEpromu.
Tasterom SET pokrećeš PWM, recimo elektromotor
Tasterom ESC ga gasiš.

Tasteri su preko BUTTON komande i imaju automatsko ponavljanje kada se zadrže.

Sam ćeš dalje sa LCD displejom itd..

Pozz

.....

P.S.

Primetio sam grešku u komentarima napravljenu zbog copy/paste
Kod labele SETUP: - treba "Pokreni PWM"
Kod labele DOLE: - treba "Smanji Duty"

Ali nebitno - to su samo komentari.


Attached Files
.zip   milan.ZIP (Size: 41,09 KB / Downloads: 10)
Reply
#9
Evo kakgav je problem bio sve vreme.Napisao sam i sa HPWM i ponovo se nesto glupo ponasalo kad sam ukljucio.Na ovaj 16f628a neradi mi RA0 (pinuo sam nekad ranije greskom na 12V) i kad u progrmu uopste nedefinisem RA0 onda sve radi na oba nacina a kad ubacim RA0 onda kad je HPVM sam poseza frekvenciju cim ukljucim.Sve vreme se nekako "mesao" RA0. Pitao bih samo do koliku najvecu frekvenciju mogu da izguram kad koristim HPWM ??
Reply
#10
Sad tek vidim da si pisao.Hvala ti puno,nisi trebao da se mucis zbog mene.Ja sam ovo sad nabrzinu napisao sa HPWM i radi ali nisma znao niti mi je palo napamet da moze tako da se umesa crknuti ra0 a ukapirao sam da je to kad sam probao napisan program sa hpwm jer tad cim se ukljuci pocne sam da podize frekvenciju.Hvala jos jednom.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)