Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Commenti che generano errori

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[11] Re: Commenti che generano errori

Messaggioda Foto Utenteemacar » 12 ago 2014, 16:18

Ueee risolto il pin era RB4 funziona (era ovviamente scritto nel datasheet) :ok:
Non so ancora però se si può vedere dal debugger software..
Avatar utente
Foto Utenteemacar
156 6
Frequentatore
Frequentatore
 
Messaggi: 145
Iscritto il: 3 dic 2013, 11:02

1
voti

[12] Re: Commenti che generano errori

Messaggioda Foto UtenteWALTERmwp » 12 ago 2014, 17:47

emacar ha scritto:Ueee risolto il pin era RB4 funziona (era ovviamente scritto nel datasheet)
... esatto!
E' chiaramente riportato a pag.6 (Pin Diagrams) del datasheet; quanto riportato invece a pag.266 (fig.18.3) contiene purtroppo degli errori (credo sia retaggio dei datasheet dei micro precedenti).
L'associazione tra modulo CCP4 e pin di uscita è univoca e quindi può corrispondere solo a RB4.
Dopo avere guardato il listato che hai inserito nel Post (a prescindere dall'errore causato dall'aggiunta del commento) mi chiedevo se con quel codice pensavi effettivamente di ottenere una frequenza a 20KHz (come hai riportato nel commento).
Un'altra cosa, se hai voglia di controllare: il valore del dutycycle, una volta raggiunto "quota" 1000, credo che non sortisca più alcuna variazione alla forma d'onda perché la sua durata finisce per coincidere con quella del periodo.
Questa invece ...
emacar ha scritto:l'uscita non è in termini di bit 0 e 1 ma è in termini di frazioni crescenti a step di 1024.
... non mi è chiara come affermazione; se tu eventualmente ti volessi spiegare diversamente ...

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8982
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[13] Re: Commenti che generano errori

Messaggioda Foto Utenteemacar » 12 ago 2014, 21:22

Ok, per quanto riguarda i 20 kHz sono sbagliati, derivano da un commento preso da un'altra parte. Neanche ho controllato più di tanto il periodo perché mi interessava vedere intanto che funzionasse. Per quanto riguarda il 1023 io ho capito che il PWM ha una risoluzione di 10 bit x cui posso contare da 0 che corrisponde a uscita 0 a 1023 che corrisponde a uscita 3.3 V.a tal proposito rispondo all'ultima domanda: mentre le uscite digitali hanno come uscita 0 o 1 ovvero 0 V o 3.3 V. Il PWM ha un'uscita che va da 0 a 3.3 in maniera "analogica". Lo step è costituito uguale a 3.3/ 1024. Probabilmente da quanto hai scritto avrò capito male..
Avatar utente
Foto Utenteemacar
156 6
Frequentatore
Frequentatore
 
Messaggi: 145
Iscritto il: 3 dic 2013, 11:02

1
voti

[14] Re: Commenti che generano errori

Messaggioda Foto UtenteWALTERmwp » 12 ago 2014, 21:51

Da quello che avevi scritto nel Post [10] mi era sembrato, a meno ch'io equivocassi, ci fosse un pochino di confusione; questo è il motivo della mia richiesta nel precedente.
Allora, aggiungo qualche precisazione/correzione (tali dal mio punto di vista) a quello che hai appena scritto.
Per questo ...
emacar ha scritto:Per quanto riguarda il 1023 io ho capito che il PWM ha una risoluzione di 10 bit x cui posso contare da 0 che corrisponde a uscita 0 a 1023 che corrisponde a uscita 3.3 V
... sei fuori strada ovvero il 1023, in tal caso (PWM ottenuto tramite modulo CCPx), è solo un parametro che concorre a determinare la durata nel tempo del dutycycle; a tale proposito ti suggerirei la lettura del datasheet del micro a pag.257 e pag.266-267 dato che tratta del PWM.
Da quello che hai scritto in effetti sembra che tu stia equivocando con ciò che invece viene trattato nella conversione analogico/digitale ovvero la risoluzione ma, appunto, è un'altra cosa.
emacar ha scritto:mentre le uscite digitali hanno come uscita 0 o 1 ovvero 0 V o 3.3 V.
... il livello della tensione delle uscite può corrispondere anche ad altro valore, dipende dal tipo e dalla tecnologia con la quale è stata realizzata l'elettronica che si utilizza.
Per questo ...
emacar ha scritto:Il PWM ha un'uscita che va da 0 a 3.3 in maniera "analogica"
: no.
Il PWM utilizza (nel tuo caso) una uscita digitale (nel senso che non è un valore analogico variabile e o modulabile) per dare tensione (stato logico 1) o non dare tensione (stato logico 0); la variazione di luminosità (nel caso di un dispositivo a led) o, per esempio, la variazione di velocità di un motore, è in funzione di "quanto tempo" il segnale posto all'uscita digitale rimane a 1, per poi tornare a 0, nell'arco della durata del periodo (vedi pag.266)
Credo che questo ti possa essere d'aiuto, se non altro per fare chiarezza su alcuni argomenti.

Saluti

p.s.
chiedi se qualcosa non è chiaro o facci sapere se ritieni che qualcosa risulti incoerente.
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8982
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[15] Re: Commenti che generano errori

Messaggioda Foto Utenteemacar » 13 ago 2014, 0:59

WALTERmwp ha scritto:Da quello che avevi scritto nel Post [10] mi era sembrato, a meno ch'io equivocassi, ci fosse un pochino di confusione; questo è il motivo della mia richiesta nel precedente.
Allora, aggiungo qualche precisazione/correzione (tali dal mio punto di vista) a quello che hai appena scritto.
Per questo ...
emacar ha scritto:Per quanto riguarda il 1023 io ho capito che il PWM ha una risoluzione di 10 bit x cui posso contare da 0 che corrisponde a uscita 0 a 1023 che corrisponde a uscita 3.3 V
... sei fuori strada ovvero il 1023, in tal caso (PWM ottenuto tramite modulo CCPx), è solo un parametro che concorre a determinare la durata nel tempo del dutycycle; a tale proposito ti suggerirei la lettura del datasheet del micro a pag.257 e pag.266-267 dato che tratta del PWM.

Ho letto attentamente il datasheet e sono d'accordissimo, ora mi è chiaro perché hai detto che il limite è 1000. Non è una giustificazione perché avrei dovuto leggere attentamente il datasheet, ma avevo dato uno sguardo alla guida "C18 step by step" (spero che anche tu l'abbia sentita nominare, si trova facilmente su google) che avevo consultato tempo addietro, che penso sia a questo punto sbagliata perché suggerisce di scrivere 1023 perche il PWM ha 10 bit a disposizione, ovvero come erroneamente scrivevo io.
In questo caso però confermami se ho capito questo particolare sullo scrivere il duty cycle negli appositi registri:
CCPR4L ha gli 8 bit più significativi del duty cycle mentre CCP4CON<5:4> i due bit meno significativi. Nel mio main io scrivo solo su CCPR4L lasciando CCP4CON<5:4> a 00. per cui il mio conteggio parte da 000 poi 100 - 1000 - 1100 - 10000 ecc.ovvero 4-8-12-16 ecc. quindi sto contando a 4 a 4 e non ad 1 ad 1. Se avessi bisogno di contare ad 1 ad 1 dovrei aggiungere praticamente un altro ciclo for per far aumentare anche i due bit meno significativi giusto?

WALTERmwp ha scritto:
emacar ha scritto:mentre le uscite digitali hanno come uscita 0 o 1 ovvero 0 V o 3.3 V.
... il livello della tensione delle uscite può corrispondere anche ad altro valore, dipende dal tipo e dalla tecnologia con la quale è stata realizzata l'elettronica che si utilizza.

Questa è l'unica cosa che sicuramente non sbagliavo :D Ho scritto 3.3 V perché le uscite del pic18 in questione hanno il valore alto a 3.3 V.

WALTERmwp ha scritto:Per questo ...
emacar ha scritto:Il PWM ha un'uscita che va da 0 a 3.3 in maniera "analogica"
: no.
Il PWM utilizza (nel tuo caso) una uscita digitale (nel senso che non è un valore analogico variabile e o modulabile) per dare tensione (stato logico 1) o non dare tensione (stato logico 0); la variazione di luminosità (nel caso di un dispositivo a LED) o, per esempio, la variazione di velocità di un motore, è in funzione di "quanto tempo" il segnale posto all'uscita digitale rimane a 1, per poi tornare a 0, nell'arco della durata del periodo (vedi pag.266)

Qui ho sparato una gran cavolata. Tra tutte le varie prove mi sono rincretinito, se cambiasse il valore dell'uscita digitale non sarebbe più un PWM e ciò che sto facendo non avrebbe senso! Spesso quando si cerca di mettere in pratica qualcosa che si sa, magari anche bene, teoricamente, si rischia di fare una confusione micidiale.
Ti ringrazio tantissimo, sei stato molto disponibile e chiaro.
Avatar utente
Foto Utenteemacar
156 6
Frequentatore
Frequentatore
 
Messaggi: 145
Iscritto il: 3 dic 2013, 11:02

2
voti

[16] Re: Commenti che generano errori

Messaggioda Foto UtenteTardoFreak » 13 ago 2014, 1:00

La linea
Codice: Seleziona tutto
} // Fine main
genera errore perché l' ultimo carattere dopo un line comment deve essere il ritorno a capo.
Questa linea
Codice: Seleziona tutto
} // Fine main


Non genera errore.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[17] Re: Commenti che generano errori

Messaggioda Foto UtenteWALTERmwp » 13 ago 2014, 1:11

Grazie Foto UtenteTardoFreak.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8982
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[18] Re: Commenti che generano errori

Messaggioda Foto UtenteWALTERmwp » 13 ago 2014, 2:13

So che esiste quella guida ma non ho ancora avuto occasione di consultarla.
Non posso quindi scrivere se quel riferimento contiene delle inesattezze, ma non credo ve ne siano.
Probabilmente hai frainteso.

Il valore che viene confrontato (vedi "FIGURE 18-3" a pag.266) con il "Comparator" è effettivamente composto dagli 8 bits del registro CCPR4L (8 bits) e dai due 2 bits, del registro CCP4CON, che in questo si trovano in posizione 5 e 4, quindi 8 bits + 2 bits = 10 bits.
Con 10 bits puoi arrivare sino a 1023 e questo è il valore massimo che questo parametro può assumere.
Questo valore, però, non è espressione diretta di un valore temporale ma concorre, come parametro, alla determinazione della durata del dutycycle, cioè del tempo durante il quale l'uscita usata rimane a stato logico 1 (valore di tensione 3,3V).
Lo vedi nella EQUATION 18-2 a pag.267:
PWM_Duty_Cycle = (CCPR4L:CCP4CON<5:4>) * TOSC * (TMR2_Prescale_Value).

emacar ha scritto:Nel mio main io scrivo solo su CCPR4L lasciando CCP4CON<5:4> a 00
... infatti se l'incremento avviene sul registro CCPR4L credo che gli altri due bits di CCP4CON se sono a zero rimangono a zero (a meno che non vengano traslati a destra, questo particolare però lo vorrei verificare); così dovesse essere, avendo inizializzato CCPR4L a zero, al primo incremento di uno andresti ad assegnare 1 al primo bit meno significativo di CCPR4L ma, dato che si tratta di CCPR4L:CCP4CON<5:4>, il suo valore complessivo corrisponderebbe a quattro per cui ...
emacar ha scritto:ovvero 4-8-12-16 ecc. quindi sto contando a 4 a 4 e non ad 1 ad 1
.
Questa ...
emacar ha scritto:Se avessi bisogno di contare ad 1 ad 1 dovrei aggiungere praticamente un altro ciclo for per far aumentare anche i due bit meno significativi giusto?
... è una osservazione coerente ma, per quanto sopra, rimanderei ad una risposta certa a seguito di una verifica o ... ad una risposta da parte di chi lo sa.

Saluti e Buona Notte

p.s.
ti suggerisco, quando riprendi le citazioni, di ridurle all'essenziale, per quanto possibile, in modo tale da rendere più "leggibili" i Post.
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8982
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[19] Re: Commenti che generano errori

Messaggioda Foto Utenteemacar » 13 ago 2014, 15:17

TI riporto la parte in questione della guida:
All'interno del nostro ciclo è anche presente il seguente controllo:
Codice: Seleziona tutto
// Controllo che non sia maggiore di 2^10
if (duty_cycle > 1023) {
duty_cycle =0;
}

Tale controllo è necessario dal momento che il modulo PWM del PIC ha un risoluzione a
10 bit. Raggiunto il valore massimo, il duty cycle viene posto nuovamente a 0 per iniziare un
nuovo conteggio. Da un punto di vista visivo si ha che il LED di retroilluminazione viene
spento.

Ad ogni modo grazie sia a te che a Foto UtenteTardoFreak per l'aiuto. Direi che abbiamo risolto un po' tutti gli interrogativi del post.
Emanuele
Avatar utente
Foto Utenteemacar
156 6
Frequentatore
Frequentatore
 
Messaggi: 145
Iscritto il: 3 dic 2013, 11:02

0
voti

[20] Re: Commenti che generano errori

Messaggioda Foto UtenteWALTERmwp » 13 ago 2014, 15:37

Il fatto che venga incrementato sino a 1023 (10 bits) è dimensionalmente compatibile perché tale è la "capacità" messa a disposizione quindi, di per sé, è corretto; ho invece esternato il mio dubbio, seguendo per altro il tuo, in merito alla modalità tramite la quale effettivamente, al di là dell'assegnazione fatta al registro, possa avvenire il "carico" del valore (distribuito tra CCPR4L e CCP4CON<5:4>).
Comunque, nel caso in cui il loop dovesse essere "coerente" e funzionante (come una qualsiasi altra assegnazione), significherebbe che l'azione avrebbe come destinazione "CCPR4L:CCP4CON<5:4>" e non solo "CCPR4L".
Come avevo già scritto, non l'ho verificato ma mi riservo di documentarmi.

Saluti

emacar ha scritto:Ad ogni modo grazie sia a te che a TardoFreak per l'aiuto.
... prego.
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8982
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

PrecedenteProssimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti