PIC 16F877 / 16F874 Development Board v. 1.2

Siete il visitatore n.

Click here for English version

Pagina ottimizzata per risoluzione 1024x768

 

     
La Development Board v. 1.1 connessa ad un display LCD. Risulta ben visibile (leggi oltre, nella descrizione) la fila di led per controllare lo stato logico di 8 fra porte di I/O e terminali di circuiti esterni. Naturalmente, se possedete un oscilloscopio a 8 tracce, potete anche farne a meno. :-)) In basso a destra il cavo di programmazione.
 
Sotto, il PCB della Development Board (versione 1.0) - A destra, la DB v. 1.1 in funzione
 


Torna alla Home Page

Recapiti



Argomenti simili su questo sito:

PIC 16F84 F.F. Evaluation Board
Connessione di microcontrollori a porte RS-232 e dispositivi PS/2
Keypad 4x5 per microcontrollore
 

Caratteristiche del circuito

Come con la Evaluation Board per PIC 16F84 / 16C84 , ideata in base alle mie esigenze, anche per un microcontrollore superiore ho deciso di ideare e realizzare un circuito che possa essere una comoda e versatile base di sperimentazione. Questa basetta, infatti, permette di interfacciare il PIC con un qualsiasi circuito esterno in modo molto versatile e allo stesso tempo affidabile, permettendo di attribuire in fase di sviluppo eventuali malfunzionamenti elettrici al solo circuito esterno, e, naturalmente, di concentrarsi sul software.

Microcontrollori supportati: 16F877, 16F874

Nota: la piedinatura del PIC 16F877 è compatibile (verso l'alto) con quella dei microcontrollori PIC 18F442, 18F452, 18F448, 18F458. Questa basetta è stata progettata per il PIC 16F877 e testata con esso (e in questa pagina ad esso faremo sempre riferimento); il circuito, comunque, dovrebbe essere adatto anche per i modelli menzionati (18F4x2 e 18F4x8), con le seguenti note:

a) il piedino OSC2 risulterebbe multiplexato con RA6
b) nel 16F877 la programmazione L.V.P. e il funzionamento in tale modalità coinvolgono il pin RB3, nelle famiglie 18F4x2 e 18F4x8 il pin RB5, pertanto per queste ultime la modalità L.V.P. non è selezionabile tramite semplice dip-switch come per il 16F877; il funzionamento LVP (ma non la programmazione LVP) dovrebbe comunque essere possibile connettendo a massa il pin interessato, attraverso una resistenza, tramite filo o connettore
c) i valori di capacità per il clock principale consigliati per quarzi da 1 a 20 MHz risultano identici nei datasheet del 16F877 e in quelli delle due famiglie 18F4x2 e 18F4x8; il valore di 15 pF scelto per questa basetta (e testato con quarzi da 4 a 20 MHz per il 16F877) dovrebbe dunque essere adatto anche per le due famiglie della serie 18 menzionate.

Veniamo dunque alle caratteristiche principali della DB12:

  • Clock generato mediante rete RC o mediante quarzo (XT,HS); la frequenza di clock può essere variata con un trimmer in modalità RC e con l'utilizzo di vari quarzi (senza saldarli e dissaldarli, ma semplicemente inserendoli in un connettore) in modalità XT e HS
  • Buffer ottale CMOS che pilota otto mini-led: agli ingressi del buffer si possono connettere, mediante comodissimi ma stabili fili volanti (i fili rossi in alcune delle foto), sia piedini di I/O del PIC che qualunque altro terminale di un eventuale circuito esterno, il tutto senza caricare le sorgenti; naturalmente i segnali che vengono monitorati possono poi essere portati altrove mediante un altro connettore
  • Doppia serie di connettori, per spine fisse e per fili volanti, per realizzare collegamenti con il mondo esterno di tutti i pin del microcontrollore (inclusi RESET e alimentazione)
  • Connettore per la connessione a programmatori di vario genere, che evita quindi la necessità di rimuovere il PIC dal suo zoccolo. NOTA BENE: QUESTA BASETTA NON E' UN PROGRAMMATORE
  • Funzionamento anche in modalità LVP tramite dip-switch
  • Selezione delle varie modalità di funzionamento mediante comodi dip-switch a 4 vie e 6 vie
  • Trimmer per la sperimentazione dei convertitori A/D on chip (collegabile a uno qualunque fra gli 8 A/D disponibili nel 16F877)
  • Pulsante di reset; selezione di connessione del piedino di RESET a Vdd con semplice pull-up o con circuito di Power On; piedino di RESET pilotabile sia da programmatore che da circuiti esterni
  • Regolatore on board per l'alimentazione al PIC e a circuiti esterni; alimentazione da circuiti esterni; 5V forniti dal regolatore sulla basetta (ingresso circa 7-15V), che possono anche essere portati a circuiti esterni, oppure alimentazione al PIC dai circuiti esterni stessi
  • Spie led per indicare presenza di alimentazione in punti diversi della basetta (una su tre è disinseribile)
  • A differenza di altri circuiti simili, con questo si ha la massima libertà nell'utilizzare le porte, non essendo queste connesse direttamente, ad esempio, ai led sulla basetta; in tal modo si possono utilizzare le porte con le soglie logiche che interessano (ad esempio ST, TTL) e destinarne altre al pilotaggio dei led di controllo; inoltre, come anticipato, esse possono pilotare anche altri carichi o essere settate come ingressi, essendo i led pilotati da un buffer

Come anticipato, questo circuito non è un programmatore di PIC, ma può essere facilmente interfacciato con uno dei numerosi programmatori che è possibile reperire, permettendo quindi di non rimuovere mai il microcontrollore dalla Development Board (programmazione in-system).
E' supportato l'interfacciamento anche con programmatori LVP; oltre a questa caratteristica, è naturalmente possibile il funzionamento sia dei chip con il bit di LVP attivato che di quelli con lo stesso bit disattivato; è ovviamente supportato anche l'interfacciamento con programmatori tradizionali (12V su /MCLR).
La D.B. è costruita su un circuito a doppia faccia, quindi di realizzazione non proprio banale; del resto, dando un'occhiata al
layout, ci si convince facilmente che si trattava dell'unica via percorribile, a meno di non voler inserire decine di ponticelli.

NOTA: le figure relative al layout e agli schemi contenuti più avanti in questa pagina sono in bassa risoluzione, per ovvi problemi di tempo di caricamento delle pagina, ma, i relativi link rimandano a schemi a risoluzione migliore. Quando fate click su un link relativo a una figura (ad es. il layout) e si apre una nuova finestra contenente una immagine con buona risoluzione, consiglio di non chiuderla, perché potrebbe essere comoda da avere sott'occhio durante la lettura e in particolare per l'illustrazione degli esempi riportati.

Nel disegnare questo circuito ho perseguito l'obiettivo della versatilità, e, nello stesso tempo, anche la possibilità di poter montare solamente i componenti di interesse, rendendo in tal modo questa D.B. non dispendiosa.
Naturalmente è possibile montare in un secondo tempo una parte o tutti i componenti non utilizzati all'inizio.
La versione del circuito qui presentato è la 1.2, terminata nel Febbraio 2003.

Immagini per la realizzazione

Se volete costruire la Development Board (dopo aver letto in particolare la sezione "Riconoscimenti e avvertenze"), potete trovare qua sotto i links per salvare le immagini necessarie (risoluzione 300 dpi), accessibili comunque anche in altri punti di questa pagina.

Layout lato rame a 300 dpi (316 KB)
Layout lato componenti a 300 dpi (178 KB)
Disposizione dei componenti (silkscreen) a 300 dpi (131 KB)
Schema elettrico a 300 dpi (240 KB)
Disposizione dei componenti e disegno delle piste a 300 dpi (465 KB) , oppure, ancora ben visibile,
Disposizione dei componenti e disegno delle piste a 200 dpi (251 KB)

Perché così tanti dip-switch?

Ho scelto di utilizzare uno switch per ognuno dei terminali che talvolta vanno isolati o connessi ad altri terminali particolari (ad es., durante le fasi di programmazione), sia per garantire un sicuro isolamento elettrico, sia perché i semplici buffer 3-state possono non essere comodi da utilizzare e potrebbero anche dare qualche problema (ad. es., per il /RESET e l'alimentazione).

In ogni caso, durante la normale alternanza programmazione / utilizzo, ad esempio quando si sviluppa il software, per consentire la programmazione del chip è generalmente sufficiente eseguire delle operazioni molto semplici, non più di pochi secondi, ponendo tutti gli switch di alcuni dip-switch su OFF e tutti quelli di un altro dip-switch su ON (altri dip-switch possono invece essere lasciati come sono). Appena il chip è programmato, basta eseguire l'operazione inversa per avere nuovamente il PIC pronto all'uso e connesso al mondo esterno. Nella sezione "Programmazione" le operazioni da svolgere, in base al tipo di programmatore, alla sua alimentazione e al valore del bit LVP del PIC, sono elencate in dettaglio per la massima comodità d'uso.

Riconoscimenti e avvertenze

L'ideazione del progetto è totalmente personale; un riconoscimento va comunque al software che mi ha permesso di realizzare il layout del circuito elettrico. Si tratta del programma PCB Elegance v. 2.0, che io posseggo in versione FREEWARE limitata a 200 pin, realizzato dalla MERCO Electronics, la quale mi ha inoltre concesso l'autorizzazione al suo uso anche per scopi non personali.
I nomi Microchip e PIC sono marchi registrati.

Nota bene: Sebbene sia in teoria possibile utilizzare altre forme di alimentazione, la Development Board v 1.2 è stata progettata per essere alimentata con batterie 9-12V e interfacciata solamente con circuiti alimentati anch'essi a batterie a bassa tensione. E' comunque presente un fusibile da circa 800 mA; vedi avvertenze sul fusibile nell'elenco dei componenti.

In ogni caso, siate sempre certi di sapere con esattezza ciò che state facendo!

Trattandosi di materiale messo gratuitamente a disposizione di chiunque lo desideri, ne è assolutamente vietata ogni forma di utilizzazione a fini commerciali.
E' altresì vietata ogni modifica al circuito se non per fini didattici o strettamente personali; in tale evenienza, esse non debbono comunque rappresentare fonte diretta o indiretta di profitto.
Se in qualche modo si intende divulgare tali modifiche è fatto obbligo di richiedere un permesso scritto all'autore di questo articolo (anche via
e-mail).
Il layout del circuito e tutte le informazioni contenute in questa pagina sono fornite così come sono, senza alcuna forma di garanzia. Non mi assumo naturalmente alcuna responsabilità per danni diretti o indiretti a persone o a cose derivanti dalle informazioni contenute in questo articolo.
Sono infine gradite segnalazioni di qualunque genere che possano consentirmi di migliorare il circuito stesso.


Prima di procedere con la descrizione del circuito, introduciamo una nota operativa.

Note per la identificazione degli switch e dei terminali dei connettori

Il riferimento ad un particolare interruttore dello switch Sx avverrà mediante la grafia Sx-n; medesima grafia per i connettori JPx. Il suffisso "E" indica semplicemente "extra". Il riferimento allo switch Sx-1 indica il primo interruttore dello switch Sx a partire dall'alto; analogo significato in riferimento ai connettori. Nell'immagine qui sotto, ad esempio, S6-4 non è connesso ad alcuna pista, JP9-6 è connesso a S5-6 e, quando questo è su ON, anche a R7 e a R6.

Per un altro esempio vedi figura 4 a 200 dpi - Disposizione dei componenti e disegno delle piste (la versione a 300 dpi, stampabile con buona qualità, è accessibile alla sezione layout, ma richiede più tempo per essere caricata rispetto a quella a 200 dpi, più che sufficiente per un'occhiata). In figura 4, ad esempio, quando S5-6 e S3-6 sono chiusi, c'è connessione fra JP9-6 e il piedino 36 del PIC (RB3) attraverso R6; quando S5-6 e S3-6 sono aperti, e S3-3 è chiuso, il piedino RB3 del PIC è connesso solo a JP5-5.
Nota: nel testo si farà riferimento quasi esclusivamente a JP1, JP2 .. JP8; resta inteso che si tratta di riferimenti anche ai connettori JPE1, JPE2 .. JPE8 rispettivamente, essendo gli elementi omologhi dei due insiemi collegati fra loro pin a pin.

Caratteristiche e descrizione del circuito

Torniamo adesso alle possibilità offerte dalla Development Board.

Se volete, invece di leggere subito la descrizione delle varie caratteristiche del circuito, per rendervi conto di ciò che questa basetta può permettervi di fare potete anche dare un'occhiata a qualcosa di molto più pratico, ovvero come settare gli switch per il normale funzionamento .

Alimentazione del circuito: il circuito è stato progettato per essere alimentato mediante batteria 9-12V, ma è possibile utilizzare anche una sorgente continua non regolata 7-15V (un 7805 fornisce +5V regolati al PIC, ad un eventuale programmatore e ad un eventuale circuito esterno), oppure alimentazione da un circuito esterno mediante JP8 - S6 (in quest'ultimo caso si consultino i datasheet Microchip per il range di valori ammessi). NOTA BENE: il fusibile protegge solo la sorgente di alimentazione applicata su J1 (o JPE15); tale fusibile va scelto in funzione del tipo di alimentatore utilizzato, e deve prevedere un adeguato margine di sicurezza (ad esempio, per un alimentatore in grado di erogare 500 mA, consiglio fusibili dell'ordine di 250 mA o poco più). Inoltre, anche la tensione di ingresso al 7805 determina il valore del fusibile, in quanto questo deve evitare anche eccessiva dissipazione di potenza da parte del 7805 stesso (vedi avvertenze sul fusibile all'elenco dei componenti). IN OGNI CASO, il fusibile non deve essere di valore superiore ad 800mA.

Piedino /MCLR: è possibile controllarlo mediante circuito esterno o mediante programmatore, connetterlo mediante pull-up direttamente a Vdd, oppure anche tramite capacità a Vss in modo da implementare un circuito di Power On (peraltro già presente nel PIC); esiste anche la possibilità di resettare il PIC durante il funzionamento mediante il pulsante S4.

Connessione da e verso l'esterno di Vdd, Vss, /MCLR: connessione da o verso un circuito esterno di Vdd, Vss, /MCLR (quest'ultimo indipendentemente da quale sia la sorgente di alimentazione); connessione di Vdd e Vss da o verso un qualunque programmatore.

Sorgente di oscillazione per la generazione del clock: connettore con la possibilità di ospitare un quarzo (testati: 4MHz, 8 MHz, 12 MHz, 20 MHz), modalità RC con resistenza regolabile, per una oscillazione regolabile su un vastissimo range (testato solo parzialmente), fino a qualche MHz;
possibilità di ricevere il clock da un circuito esterno o di inviare ad esso l'oscillazione di riferimento; quest'ultima potenzialità non è stata testata sperimentalmente; sono state condotte prove, anche se non certo esaustive, in merito ad eventuali accoppiamenti fra la pista del clock e le piste di segnale, nonché fra le piste stesse, senza al momento rilevare problemi anche a 20 MHz.

Possibilità di programmare il PIC direttamente sulla Evaluation Board: è possibile connettere la basetta ad un programmatore mediante connettore a 6 poli, con possibilità di fornire alimentazione al programmatore o riceverla da esso. Questa basetta supporta sia il Low Voltage Programming e il funzionamento dei microcontrollori che hanno tale funzione attivata (è sufficiente chiudere uno switch per mantenere a massa il piedino RB3), sia la programmazione a mezzo di programmatori tradizionali e il funzionamento dei PIC con LVP disattivato. Da notare che i PIC in cui il LVP è attivato possono essere programmati ANCHE con il metodo tradizionale (la modalità di programmazione viene attivata con 12V sul piedino di /MCLR).

Connessione da e verso l'esterno dei piedini di I/O: tutti i piedini di I/O sono portati a connettori per interfacciare il PIC con circuiti esterni, sia mediante prese per connettori stabili che mediante connettori SIL per fili volanti (vedi fotografie).

Spie alimentazione: tre led (uno è inseribile mediante jumper) indicano la presenza di alimentazione in parti diverse del circuito e ricordano di prestare attenzione ad evitare conflitti elettrici fra le possibili sorgenti di alimentazione.
Esiste anche un diodo per la protezione dall'inversione della polarità di alimentazione al 7805 (ma non per le altre sorgenti).

Qualche applicazione
Per quanto riguarda le possibili applicazioni, la basetta consente di avere un circuito di base sicuramente funzionante e facilmente interfacciabile, con conseguente possibilità di dedicarsi alla messa a punto del programma e del circuito da sviluppare.
Al momento, per mancanza di tempo, ho realizzato programmi per sperimentare alcune funzionalità del 16F877 e della basetta (conversione A/D, buffer, I/O ecc.), e ho appena terminato un programma per pilotare un LCD non-standard (con tavola di look-up) e gestire un tastierino 4x5; con il PIC 16F84, parente più piccolo del 16F877, ho invece realizzato, tra l'altro, un frequenzimetro di L.F. (fino a circa 18 KHz), un cardiofrequenzimetro (mediante coppia led-fotoresistore posta in prossimità della cute), entrambi con visualizzazione su display 7 segmenti, una interfaccia per la comunicazione con un mouse PS/2 (
su questo stesso sito).


Funzione dei vari connettori e dip-switch

Se volete, invece di leggere subito la descrizione dei vari connettori e dip-switch, potete dare un'occhiata a qualcosa di molto più pratico, ovvero come settare gli switch per il normale funzionamento; potrete così facilmente rendervi conto di ciò che questa basetta può permettervi di fare.

Come anticipato, la selezione fra le diverse modalità di funzionamento avviene mediante dip-switch (vedi ancora figura 4 - Disposizione dei componenti e disegno delle piste).

Veniamo ora alla descrizione della funzione dei diversi interruttori.

S1 - Controllo di alimentazione e reset

Alimentazione. Con S1-1 e S1-2 su ON si invia al PIC l'alimentazione positiva proveniente dal 7805, ovvero +5V regolati, e lo si connette al comune del medesimo regolatore, che coincide con il comune del circuito di alimentazione esterno (J1 o JPE15). In particolare, lo switch S1-1 è per il positivo a +5V (Vdd) e lo switch S1-2 è per la massa (Vss).
Lo switch S1-3, se attivato, permette al piedino /MCLR di essere connesso mediante pull-up a Vdd (se inviata al PIC), il che, in parole povere, significa che in tal caso il PIC non viene tenuto nello stato di reset e il programma viene eseguito.
Per resettare il microcontrollore è comunque disponibile (e talvolta preferibile) un pulsante di Reset (S4).
Lo switch S1-4 permette di inserire fra il piedino /MCLR e la massa una capacità, in modo tale da ottenere l'uscita dallo stato di reset dopo un certo tempo dal collegamento all'alimentazione di /MCLR tramite S1-3.
Tale espediente (personalmente raramente utilizzato) dovrebbe essere comunque superfluo, visto che il PIC possiede internamente un circuito che svolge la medesima funzione.
Quando si vuole attivare il PIC mediante alimentazione dal 7805, suggerisco di porre su OFF tutti gli interruttori di S1, connettere l'alimentazione, porre su ON S1-1 ed S1-2 (Vdd e Vss), porre su ON S1-3 (/MCLR) ed eventualmente S1-4 per il Power On ( quest'ultimo prima di S1-3). Il Pic comincia allora a funzionare. In dipendenza dal programma, può essere conveniente o necessario resettare il PIC con il pulsante S4. Naturalmente, se si utilizza l'alimentazione proveniente dal programmatore attraverso JP9 o quella di un circuito esterno attraverso JP8, S1-1 e S1-2 NON vanno mai attivati.

S5 - Connessione a programmatori
Si tratta di un dip-switch a 6 vie che controlla la programmazione del PIC.
Fate molta attenzione nel connettere l'alimentazione verso o dal programmatore. Alcuni programmatori hanno bisogno di alimentazione, che può quindi essere quella fornita al PIC dal 7805 o da circuiti esterni tramite JP8 e S6, mentre altri forniscono essi stessi alimentazione al PIC.
S5-1 connette fra loro la Vdd del PIC e quella del programmatore.
S5-2 connette al programmatore il piedino /MCLR.
S5-3 connette fra loro la Vss del PIC e quella del programmatore.
S5-4 ed S5-5 connettono rispettivamente la RB6 ed RB7 del programmatore, tramite lo switch S3, ai relativi piedini del PIC. La funzione di S3 è descritta oltre.
S5-6 connette al segnale RB3 del programmatore, se S3-3 è aperto e S3-6 chiuso, il piedino RB3 del PIC; da notare che durante il normale funzionamento del PIC, se nella configuration word è attivata la funzione LVP (Low Voltage Programming), tra l'altro di default sui PIC usciti dalla fabbrica, RB3 DEVE ESSERE POSTO A MASSA aprendo S3-3 e chiudendo S3-6; lasciando invece RB3 flottante, si potrebbe entrare inavvertitamente in modalità programmazione. Notare che utilizzando la LVP il pin RB3 non può essere usato come piedino di I/O.

S2 - Clock
Si tratta dello switch che controlla la sorgente dell'oscillazione di riferimento con cui il PIC genera il clock interno. Da notare che, almeno nel caso di sorgente quarzata, l'oscillazione sui terminali Osc1 e Osc2 risulta una sinusoide o una sinusoide leggermente distorta.
S2-5 ed S2-6 connettono i piedini Osc1 e Osc2 del PIC al quarzo, facendo in tal modo funzionare il microcontrollore in modalità XT o HS.
Tramite S2-1 ed S2-2 si connettono i piedini Osc1 e Osc2 al connettore JP1, permettendo in tal modo di portare tali segnali ad un circuito esterno o di riceverli da esso.
S2-3 connette al PIC la rete RC per la generazione del clock in tale modalità. Il potenziometro permette di regolare la frequenza di oscillazione su un ampio range. Il valore minimo di resistenza nella rete RC è dato dal valore di RE4.
Naturalmente solo una sorgente di oscillazione (RC o quarzo) deve essere selezionata in ogni istante.

S3 - Programmazione e modalità LVP
Tramite S3-1,S3-2 ed S3-3 si connettono i piedini del PIC RB7, RB6, RB3 rispettivamente ai connettori JP5-8, JP5-7, JP5-4.
Tramite S3-4 e S3-5 si connettono i piedini RB7 ed RB6 agli switch S5-5 e S5-4 rispettivamente (notare l'inversione di ordine), e, nel caso questi siano chiusi, anche ai connettori JP9-5 e JP9-4 da connettere al programmatore.
Se il LVP è attivato, durante il normale funzionamento del PIC si deve porre S3-3 su OFF per evitare di connettere il piedino RB3 a JP5-4 e S5-6 su ON per portare RB3 a massa tramite una resistenza di pull-down. Vedere i dettagli alla sezione "Programmazione".
Si raccomanda di fare attenzione, durante la programmazione, ad isolare i pin dei connettori JP5 e JPE5 connessi a RB6,RB7, RB3 aprendo S3-1, S3-2, S3-3.
E' invece buona norma, se non indispensabile, dopo la programmazione, ovvero durante il normale funzionamento, isolare il PIC dai terminali del programmatore aprendo tutti gli switch di S5. Se il LVP è disattivato, aprire S3-4, S3-5, S3-6 e chiudere S3-1, S3-2, S3-3; se invece il LVP è attivato, aprire solo S3-4 e S3-5 (nonché S3-3 che dovrebbe risultare già aperto) e chiudere S3-1 e S3-2, lasciando dunque su ON S3-6.

S6 - Alimentazione e reset da o verso circuiti esterni
Con questo dip-switch si connettono i piedini Vdd, Vss del PIC ai connettori JP8, JPE8, JPE9 e JPE10, mentre /MCLR viene portato su JP7-2 e JPE7-2. In particolare, S6-1 connette la Vdd a JP8-2, S6-2 connette /MCLR a JP7-2, S6-3 connette la Vss a JP8-1.
Si noti l'inversione nell'ordine fra Vdd e Vss, dovuta alla numerazione in senso crescente verso l'alto per il lato destro della basetta, scelta per la particolare disposizione dei piedini del PIC (le porte di I/O sono numerate in questo senso).
Al solito, si faccia attenzione a non creare conflitto fra le alimentazioni.


Jumpers e LED.
Il led D2 indica la presenza di alimentazione in uscita al 7805. A led acceso, fare molta attenzione a non inviare anche al PIC l'alimentazione proveniente dal 7805 nel caso in cui al microcontrollore arrivi già alimentazione attraverso JP9 (programmatore) o JP8.
Il fusibile serve ad interrompere l'alimentazione al 7805 nel caso in cui l'assorbimento superi il valore nominale del fusibile stesso; il fusibile serve a preservare da sovraccarico eventuali alimentazione esterne in ingresso al solo 7805, ovvero non ha effetto su alimentazioni collegate attraverso JP8 o JP9; inoltre, in caso di cortocircuito, non è affatto detto che riesca ad evitare danni al chip, al programmatore e ad eventuali circuiti esterni collegati alla basetta, nonché all'alimentatore stesso, a qualunque connettore (J1, JP8 o JP9) sia collegato.
S7 inserisce il led D3, il quale, in tal caso, indica la presenza di alimentazione al PIC, sia essa proveniente dal 7805, tramite S1, da JP9 tramite S5 o da JP8 tramite S6
Il led D4 indica la presenza di tensione fra i piedini 1 e 2 del connettore JP8; tale tensione può ovviamente essere quella fornita dal circuito che alimenta il PIC (il 7805, tramite S1, o il programmatore, tramite JP9 e S5), con S6-1 e S6-3 chiusi, oppure provenire dal connettore JP8 (in tal caso essa raggiunge il PIC solo se S6-1 e S6-3 sono chiusi.

Normale funzionamento

Come settare gli switch per le varie modalità di lavoro

Di seguito viene descritto come settare gli switch per le varie modalità di funzionamento. A prima vista può sembrare complicato, ma ci si accorgerà ben presto che si tratta di una procedura semplice e che nello stesso tempo garantisce una grande versatilità. Poco oltre potete trovare alcune figure che illustrano praticamente come disporre gli switch nei casi più comuni.
Partendo da tutti gli switch su OFF, si devono anzitutto distinguere i due casi di funzione LVP attiva o non attiva, validi, durante il normale funzionamento del PIC, per tutte le configurazioni di alimentazione, clock, ecc. (per la programmazione vedi invece oltre, alla sezione omonima).

1) Selezione modalità LVP

1-a) funzione LVP DISATTIVATA (il programmatore può essere permanentemente connesso a JP9, essendo quest'ultimo isolato durante il normale funzionamento).
Porre nell'ordine (vedi anche
figura E1):

S3-6 su OFF (in tal modo il piedino RB3 del PIC viene isolato da S5-6)
S3-3 su ON se si vuole collegare il piedino RB3 del PIC a JP5-5

Da notare che, nel caso la funzione LVP sia DISATTIVATA, e si esegua invece la procedura 1-b) relativa ai PIC che abbiano la funzione LVP ATTIVATA, se la porta RB3 viene utilizzata come output non si dovrebbero avere particolari problemi: RB3 verrebbe infatti collegata a massa attraverso la serie di R6-R7, con un 'assorbimento dell'ordine di 5V / 20 KOhm = 250 microAmpere. Se la porta venisse invece utilizzata come input, tale corrente dovrebbe essere fornita dal circuito collegato a RB3, il che potrebbe alterare il livello del segnale.

1-b) funzione LVP ATTIVATA (il programmatore può essere permanentemente connesso a JP9, essendo quest'ultimo isolato durante il normale funzionamento).
Porre nell'ordine (vedi anche
figura E2):

S3-3 su OFF (S3-3 isola il piedino RB3 del PIC da JP5-5)
S3-6 su ON (in tal modo il piedino RB3 del PIC viene collegato a massa attraverso la serie R6-R7)

In tal modo, durante il normale funzionamento, RB3 risulta portata a massa attraverso un pull-down e il PIC non può entrare accidentalmente in modalita programmazione, cosa che invece potrebbe avvenire lasciando RB3 flottante.

Dopo il settaggio degli switch relativi alla funzione LVP, elenchiamo ora come settare i vari switch per il normale funzionamento del PIC. Si parte da tutti gli switch su OFF, eccetto quelli eventualmente su ON (S3-3 e S3-6) come indicato ai punti 1-a) o 1-b).

2) Alimentazione

2-a) dal 7805 (vedi figura E1, figura E2)

Porre S1-1 e S1-2 su ON (S6-1, S6-3 su OFF).

2-b) dall'esterno tramite JP8

Porre S6-1 e S6-3 su ON (S1-1, S1-2 su OFF).

3) RESET

Nota: per resettare il microcontrollore durante il funzionamento è disponibile (e talvolta preferibile ad altri metodi) un pulsante di Reset (S4).

3-a) Reset con pull-up a Vdd (caso usuale) (vedi figura E1, figura E2)

Porre S1-3 su ON (S1-4 su OFF, S6-2 su OFF)

3-b) Reset con pull-up a Vdd e capacità verso massa

Porre S1-3 su ON, S1-4 su ON (S6-2 su OFF)

3-c) Reset controllato dall'esterno attraverso JP7-2

Porre S6-2 su ON (S1-3 su OFF, S1-4 su OFF)

4) Clock

4-a) Clock generato mediante quarzo (vedi figura E1)

S2-5 su ON, S2-6 su ON (S2-1 su OFF, S2-2 su OFF, S2-3 su OFF, S2-4 su OFF)

4-b) Clock generato mediante rete RC (vedi figura E2)

S2-3 su ON (S2-1 su OFF, S2-2 su OFF, S2-4 su OFF, S2-5 su OFF, S2-6 su OFF)

4-c) Segnali OSC1 e OSC2 PRELEVATI da JP1

S2-1 su ON, S2-2 su ON (S2-3 su OFF, S2-4 su OFF, S2-5 su OFF, S2-6 su OFF)

4-d) Clock generato mediante quarzo e segnali su OSC1 e OSC2 PORTATI a JP1

S2-5 su ON, S2-6 su ON , S2-1 su ON, S2-2 su ON (S2-3 su OFF, S2-4 su OFF)

4-e) Clock generato mediante rete RC e segnali su OSC1 e OSC2 PORTATI a JP1

S2-1 su ON, S2-2 su ON, S2-3 su ON (S2-4 su OFF, S2-5 su OFF, S2-6 su OFF)

5) Porte RB6 e RB7

Durante il normale funzionamento vanno connesse a JP5.

Porre S3-1 su ON, S3-2 su ON, S3-4 su OFF, S3-5 su OFF

5) Porta RB3: vedi 1), selezione modalità LVP

Esempi di settaggio degli switch.

Ecco alcuni esempi pratici di settaggio degli switch. Sono evidenziati in rosso gli switch da porre su ON; gli altri devono essere tutti su OFF.

configurazione switch n. 1configurazione switch n.2
Fig. E1 - PIC con LVP disattivata, alimentazione da 7805, Reset senza capacità verso massa, quarzo come sorgente di clock. Fig. E2 - PIC con LVP ATTIVATA, alimentazione da 7805, Reset senza capacità verso massa, rete RC come sorgente di clock, alimentazione dal 7805 PORTATA anche ad un circuito esterno tramite S6-1, S6-3 e JP8.
   
   

Programmazione

Per programmare il PIC senza rimuovelo dalla Development Board, si devono collegare a JP9 gli opportuni segnali e tensioni provenienti dal programmatore. In dipendenza dal tipo di quest'ultimo, si deve adottare la giusta configurazione degli switch.

Se non altrimenti specificato, tutti gli switch devono essere posti su OFF!

In ogni caso, siate sempre consapevoli di ciò che fate! Fate molta attenzione al conflitto fra le alimentazioni, e tenete presente che anche collegare fra loro due terminali "comune" (o massa, o terra) di alimentatori diversi può provocare seri danni ai circuiti!

Ad esempio, se alimentate il PIC e il programmatore con due diversi alimentatori, collegare fra loro i terminali "comune" (indispensabile) può essere molto pericoloso per la sopravvivenza dei circuiti stessi! Stessa cosa può succedere se state programmando il PIC con un programmatore collegato al computer e lo alimentate con un alimentatore! Quando avete dei dubbi, e dovete utilizzare due alimentatori, meglio utilizzare una batteria, la quale è flottante e si adegua al riferimento imposto.

Indipendentemente da quale sia il programmatore, consiglio vivamente, soprattutto nel caso il PIC sia collegato ad un circuito esterno, di scollegare i terminali RB6, RB7 e RB3 del PIC dal connettore JP5 ponendo su OFF S3-1, S3-2 e S3-3 durante la programmazione. Può essere una buona idea isolare anche i piedini Osc1 e Osc2 ponendo su OFF tutti gli switch di S2.

I piedini RB7 e RB6 del PIC, naturalmente, devono essere collegati tramite S3-4 e S3-5 (ON) ai piedini S5-5 e S5-4 (notare l'inversione), e da questi al programmatore collegato a JP9 ponendo su ON, appunto, gli switch S5-5 e S5-4.

Nota: come detto, questa basetta supporta il Low Voltage Programming (per programmatori che pilotano anche il pin RB3). Per la programmazione vedere oltre. Se il vostro PIC ha la funzione di LVP attivata, come accade ad esempio quando il chip è nuovo, per poterlo utilizzare senza problemi in normale funzionamento dovete seguire le istruzioni descritte in tale sezione (vedi "normale funzionamento").

Siate inoltre sicuri che, nel caso sia il programmatore a fornire alimentazione al PIC, esso sia in grado di erogare una corrente sufficiente anche all'alimentazione del led D3 (circa 5 mA); se non ne siete sicuri, potete disattivare il led stesso aprendo il relativo jumper (S7).

Ecco come settare i dip-switch per la programmazione.

1) Programmatore che FORNISCE al PIC alimentazione (Vdd e Vss) e i segnali /MCLR, RB6 e RB7; nel caso di LVP, il programmatore deve pilotare anche RB3.

Si devono distinguere due casi.

1-a) funzione LVP DISATTIVATA (il programmatore può essere permanentemente connesso a JP9, essendo quest'ultimo isolato durante il normale funzionamento).
Porre nell'ordine:

S1 tutti su OFF
S6 tutti su OFF
S3-1, S3-2, S3-3 su OFF
S3-4, S3-5 su ON
se non già connesso, connettere il programmatore a JP9
da S5-1 a S5-5 compreso tutti su ON
Programmare il dispositivo. A programmazione avvenuta eseguire le seguenti operazioni:
S5 tutti su OFF
S3-4, S3-5 (e S3-6) su OFF
S3-1, S3-2, S3-3 su ON
dare alimentazione al circuito (mediante uno solo fra S1 e S6)

1-b) funzione LVP ATTIVATA (il programmatore può essere permanentemente connesso a JP9, essendo quest'ultimo isolato durante il normale funzionamento).
Porre nell'ordine:

S1 tutti su OFF
S6 tutti su OFF
S3-1,S3-2, S3-3 su OFF (S3-3 dovrebbe già essere su OFF)
S3-4,S3-5, S3-6 su ON (S3-6 dovrebbe già essere su ON per mantenere RB3 a massa durante il normale funzionamento)
se non già connesso, connettere il programmatore a JP9
S5 tutti su ON
Programmare il dispositivo. A programmazione avvenuta eseguire le seguenti operazioni:
S5 tutti su OFF
S3-4, S3-5 su OFF (lasciare S3-6 su ON per mantenere RB3 a massa durante il normale funzionamento)
S3-1, S3-2 su ON (lasciare S3-3 su OFF)
dare alimentazione al circuito (mediante uno solo fra S1 e S6)

2) Programmatore che RICEVE alimentazione (Vdd e Vss) dalla basetta (tramite JP9), e fornisce su JP9 i segnali /MCLR, RB6 e RB7; nel caso di LVP, il programmatore deve pilotare anche RB3.

In questo caso possiamo avere quattro configurazioni.

2-a1) funzione LVP DISATTIVATA, alimentazione dal 7805 (il programmatore può essere permanentemente connesso a JP9, essendo quest'ultimo isolato durante il normale funzionamento).
Porre nell'ordine:

S6 tutti su OFF
S1-1, S1-2 su ON
S1-3, S1-4 su OFF
S3-1, S3-2, S3-3 su OFF
S3-4, S3-5 su ON
se non già connesso, connettere il programmatore a JP9
da S5-1 a S5-5 compreso tutti su ON
Programmare il dispositivo. A programmazione avvenuta eseguire le seguenti operazioni:
S5 tutti su OFF
S3-4, S3-5 (e S3-6) su OFF
S3-1, S3-2, S3-3 su ON
dare alimentazione al circuito (mediante uno solo fra S1 e S6)

2-a2) funzione LVP DISATTIVATA, alimentazione da un circuito esterno mediante JP8 (il programmatore può essere permanentemente connesso a JP9, essendo quest'ultimo isolato durante il normale funzionamento).
Porre nell'ordine:

S1 tutti su OFF
S6-1, S6-3 su ON
S6-2, S6-4 su OFF
S3-1, S3-2, S3-3 su OFF
S3-4, S3-5 su ON
se non già connesso, connettere il programmatore a JP9
da S5-1 a S5-5 compreso tutti su ON
Programmare il dispositivo. A programmazione avvenuta eseguire le seguenti operazioni:
S5 tutti su OFF
S3-4, S3-5 (e S3-6) su OFF
S3-1, S3-2, S3-3 su ON
dare alimentazione al circuito (mediante uno solo fra S1 e S6)

2-b1) funzione LVP ATTIVATA, alimentazione dal 7805 (il programmatore può essere permanentemente connesso a JP9, essendo quest'ultimo isolato durante il normale funzionamento).
Porre nell'ordine:

S6 tutti su OFF
S1-1, S1-2 su ON
S1-3, S1-4 su OFF
S3-1, S3-2, S3-3 su OFF (S3-3 dovrebbe già essere su OFF)
S3-4, S3-5, S3-6 su ON (S3-6 dovrebbe già essere su ON per mantenere RB3 a massa durante il normale funzionamento)
se non già connesso, connettere il programmatore a JP9
S5 tutti su ON
Programmare il dispositivo. A programmazione avvenuta eseguire le seguenti operazioni:
S5 tutti su OFF
S3-4, S3-5 su OFF (lasciare S3-6 su ON per mantenere RB3 a massa durante il normale funzionamento)
S3-1, S3-2 su ON (lasciare S3-3 su OFF)
dare alimentazione al circuito (mediante uno solo fra S1 e S6)

2-b2) funzione LVP ATTIVATA, alimentazione da un circuito esterno mediante JP8 (il programmatore può essere permanentemente connesso a JP9, essendo quest'ultimo isolato durante il normale funzionamento).
Porre nell'ordine:

S1 tutti su OFF
S6-1, S6-3 su ON
S6-2, S6-4 su OFF
S3-1, S3-2, S3-3 su OFF (S3-3 dovrebbe già essere su OFF)
S3-4, S3-5, S3-6 su ON (S3-6 dovrebbe già essere su ON per mantenere RB3 a massa durante il normale funzionamento)
se non già connesso, connettere il programmatore a JP9
S5 tutti su ON
Programmare il dispositivo. A programmazione avvenuta eseguire le seguenti operazioni:
S5 tutti su OFF
S3-4, S3-5 su OFF (lasciare S3-6 su ON per mantenere RB3 a massa durante il normale funzionamento)
S3-1, S3-2 su ON (lasciare S3-3 su OFF)
dare alimentazione al circuito (mediante uno solo fra S1 e S6)


Elenco dei componenti

Nota: tutti i resistori sono da 1/4 W, 5% di tolleranza.
Per JPE15 si può utilizzare un connettore a 2 poli, con passo di 5.08 mm.
Tutti gli altri connettori hanno il passo di 2.54 mm.
I jumpers hanno distanza fra i piedini di 7.62 mm.
Le reti resistive SIL sono a 9 pin, 8 resistori con un terminale a comune; con riferimento allo schema con le piste e la disposizione dei componenti (vedi RE2, RE3 in
figura 4), i due terminali a comune vanno entrambi e massa, e sono connessi per RE3 al pin 19 di UE1 e per RE2 al pin 1 di UE1.
Personalmente non ho problemi di oscillazione, pertanto non utilizzo la RE6. Se essa dovesse rendersi necessaria la pista va tagliata in modo da utilizzare i fori necessari (RE6 può essere un resistore, un trimmer, ecc.).

R1 - 10 KOhm
R2, R3, R5 - 680 Ohm
R4 - 100 Ohm
R6, R7 - 10 KOhm
RE1 - Trimmer 10 KOhm
RE2 - Rete resistiva SIL 100 KOhm
RE3 - Rete resistiva SIL 1 KOhm
RE4 - 10 KOhm circa
RE5 - Potenziometro miniatura fra 100KOhm e 2.2 MOhm
RE6 - Eventuale resistore per risolvere problemi di oscillazione - Vedi datasheet PIC 16F877
C1, C2 - 100 nF
C3 - 100 uF 25 V
C4 - 47 uF 16 V
C5 - 10 uF 16 V
C6, C7 - 15 pF (può dipendere da Y1; vedi eventualmente datasheet PIC 16F877; testati: 15pF e 4-20 MHz)
CE1 - 33 pF o più
Y1 - Quarzo fra 4 MHz e 20 MHz (il valore massimo dipende dalla versione del PIC)
D2, D3, D4 - Diodo LED 2.5 / 3 mm
D1 - 1N4007 o equivalente
DE1-DE8 - Led rettangolari 5 mm x 2 mm; passo 2.54 mm
S1, S6 - Dip switch a 4 poli
S2, S3, S5 - Dip switch a 6 poli
S7 - Jumper
SE1 - Jumper
S4 - Pulsante instabile normalmente aperto da circuito stampato
J1 - presa per connettore jack per Vdd e Vss (controllare la polarità del jack utilizzato; se si utilizza anche JPE15, controllare che i terminali in contatto di J1 e di JPE15 abbiano la stessa polarità)
JPE15 - Connettore 2 poli passo 5.08 mm per Vdd e Vss.
JP1, JP7, JP8 - Connettore 2 poli
JP2 - Connettore SIL 4 poli
JP6, JP9 - Connettore SIL 6 poli
JP3, JP4, JP5 - Connettore SIL 8 poli
JPE1, JPE7, JPE8, JPE9, JPE10 - Connettore 2 poli
JPE11, JPE12 - Connettore SIL 3 poli
JPE2 - Connettore SIL 4 poli
JPE6 - Connettore SIL 6 poli
JPE3, JPE4, JPE5, JPE13, JPE14 - Connettore SIL 8 poli
U2 - 7805 o equivalente - controllare la massima corrente erogabile, la massima tensione in ingresso, la massima potenza dissipabile, e scegliere un fusibile appropriato
F1 fusibile 5x20 mm, max 800 mA; il valore deve essere inferiore se la potenza che con tale valore il 7805 dovrebbe dissipare fosse eccessiva (es: 15V in ingresso al 7805, 5V in uscita, I=700 mA => Pd=7 W; il valore è troppo alto per un 7805, quindi il fusibile dovrà essere scelto di valore inferiore a 700 mA, oppure si dovrà usare una tensione di ingresso inferiore - vedere il datasheet del vostro 7805). Se sapete come fare, potete anche calcolare le caratteristiche di un possibile dissipatore da montare. NON inserite un dissipatore qualsiasi!
U1 - PIC 16F877
UE1 - 74HC541N

Dove trovare i componenti?

I componenti sono abbastanza standard, dovreste essere in grado di trovarli in qualunque negozio di articoli elettronici. Per quanto riguarda il PIC, potete ordinarlo (magari anche insieme alla basetta e a gran parte dei componenti) presso uno dei numerosi rivenditori on-line di materiale elettronico.


Realizzazione del circuito

Sono riportate, nelle seguenti immagini, le figure relative al layout del circuito e alla disposizione dei componenti.

Se non le avete ancora salvate attraverso i link all'inizio di questo articolo, potete farlo anche da qui. Le immagini visibili qua sotto sono a 100 dpi. Per avere le stesse immagini, ma a 300 dpi, in una nuova finestra, da dove potrete stamparle o salvarle, potete fare click direttamente su quelle visibili qui sotto o sui link sottostanti, oppure, se utilizzate un sistema Windows (TM) 95/98, utilizzare il tasto destro del mouse e scegliere "Apri collegamento in un'altra finestra". Da questa stessa pagina, potete salvare le immagini a 300 dpi, non le sottostanti, sul vostro hard disk o altra memoria di massa con l'opzione contestuale "Salva OGGETTO con nome" e stamparle in un secondo tempo con il browser o altri programmi. Con il browser si potrebbero avere problemi di dimensioni, mentre ad esempio Imaging (TM) di Windows (TM) dovrebbe stampare automaticamente con le dimensioni reali. Se avete dei dubbi sulle dimensioni della stampa ottenuta, e temete che non sia a grandezza reale, provate a misurare le distanze fra i fori per i componenti DIL, che deve risultare di 2.54 mm fra piedini contigui e di 2.54 mm * 6 = 15.24 mm fra le due file nel caso di U1. Ovviamente, per non incorrere in grossolani errori di misura, nel caso della distanza fra pin contigui utilizzate ad esempio quella fra il primo e il nono piedino di una fila, assicurandovi che sia di 2.54 mm * (9-1) = 20.32 mm. Non riuscirete naturalmente ad apprezzare i centesimi di millimetro, e forse neppure i decimi (non avrebbe neppure molto senso viste le dimensioni finite delle piazzole e dei loro fori), ma se la vostra misura è appena superiore ai 20 mm dovreste essere a posto. Per verificare la correttezza della scala orizzontale, potete ad esempio misurare la distanza fra due reofori di una resistenza, che deve essere di 2.54 mm * 4 = 10.16 mm. Se una delle due distanze non fosse quella attesa , detta x la relativa misura, dovreste applicare un fattore di zoom orizzontale pari a 10.16/x e un fattore di zoom verticale pari a 20.32/x.

Nella figura n. 4 si nota la disposizione dei componenti con la basetta vista dall'alto e in trasparenza. Da essa si può notare come il layout del lato componenti vada riprodotto sul circuito come se fosse con il lato stampato opposto al rame; per quanto riguarda il layout della parte inferiore (saldature) il lato di stampa è invece quello che andrebbe appoggiato al rame.

Gli schemi sottostanti sono in bassa risoluzione, per ovvi problemi di tempo di caricamento delle pagina, ma, come detto, i relativi link rimandano a schemi a risoluzione migliore.

layout bottom 100 dpi layout top 100 dpi
Fig. 1 - Layout lato rame a 100 dpi


Qui il layout stampabile a 300 dpi

Fig. 2 - Layout lato componenti a 100 dpi


Qui il layout stampabile a 300 dpi

   

 

silkscreen top 100 dpi componenti 100 dpi
Fig. 3 - Disposizione dei componenti sulla basetta


Qui il disegno stampabile a 300 dpi

Fig. 4 - Disposizione dei componenti e disegno delle piste inferiori (lato rame, rosso) e superiori (lato componenti, blu)

Qui il disegno stampabile a 300 dpi

   

 

schema elettrico
Fig. 5 - Schema elettrico del circuito a 100 dpi

Qui lo schema a 300 dpi ingrandito

 
 
 
 
 

Se volete, fatemi conoscere la vostra opinione (anche in forma anonima).

   
Il vostro Paese

Trovo questo circuito

Utile

Poco utile

Inutile

Sarebbe comodo trovare il PCB già pronto

No

Eventuali commenti

Se desiderate una risposta, inserite qui il vostro indirizzo

   
 
 
 
 
 
Sperando di esservi stato utile non mi resta che augurarvi buon lavoro!
 
 
 

Se volete contattarmi potete farlo al seguente indirizzo:

f_iacopetti@libero.it

 
Ultimo aggiornamento: 3 Giu 2003 12.50 HyperCounterHyperCounter