|
|
|
![]() |
Approfondimenti di programmazione dei PIC
Cose da sapere per programmare correttamente un pic
|
|
|
|
|
Molti utenti in rete mi hanno segnalato che i programmi esposti in questo sito, non funzionavano sulle loro bemoboard, mentre per altri utenti non ci sono stati problemi di sorta.
Dai sintomi esposti nelle mail, è emerso che occorre conoscere un po' più in dettaglio il funzionamento dei PIC per poterli programmare correttamente.
In questa pagina saranno trattati approfondimenti che aiutano a capire il funzionamento dei PIC e la loro programmazione.
|
|
I flag dei PIC
Dopo aver creato un sorgente in linguaggio C ed averlo compilato, dobbiamo mettere mano al programmatore per inserire il programma appena creato nel PIC.Nella fase di scrittura del programma nel PIC, dobbiamo settare alcuni parametri di configurazione che riguardano il funzionamento del PIC. Si tratta, in definitiva, di regolare alcune periferiche interne al PIC.
Quando lanciamo il programma MeProg per programmare il nostro PIC, dobbiamo richiamare la finestra configuration dal menu view.
Ci apparirà una finestra come quella mostrata qui:
Questo particolare modo di funzionare, è relativamente economico da realizzare ma, si può utilizzare solo quando le temporizzazioni e la velocità di esecuzione del programma non rappresentano un fattore critico.
In pratica la frequenza di clock può variare di molto in funzione della temperatura e della tensione in quel momento applicata e, con esso, varieranno i tempi di ritardo o di esecuzione del programma.
Tenete conto che non è consigliabile utilizzare quarzi a frequenza maggiore a quella di targa del PIC se non volete abbreviare la vita utile del pic stesso.
Per gli altri parametri dell'oscillatore, bisogna dare un'occhiata al datasheet del modello di PIC preso in esame.
Andiamo ora alla zona Code Protection della finestra di configurazione.Come potete immaginare, in questa zona è possibile proteggere dalla copia il codice che avete inserito.
Ciò serve ad impedire che terze persone possano replicare il PIC e, con esso, l'intero circuito su qui voi avete lavorato.
Ovviamente l'uso della protezione dalla copia esclude la possibilità di utilizzare il bootloader per programmare i PIC (solo i modelli che lo permettono).
Il bootloader è un piccolo programma che si mette nel PIC e permette di programmare il PIC tramite la porta seriale del PC senza usare il programmatore (per il collegamento tra PIC e PC, si deve usare l'interfaccia RS 232 come quella descritta in questo sito).
Abbiamo da vedere un ultima zona nella finestra di configurazione: la zona Enable.
Diamo un'occhiata ai parametri più importanti.
Watchdog Timer Questo parametro abilità un particolare contatore che và azzerato continuamente con un apposito comando software durante la normale esecuzione del programma, pena il reset del PIC con conseguente riavvio del programma stesso.
Ciò può essere utile quando utilizziamo programmi poco stabili che tendono a bloccarsi.
Con i programmi pubblicati in questo sito, questo parametro và disabilitato, altrimenti vedrete il programma iniziare a lavorare e poi ricominciare da capo interrompendosi senza apparente motivo. (questo sintomo viene riportato in molte vostre mail di richiesta d'aiuto).
Power-up Timer Questo parametro serve a ritardare un pochino la partenza dell'esecuzione del programma all'accensione del PIC. Sembrerebbe una sciocchezza ma serve a far si che, all'accensione del circuito, si possano stabilizzare le tensioni di alimentazione e la frequenza del quarzo in modo che tutto possa funzionare in modo corretto.
Brown-out reset Questo parametro fa in modo che avvenga il reset del PIC nel caso in cui la tensione di alimentazione scenda oltre un certo valore.
Low Voltage Program Abilitando questo flag, diventa possibile programmare il PIC soltanto con i 5 Volt, senza dover fornire i 12-14 Volt dell'MCLR.
Con il tempo, vedremo se ci saranno altri approfondimenti da fare per questo sito.
Per ora ritengo che basti questo e, se avete richieste di approfondimento particolari, basta che me lo segnalate
|