C18 e XC8 a confronto col PWM

11 Anni 9 Mesi fa #1 da Guido
C18 e XC8 a confronto col PWM è stato creato da Guido

Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Guido
  • Platinum Member
  • Platinum Member
Di più
11 Anni 9 Mesi fa #2 da Guido
Risposta da Guido al topic Re: C18 e XC8 a confronto col PWM
Ciao, vi chiedo scusa, funzionano correttamente entrambi i codici, ho sbagliao a impostare i parametri in OpenTimer2 nel C18 che vanno come nell' XC8:

OpenTimer2 (TIMER_INT_OFF & T2_PS_1_16 & T2_POST_1_16 ); //Apro il timer2 per il pwm

UN domanda mi spiegate come si calcola con esempi il PWM period secondo la formula?

PWM period =[(period ) + 1] x 4 x TOSC x TMR2 prescaler

Uso un quarzo da 20MHz.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Guido
  • Platinum Member
  • Platinum Member
Di più
11 Anni 9 Mesi fa #3 da Pinna
Risposta da Pinna al topic Re: C18 e XC8 a confronto col PWM
Mi rifaccio all'esempio relativo riportato nel capitolo PWM del tutorial "C18 step by step":

si vuole ottenere un PWM con frequenza 20 KHz utilizzando il quarzo da 20 MHz presente nella freedom, con un prescaler impostato 1:1. Abbiamo quindi:

F = 20 KHz, F osc = 20 MHz, PS = 1

Prima cosa da fare è trasformare tutto nella stessa unità di misura per cui si avrà che:

F = 20KHz /1000 = 0.02 MHz

Seconda cosa da fare è calcolare il periodo che è uguale all'inverso della frequenza (1 / F), cioè:

Periodo PWM = 1 / 0.02 MHz = 50 microsecondi

Terza cosa da fare è calcolare la variabile period che sarà uguale a:

period = [(Periodo PWM * Fosc) / (4 * PS)] -1 cioè:

period = [(50 * 20) / (4 * 1)] - 1 = [1000 /4] -1 = 250 -1 = 249


Altro esempio:

F (frequenza da ottenere) = 20 KHz
Fosc (quarzo utilizzato) = 16 MHz
PS (prescaler) = 1:2 (cioè 2)

20 KHz /1000 = 0.02 MHz

Periodo PWM = 1 / 0.02 = 50 microsecondi

period = [(50 * 16) / (4 * 2)] -1 = [(800) / 8] - 1 = 100 -1 = 99


Spero di essere stato chiaro, altrimenti chiedi pure, se hai ancora dubbi

Chi vola vale, chi vale vola, chi non vola è un vile

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Pinna
  • Avatar di Pinna
  • Moderator
  • Moderator
Di più
11 Anni 9 Mesi fa #4 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: C18 e XC8 a confronto col PWM
Tornando alla prima domanda,
le librerie delle periferiche sono le stesse sia per C18 che XC8 per cui da questo lato, cambiare compilatore non cambia nulla.
Devi sempre ottenere gli stessi risultati.

Ho finito il proting delle librerie LaurTec per PIC18 e annotato alcuni punti che riassumero' in un articolo in maniera da agevolare il passaggio da C18 a XC8.

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
11 Anni 9 Mesi fa #5 da Guido
Risposta da Guido al topic Re: C18 e XC8 a confronto col PWM

Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Guido
  • Platinum Member
  • Platinum Member
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login