- Messaggi: 583
- Ringraziamenti ricevuti 1
C18 e XC8 a confronto col PWM
11 Anni 9 Mesi fa #1
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.
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
- Autore della discussione
- Platinum Member
Riduci
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.
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
- Autore della discussione
- Platinum Member
Riduci
Di più
- Messaggi: 583
- Ringraziamenti ricevuti 1
11 Anni 9 Mesi fa #3
da Pinna
Chi vola vale, chi vale vola, chi non vola è un vile
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
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
- Moderator
Riduci
Di più
- Messaggi: 1010
- Ringraziamenti ricevuti 107
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
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.
11 Anni 9 Mesi fa #5
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.
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
- Autore della discussione
- Platinum Member
Riduci
Di più
- Messaggi: 583
- Ringraziamenti ricevuti 1
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.
Login
© LaurTec 2006 - 2024