Heeft iemand toevallig een programma'tje ( source code) voor de PIC18F452 om PWM uit te sturen?

Lijkt mij beetje achterhaald om het wiel weer opnieuw uit te vinden (a)

Alvast bedankt!

Achterhaald of gemakzuchtig?
En..wil je de hardwarePWM gebruiken of wil je software PWM..?
Ga eens naar de piclist of naar de site van microchip. Dat zijn de plekken waar je sourcecode vandaan haalt.

bedoelingis om software matig met de PIC18F452 PWM temaken dus via TImer2 en CPP1 lijkt mij

Verder ben ik een drama een proggen dus vandaar devraag

Groeten

"bedoelingis om software matig met de PIC18F452 PWM temaken dus via TImer2 en CPP1 lijkt mij"

Dat noemen we dus hardwarematig :+

wat wordt er onder software matig verstaan dan :O

Softwarematig is als je PWM opwekt zonder de PWM hardware in een MCU te gebruiken. (Dus met een normale I/O pin)

Aha ok dan bedankt voor die opheldering

op die microchip site kan ik niet super veel samples vinden over PWM voor mijn controllertje of zieik dat gewoon verkeerd

Bedenk dat de PIC18 CPP1 implementaties eigenlijk voor de hele reeks hetzelfde zijn, ik kan me niet voorstellen dat daar geen voorbeeldcode voor is.

Ok ik kan nu beetjePWM doen nu nogkwestie van juiste getallen invoeren

Ben met de SIM van MPLAP C18 aan het testen Toch wil de periode en duty cycle niet helemaal zoals ik verwacht.

Er staat wel formule in datasheet maar daar kom ik niet echt uit

void OpenPWM1 (char period)

Formule:
PWM period = [period+1]x4xTosc x TMR2 prescaler

in mijn code prescaler op 1:1
kristalfreq=20MHz (gebruikt de SIM) dus Tosc=1/20MHz, toch?

wat ik ook invul er komt nooit de waarde uit die ik verwacht. enik wil liefst een 1 ms puls eruit hebben

enige tipsof hulp?

Lijkt me toch vrij simpel. Op wat voor waarde kom je voor period ?

HAd in gedachten

period is getal vanuit je c code en PWMperiode is de periode diejij wil instellen ik wil dat die 100ms is met een prescale van 1:1 en eenkristalosc van 20MHZ

(PWM period/ (4xToscxTprescale))-1=period

(100ms/(4*(1/20MHz)*1))-1=499999

Lijkt mij een beetje teveel????

100ms?? Dat is dus 10 keer per seconde knipperen, is dat niet een beetje te langzaam?

Had je ook niet iets van een BRGH register ofzo?

sorry foutje van mij puls mag maximaal 1ms duren
dus dat zou 4999 worden

wat is dat precies niet zo thuisin het register werk namelijk

BRGH heeft hier niets mee te maken. Is voor de Baudrate generator van de USART...

Ter verduidelijking ik wil 1ms lang iets aansturen m.b.v. PWM.

Dusdacht eroverom dan een periode van 2ms te doen en dan 50% duty cycle

is dit goeie gedachte gang?

Of heeft eriemand een uitgewerkt voorbeeld?

En dat register zit niet in een 18F pic.
De laagst haalbare hardware PWM frequentie is trouwens 1220 Hz met een 20MHz kristal.

Ik denk dat het in dit geval simpeler is om met bv. Timer 1 iedere ms een interrupt te genereren en dan een gewone output pin te togglen bij iedere interrupt...

waar wordt de 1220Hz dan vermeld?

Op 21 april 2008 14:34:14 schreef erwin156:
waar wordt de 1220Hz dan vermeld?

Ik heb hem uitgerekend, maar hij staat ook in het datasheet, in het PWM hoofdstuk.

Nou ik heb een bril nodig dan denkik :o

Maar julliezeggen dus datik naar de software PWMmoet overstappen gezien de frequentie van 1220hz

Het is de bodoeling te puls te verieren tussen 0 en 1ms

Of je gebruikt een 4 MHz kristal

Op 21 april 2008 14:18:57 schreef Arco:
BRGH heeft hier niets mee te maken. Is voor de Baudrate generator van de USART...

My bad, ik zal voortaan effe iets langer kijken voor ik iets roep. Ik meende de formule te herkennen en hoewel die er misschien op lijkt gaat het hier niet om SPBRG danwel BRGH.

Sorry voor de eventuele verwarring...