Puoi scegliere qualsiasi cristallo per un microcontrollore PIC?


8

Sto usando PIC16F690 e so che l'oscillatore interno ha determinati valori (20,8,4 ...).

Vorrei mettere un cristallo esterno da 8 MHz, ma potrei trovare solo 8,8 MHz o 7,6 MHz.

Vorrei sapere se è possibile mettere uno di questi nel PIC, o deve essere esattamente 8MHz? Inoltre, come devo scegliere i condensatori per ciascuno?

Risposte:


10

È possibile utilizzare qualsiasi cristallo purché rientri nella gamma di frequenza per cui è specificato il driver del cristallo PIC.

Il driver di cristallo della maggior parte dei PIC (non ho cercato specificamente il tuo PIC, è il tuo lavoro) può essere impostato su tre diversi livelli di unità, di solito chiamati LP (bassa potenza), XT (cristallo) e HS (alta velocità). Quelli più lenti consumano meno energia ma hanno anche una frequenza di cristallo massima inferiore che possono supportare. La modalità HS potrebbe sovraccaricare e danneggiare i cristalli sensibili a bassa frequenza 32768 Hz, come quelli utilizzati negli orologi da polso. Insieme, i tre livelli di azionamento del cristallo coprono la gamma da pochi 10s di kHz a 20 MHz, che è comunque il più veloce che il PIC possa essere pilotato in ogni caso.

Un altro punto è che si desidera utilizzare un cristallo specificato per l'applicazione di risonanza parallela. Ciò significa che la sua frequenza è specificata per il modo in cui il driver del cristallo PIC guiderà il cristallo. Questi cristalli saranno specificati con una capacità di carico. I cristalli risonanti della serie funzioneranno, ma la frequenza probabilmente non sarà entro la tolleranza.


Molte grazie . il mio problema era che l'oscillatore interno mi dava 0.47us di istruzioni invece di 0.5us - per gli 8mhz. quindi immagino che un oscillatore ESTERNO sarà più preciso. è vero? un'altra cosa, non riuscivo a capire come impostare le micce per quella f?
Curnelious

4
@Curn: Sì, un cristallo esterno sarà più preciso dell'oscillatore interno. Anche i cristalli economici sono buoni per 50 ppm e 20 ppm sono generalmente disponibili per non troppi soldi. Per quanto riguarda le impostazioni di configurazione, queste sono tutte ben descritte nel foglio dati. Per un cristallo da 8 MHz, ti consigliamo di utilizzare la modalità HS.
Olin Lathrop,

8

Supponendo di non superare le specifiche di frequenza nel silicio, i fusibili programmati e il codice dell'applicazione, è possibile utilizzare qualsiasi cristallo desiderato. I fogli dati spiegheranno quali condensatori usare.


3
Vale la pena notare che cambiando la frequenza di clock cambieranno anche i calcoli per cose come baud rate e timer di intervallo. Sembra ovvio, ma è facile da dimenticare.
Scott Winder,

@Scott: solo se scrivi un codice irresponsabile con divisori di baud rate e simili hard-coded. Con una corretta codifica, si modifica un numero che è la frequenza dell'oscillatore e tutto viene automaticamente derivato da quello al momento della creazione, con ovviamente il controllo degli errori per casi impossibili o fuori portata. Hai ragione nel dover ricordare di cambiare un numero però.
Olin Lathrop,

1
@OlinLathrop: sono d'accordo con te in caso di lievi variazioni di frequenza. Tuttavia, drastiche variazioni di frequenza possono richiedere una modifica del pre e / o post-scalare di un generatore di baud rate al fine di mantenere le frequenze intermedie all'interno dell'intervallo raccomandato. Sul lato del timer, alcuni interruttori nella frequenza di clock possono causare overflow e qualsiasi frequenza diversa ti darà una diversa risoluzione di clock, quindi la modifica dei conteggi del timer (usando una macro di frequenza) è solo una parte della soluzione. Potrebbe anche essere necessario modificare l'orologio del timer per ottenere la precisione e la lunghezza richieste.
Scott Winder,

1
@Scott: Ma questo è tutto ciò che viene calcolato al momento della compilazione o almeno verificato. Se codifichi qualcosa come un prescaler (di solito non necessario) e la nuova frequenza delle istruzioni non supporta ciò che vuoi fare, il codice di build-time genererà un errore per avvisarti. Se riesce a gestirlo, lo fa silenziosamente. Non ci sono scuse per una variazione di frequenza che possa causare un problema in silenzio . È solo una cattiva codifica.
Olin Lathrop,

@OlinLathrop: non sono d'accordo. Sto solo sottolineando che non è sempre facile come cambiare un singolo numero, anche nel caso di una buona codifica. In ogni caso, è qualcosa da tenere d'occhio quando si cambia la frequenza.
Scott Winder,

0

Come diceva la scheda tecnica, è possibile utilizzare un oscillatore fino a 20 MHz. Per il condensatore il foglio dati può dirti che uso di quale tipo di quelli, ma per la quantità di condensatore che dovresti usare della tua esperienza.


1
Mentre "esperienza" è sempre una buona cosa, ma la capacità di carico richiesta dipende dal cristallo e deve essere specificata nella scheda tecnica dei cristalli. Questo ha a che fare con la frequenza di risonanza parallela. Inoltre, è necessario tenere conto della capacità parassita dei pin e delle tracce degli uC.
Rev.1.0

@ Rev1.0 Ottimo e grazie! ti ho votato. ad esempio ho visto questo foglio dati: html.alldatheet.com/html-pdf/236074/CRYSTEKCRYSTAL/CYSDXX/… sulla destra è possibile vedere una tabella (numero parte standard). dovrei usarlo per scegliere il condensatore? per esempio per 16mhz dovrei usare un condensatore da 20pf?
Roh,

1
No, la capacità di carico indicata è la capacità totale richiesta, non il valore per entrambi i condensatori. Calcola CX = 2 * (CL - Cstray), dove CX è il condensatore di cui hai bisogno, CL = 20pf e Cstray dipende dal tuo progetto (circa 2-5pf).
Rev1.0

1
Cstray è la capacità dei pin del microcontrollore (scheda tecnica) + la capacità parassita delle tracce sulla scheda (può essere approssimata conoscendo lunghezza, larghezza e strato delle tracce). Se questo è solo per un progetto hobby, supponi 5pf e probabilmente stai bene.
Rev1.0

1
Leggi e capisci questo :). "Se Cin e Cout non sono specificati, allora un valore di ipotesi di 5 pF per ciascuno è un buon inizio."
Rev1.0
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.