Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Configurare clock 32MHZ

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[11] Re: Configurare clock 32MHZ

Messaggioda Foto Utentebobina » 8 mar 2015, 17:15

Più che il bit PLLEN con SPLLEN = 1 il 4x PLL doveva abilitarsi come spiega il paragrafo 6.2.1.4 del datasheet.
Non vedendo tutto il codice è difficile dirlo, ma in realtà quello che è accaduto potrebbe essere che il quarzo interno ancora non aveva raggiunto il clock giusto ed il 4x PLL non si è abilitato quando gli veniva richiesto.
Il datasheet dice: "The input frequency for the 4x PLL must fall within specifications."
Infatti per verificare che il quarzo interno sia pronto conviene verificare i bit HFIOFR e HFIOFS del registro OSCSTAT e volendo c'è anche questo PLLR per vedere se il 4x PLL è pronto.
Se vuoi toglierti lo sfizio puoi provare a ripristinare il vecchio codice ed inserire i controlli sui bit. In fase di init metti un while che controlla i bit e non vai avanti finché non sono pronti.
Io farei una cosa del genere

Codice: Seleziona tutto
while(!OSCSTATbits.HFIOFR && !OSCSTATbits.HFIOFS){} // wait internal oscillator for ready
OSCCON = 0b11110000;
while(!OSCSTATbits.PLLR){} // wait PLL for ready
Avatar utente
Foto Utentebobina
212 6
Frequentatore
Frequentatore
 
Messaggi: 177
Iscritto il: 27 dic 2009, 14:22

0
voti

[12] Re: Configurare clock 32MHZ

Messaggioda Foto UtenteDavide90 » 8 mar 2015, 19:14

E' un ottima idea , la implementerò, in effetti non ci avevo pensato!

Grazie
Avatar utente
Foto UtenteDavide90
29 6
Frequentatore
Frequentatore
 
Messaggi: 130
Iscritto il: 5 lug 2012, 11:34

0
voti

[13] Re: Configurare clock 32MHZ

Messaggioda Foto Utentebobina » 8 mar 2015, 20:02

Ripensandoci il primo ciclo while è sbagliato, uscirebbe appena l'oscillatore è pronto e non stabile.
Codice: Seleziona tutto
while(!OSCSTATbits.HFIOFR){}
while(!OSCSTATbits.HFIOFS){}

così è meglio
Avatar utente
Foto Utentebobina
212 6
Frequentatore
Frequentatore
 
Messaggi: 177
Iscritto il: 27 dic 2009, 14:22

0
voti

[14] Re: Configurare clock 32MHZ

Messaggioda Foto UtenteTardoFreak » 9 mar 2015, 0:05

Di solito si mette un limite ai cicli perché il PLL potrebbe anche non funzionare.
"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

[15] Re: Configurare clock 32MHZ

Messaggioda Foto UtenteDavide90 » 9 mar 2015, 10:06

Una volta appurato che il PPL é disponibile e stabile, si manterrà in questo stato per tutta la vita del programma, oppure potrebbe non risultare non disponibile in qualsiasi momento durante l'esecuzione?? In tal caso , quali sono le condizioni che ne determinano la momentanea indisponibilità ? Immagino un calo di tensione e poi cos'altro?
Avatar utente
Foto UtenteDavide90
29 6
Frequentatore
Frequentatore
 
Messaggi: 130
Iscritto il: 5 lug 2012, 11:34

0
voti

[16] Re: Configurare clock 32MHZ

Messaggioda Foto UtenteTardoFreak » 9 mar 2015, 10:34

Una volta che è stabile lo è per tutto il programma.
Ha solo bisogno di un po' di tempo per stabilizzarsi.
La timeout serve più che altro per evitare che, magari a causa di un quarzo esterno che non funziona bene, si resti bloccati nell' aspettare una stabilizzazione che non avverrà mai. E' un discorso generale, prima o poi si prende l' abitudine nel farlo perché la sequenza per avere un clock sicuro (parlo di quarzo esterno) è questa:
- Si parte con l' oscillatore interno RC
- Si abilita l' oscillatore esterno
- Si accende il PLL
- Si aspetta che questo sia stabile
- Se tutto va bene si cambia la sorgente di clock collegandolo all' uscita del PLL, altrimenti si lavora con l' RC interno per gestire il malfunzionamento.
"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: Configurare clock 32MHZ

Messaggioda Foto UtenteDavide90 » 9 mar 2015, 10:40

Grazie, veramente utile!!!
Avatar utente
Foto UtenteDavide90
29 6
Frequentatore
Frequentatore
 
Messaggi: 130
Iscritto il: 5 lug 2012, 11:34

0
voti

[18] Re: Configurare clock 32MHZ

Messaggioda Foto UtenteDavide90 » 12 mar 2015, 21:49

Ragazzi ancora una cosa, secondo voi , settare il ciclo while in questo modo va bene ?
Codice: Seleziona tutto
OSCCON  = 0b11110000; //32 MHz
while(!OSCSTATbits.HFIOFR && !OSCSTATbits.HFIOFS); // attendo che il quarzo interno sia pronto
while(!OSCSTATbits.PLLR);   //Attengo che il PLLR sia pronto e quindi avere i 32mHZ

Tecnicamente il PIC attende che il primo while sia verificato, dopo di che esegue il secondo while, finché rimane verificato, poi, secondo quanto detto da Foto UtenteTardoFreak , il PIC non dovrebbe destabilizzarsi.

che ne pensate?
Avatar utente
Foto UtenteDavide90
29 6
Frequentatore
Frequentatore
 
Messaggi: 130
Iscritto il: 5 lug 2012, 11:34

0
voti

[19] Re: Configurare clock 32MHZ

Messaggioda Foto Utentebobina » 14 mar 2015, 18:24

Hai saltato il secondo messaggio in cui dicevo che il primo ciclo while era meglio suddividerlo in 2 while, aspetta prima che l'oscillatore è pronto e poi è stabile al 0,5%. Così appena l'oscillatore interno è pronto passa avanti.
Inoltre TardoFreak ha detto di inserire un eventuale timeout così eventualmente da segnalare l'errore.
Avatar utente
Foto Utentebobina
212 6
Frequentatore
Frequentatore
 
Messaggi: 177
Iscritto il: 27 dic 2009, 14:22

0
voti

[20] Re: Configurare clock 32MHZ

Messaggioda Foto UtenteTardoFreak » 14 mar 2015, 19:51

Non è obbligatorio farlo, ma è buona abitudine. ;-)
"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

PrecedenteProssimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti