PIC 16F877 / 16F874 Development Board v. 1.1

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

 

Attenzione: su questo stesso sito potete trovare
la nuova versione (v. 1.2) del circuito qui descritto (versione 1.1). Se siete interessati non avete che da fare click su questo link

Introduzione - A cosa serve la Development Board v. 1.1?

Dopo aver realizzato la Evaluation Board per PIC 16F84 / 16C84 da me ideata e costruita secondo le mie esigenze, passando ad un microcontrollore superiore ho deciso di continuare con la stessa filosofia, ideando così un circuito che potesse essere una comoda e versatile base di sperimentazione e nello stesso tempo contenendo le dimensioni dello stampato. Questa basetta, soprattutto, permette di interfacciare il PIC con un qualsiasi circuito esterno in modo molto versatile e allo stesso tempo affidabile, permettendo di attribuire eventuali malfunzionamenti elettrici al solo circuito esterno, e, naturalmente, concentrandosi sul software; chi solitamente utilizza le basette per prototipi sa bene cosa voglia dire, quando qualcosa non funziona, andare a testare gran parte dei terminali del circuito; figuriamoci se si dovesse anche verificare che nessun piedino del PIC sia vittima di un falso contatto ...
Veniamo dunque alle caratteristiche principali di questo circuito:

  • 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 o dissaldarli, ma semplicemente inserendoli in un connettore) in modalità XT e HS
  • Buffer ottale CMOS che pilota otto piccoli led: agli ingressi del buffer si possono connettere, mediante comodissimi ma stabili fili volanti (i fili rossi nell'ultima foto), sia piedini di I/O del PIC che qualunque altro terminale di un eventuale circuito esterno (naturalmente collegato allo stesso riferimento di massa), 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, sia per spine fisse che 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, senza quindi la necessità di rimuovere il PIC dal suo zoccolo
  • Selezione delle varie modalità di funzionamento mediante 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)
  • Pulsante di reset; selezione di reset con semplice pull-up a Vdd o circuito di Power On; piedino di RESET pilotabile sia da programmatore che da circuiti esterni
  • Diverse modalità di alimentazione del PIC: 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 (disinseribili) per indicare presenza di alimentazione in punti diversi

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 controllore dalla Development Board (programmazione in-system).
Al momento non è supportato l'interfacciamento anche con programmatori LVP; in ogni caso è tranquillamente possibile sia il funzionamento dei chip con il bit di LVP attivato (è sufficiente settare qualche switch), sia la loro programmazione a mezzo di programmatori tradizionali (12V su /MCLR), la maggior parte, direi.
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.

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.1, terminata nel Giugno 2002; essa è l'evoluzione della 1.0, del mese precedente, alla quale aggiunge alcune funzionalità importanti.

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, ad esempio quelli per la selezione del clock). Appena il chip è programmato, basta eseguire l'operazione inversa per avere nuovamente il PIC pronto all'uso e connesso al mondo esterno. Alla sezione "Programmazione" le operazioni da svolgere, in dipendenza del tipo di programmatore, della sua alimentazione e del 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 FREE limitata a 200 pin, realizzato dalla MERCO Electronics, la quale mi ha 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.1 è stata progettata per essere alimentata con batterie 9-12V e interfacciata solamente con circuiti alimentati anch'essi a batterie a bassa tensione.

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.


Caratteristiche e descrizione del circuito

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 (vedi figura 4 - Disposizione dei componenti e disegno delle piste) avverrà mediante la grafia Sx-n, ove n e x sono due numeri interi; medesima grafia per i connettori JPx. Il suffisso "E" indica semplicemente "extra". Ad esempio, osservando il disegno di fig. 4, il riferimento allo switch Sx-1 indica il primo interruttore dello switch Sx a partire dall'alto; analogo significato nel riferimento ai connettori. Ad esempio, S6-4 non è connesso ad alcuna pista; quando aperto, S5-6 è connesso solo a S5-3 e a JP9-3; quando S5-6 e S3-6 sono chiusi, c'è connessione fra JP-3 il piedino 36 del PIC.
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 (e JPE9) rispettivamente, essendo gli elementi omologhi dei due insiemi collegati fra loro pin a pin.

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).

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 mediante 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 (solo 5 utilizzati), con possibilità di fornire alimentazione al programmatore o di riceverla da esso. Nota: questa basetta NON supporta il Low Voltage Programming, ma permette tranquillamente sia il funzionamento dei microcontrollori che hanno tale funzione attivata (è sufficiente chiudere tre switch per mantenere a massa RB3), sia la programmazione degli stessi PIC con LVP a "1" per mezzo di programmatori tradizionali. 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 un circuito esterno, sia mediante prese per connettori stabili che mediante connettori SIL per fili volanti (vedi fotografie).

Spie alimentazione: tre led inseribili singolarmente mediante jumpers 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); 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 delle funzioni dei diversi interruttori.

S1
Controlla l'alimentazione e il 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). 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 alla 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 dello switch S1-3 connesso a /MCLR.
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, suggerisco di porre su OFF tutti gli interruttori di S1, attivare l'alimentazione (sia essa quella inviata al 7805 o quella proveniente da un circuito esterno), 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.

S5
Si tratta di un dip-switch a 6 vie che controlla la programmazione del PIC.
Fare molta attenzione, eventualmente, nel connettere la Vdd anche al programmatore se già inviata al PIC dal 7805 tramite tramite S1-1 e S1-2, oppure da un circuito esterno tramite JP8 ed S6. Alcuni programmatori hanno infatti bisogno di alimentazione, che può dunque essere quella presente sui piedini del PIC fornita attraverso S1, ma altri forniscono essi stessi l'alimentazione al PIC.
S5-1 connette la Vdd presente sul piedino del PIC a quella del programmatore.
S5-3 connette invece la Vss del PIC al programmatore.
S5-2 connette al programmatore il piedino /MCLR.
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 alla massa 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 di LVP (Low Voltage Programming), tra l'altro di default sui PIC usciti dalla fabbrica, RB3 DEVE ESSERE POSTO A MASSA; lasciandolo invece 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
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 sinusoidale.
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.
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, altrimenti le conseguenze sono imprevedibili.

S3
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 staccare ogni eventuale programmatore autoalimentato da JP9, dopodiché porre lo switch S3-3 su OFF, S3-6 su ON, S5-6 su ON e S5-3 su ON; in tal modo, RB3 risulta connesso a massa. Nota: Se il LVP è attivato, durante il normale funzionamento del PIC è necessario staccare il programmatore da JP9 per non avere un collegamento diretto fra la massa della D.B. (alla quale è portato RB3) e quella del programmatore. Tale collegamento deve invece essere stabilito durante la programmazione (non LVP) del PIC, ma, in tale fase, poiché necessariamente alimentazione del PIC e quella del programmatore devono essere le stesse, non vi è conflitto elettrico. 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, durante il normale funzionamento, isolare il PIC da alcuni o tutti i terminali del programmatore: se il LVP è disattivato, aprire tutti gli switch di S5 e anche S3-4, S3-5, S3-6; se invece il LVP è attivato, si deve staccare il programmatore da JP9, dopodiché aprire S5-1, S5-2, S5-4, S5-5, S3-4,S3-4, lasciando dunque su ON S5-3,S5-6,S3-3, S3-6.

S6
Con questo dip-switch si connettono i piedini Vdd,Vss del PIC ai connettori JP8 e JPE8 e JPE9, mentre /MCLR viene portato su JP7-2 e JPE7-2. In particolare, S6-1 connette 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.
Al solito, si faccia attenzione a non creare conflitto fra le alimentazioni.


Jumpers

Quando chiuso, S7 permette al led D1 di indicare la presenza di tensione in uscita al 7805.
S8 connette il led D2, 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.
S9 connette invece il led D4, il quale 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)
S5-6 e S5-3 su OFF (in tal modo RB3 viene scollegato dalla massa del PIC)
S3-3 su ON (il piedino RB3 del PIC risulta così collegato a JP5)

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, sulla stessa può avvenire un cortocircuito. Per evitare tale rischio, dovrebbe essere sufficiente interrompere la pista fra S5-3 ed S5-6 (lato sinistro del connettore), inserendo fra le due tracce così separate una resistenza da qualche decina o qualche centinaia di KOhm. Il funzionamento in modalità LVP non dovrebbe risentirne. NOTA BENE: non ho testato questa soluzione.

1-b) funzione LVP ATTIVATA (in tal caso NESSUN programmatore deve essere connesso a JP9 durante il normale funzionamento del PIC, essendo il pin JP9-3 connesso alla massa del PIC che potrebbe essere diversa da quella del programmatore).
Porre nell'ordine (vedi anche figura E2):

S3-3 su OFF (S3-3 isola il piedino RB3 del PIC da JP5)
S3-6 su ON (in tal modo il piedino RB3 del PIC viene collegato a S5-6)
S5-6 e S5-3 su ON (in tal modo RB3 viene collegato alla massa del PIC)

In tal modo durante il normale funzionamento RB3 risulta vincolata a massa 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 come indicato ai punti 1-a) o 1-b).

2) Alimentazione

2-a) dal 7805 (vedi figure E1, 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 figure E1, 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-3 su ON, S2-1 su ON, S2-2 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.

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 Evaluation Board, si devono innanzitutto collegare a JP9 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, meglio utilizzare una batteria, la quale è flottante e si adegua al riferimento eventualmente imposto da un punto di connessione al circuito.

Indipendentemente da quale sia il programmatore, consiglio vivamente, soprattutto nel caso il PIC sia collegato ad un circuito esterno mediante JP8, 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. Consiglio inoltre di isolare 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: questa basetta NON supporta il Low Voltage Programming. 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 D2 (circa 5 mA).

Ecco come settare i dip-switch per la programmazione.

1) Programmatore che fornisce al PIC alimentazione (Vdd e Vss), /MCLR, RB6 e RB7.

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
se si vuole isolare anche il clock, porre anche S2 tutti su OFF
S3-1, S3-2, S3-3 su OFF
S3-4, S3-5, S3-6 su ON
S5 tutti su ON
Programmare il dispositivo. A programmazione avvenuta eseguire le seguenti operazioni:
S5 tutti su OFF
S3-4, S3-5, S3-6 su OFF
S3-1, S3-2, S3-3 su ON
eventualmente rimettere a posto S2 (clock)
dare alimentazione al circuito (mediante S1 o S6)

1-b) funzione LVP ATTIVATA (il programmatore NON DEVE essere connesso a JP9 durante il normale funzionamento del PIC, essendo il pin JP9-3 connesso alla massa del PIC che potrebbe essere diversa da quella del programmatore).
Porre nell'ordine:

S1 tutti su OFF
S6 tutti su OFF
se si vuole isolare anche il clock, porre anche S2 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)
S5 tutti su OFF
connettere il programmatore a JP9
S5 tutti su ON
Programmare il dispositivo. A programmazione avvenuta eseguire le seguenti operazioni:
S5 tutti su OFF
staccare il programmatore da JP9
S5-3 e S5-6 su ON
S3-4, S3-5 su OFF (lasciare S3-6 su ON)
S3-1, S3-2 su ON (lasciare S3-3 su OFF)
eventualmente rimettere a posto S2 (clock)
dare alimentazione al circuito (mediante S1 o S6)

2) Programmatore che riceve alimentazione (Vdd e Vss) dalla basetta.

In questo caso possiamo avere quattro configurazioni.

2-a) 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
se si vuole isolare anche il clock, porre anche S2 tutti su OFF
S3-1, S3-2, S3-3 su OFF
S3-4, S3-5, S3-6 su ON
S5 tutti su ON
Programmare il dispositivo. A programmazione avvenuta eseguire le seguenti operazioni:
S5 tutti su OFF
S3-4, S3-5, S3-6 su OFF
S3-1, S3-2, S3-3 su ON
eventualmente rimettere a posto S2 (clock)
dare alimentazione al circuito (mediante uno solo fra S1 e S6)

2-b) 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
se si vuole isolare anche il clock, porre anche S2 tutti su OFF
S3-1, S3-2, S3-3 su OFF
S3-4, S3-5, S3-6 su ON
S5 tutti su ON
Programmare il dispositivo. A programmazione avvenuta eseguire le seguenti operazioni:
S5 tutti su OFF
S3-4, S3-5, S3-6 su OFF
S3-1, S3-2, S3-3 su ON
eventualmente rimettere a posto S2 (clock)
dare alimentazione al circuito (mediante uno solo fra S1 e S6)

2-c) funzione LVP ATTIVATA, alimentazione dal 7805 (probabilmente è meglio che il programmatore non sia connesso a JP9 durante il normale funzionamento del PIC, essendo il pin JP9-3 connesso alla massa del PIC).
Porre nell'ordine:

S6 tutti su OFF
S1-1, S1-2 su ON
S1-3, S1-4 su OFF
se si vuole isolare anche il clock, porre anche S2 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)
S5 tutti su OFF
connettere il programmatore a JP9
S5 tutti su ON
Programmare il dispositivo. A programmazione avvenuta eseguire le seguenti operazioni:
S5 tutti su OFF
staccare il programmatore da JP9
S5-3 e S5-6 su ON
S3-4, S3-5 su OFF (lasciare S3-6 su ON)
S3-1, S3-2 su ON (lasciare S3-3 su OFF)
eventualmente rimettere a posto S2 (clock)
dare alimentazione al circuito (mediante uno solo fra S1 e S6)

2-d) funzione LVP ATTIVATA, alimentazione da un circuito esterno mediante JP8 (probabilmente è meglio che il programmatore non sia connesso a JP9 durante il normale funzionamento del PIC, essendo il pin JP9-3 connesso alla massa del PIC).
Porre nell'ordine:

S1 tutti su OFF
S6-1, S6-3 su ON
S6-2, S6-4 su OFF
se si vuole isolare anche il clock, porre anche S2 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)
S5 tutti su OFF
connettere il programmatore a JP9
S5 tutti su ON
Programmare il dispositivo. A programmazione avvenuta eseguire le seguenti operazioni:
S5 tutti su OFF
staccare il programmatore da JP9
S5-3 e S5-6 su ON
S3-4, S3-5 su OFF (lasciare S3-6 su ON)
S3-1, S3-2 su ON (lasciare S3-3 su OFF)
eventualmente rimettere a posto S2 (clock)
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 JPE14 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, 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 per utilizzare i fori necessari (resistore, trimmer, ecc.).

R1 - 10 KOhm
R2, R3, R5 - 680 Ohm
R4 - 100 Ohm
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
CE1 - 33 pF o più
Y1 - Quarzo fra 4 MHz e 20 MHz (dipende dalla versione del PIC)
D1, D2, D4 - Diodo LED 2.5 / 3 mm
D3 - 1N4001 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, S8, S9 - Jumper
SE1 - Jumper
S4 - Pulsante instabile normalmente aperto
J1 - connettore jack per Vdd e Vss
JPE14 - 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 6 poli
JP3, JP4, JP5 - Connettore SIL 8 poli
JPE1, JPE7, JPE8, JPE9 - Connettore 2 poli
JPE10, JPE11 - Connettore 3 poli
JPE2 - Connettore SIL 4 poli
JPE6 - Connettore 6 poli
JPE3, JPE4, JPE5, JPE12, JPE13 - Connettore SIL 8 poli
U2 - 7805 o equivalenti
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.

Si tratta di immagini a 100 dpi. Per avere le stesse immagini in una nuova finestra, ma a 300 dpi, da dove potrete stamparle, 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". In alternativa potete salvare le immagini (a 300 dpi) sul vostro hard disk o altra memoria di massa con l'opzione contestuale "Salva immagine 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 * 3 = 7.62 mm fra le due file (di UE1). Ovviamente, per non incorrere in grossolani errori di misura, nel caso della distanza fra pin contigui utilizzate 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 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. La distanza fra le file dovrebbe invece essere approssimativamente appena superiore ai 7.5 mm. Se una delle due distanze non fosse quella attesa , detta x la relativa misura, dovreste applicare un fattore di zoom orizzontale pari a 7.62/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.

Lo schema elettrico non è, al momento, stampabile in maniera dettagliata.

 
 
 
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

   
 
 
 
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

   
 
 
 
Fig. 5 - Schema elettrico del circuito

Qui lo schema a 100 dpi ingrandito

 
 
 
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: 18 Nov 2002 22.30 HyperCounter HyperCounter