Lo YAPP è un programmatore
in-circuit seriale per PIC16x84 persato come tool di supporto per il
corso Pic By Example ma adatto in generale allo sviluppo di prototipi. Come visibile nella figura seguente:

lo YAPP si connette al PC tramite la porta seriale RS232. A
differenza di molti altri programmatori dello stesso livello, lo YAPP non utilizza i
criteri della porta seriale (DTS e RTS) per generare i segnali di programmazione per il
PIC ma solamente le linee RXD e TXD per comunicare ad alto livello con il PC.
Questa caratteristica consente di utilizzare lo YAPP con
diversi sistemi operativi e linguaggi di programmazione. In queste pagine viene fornita la
documentazione completa del protocollo di comunicazione tra YAPP e PC per favorire chi
volesse sviluppare il proprio programma di gestione su PC.
Due programmi d'esempio vengono inoltre forniti per MS/DOS
(funzionante anche nelle sessioni DOS di Windows 3.1 e Windows 95) e Java completi di
source commentati.
NOTE SULLA PROGRAMMAZIONE ICSP
La programmazione ICSP (In-Circuit Serial Programming)
implementata dalla Microchip per la programmazione dei PIC della serie 12C5XX, 16CXXX
cosente di programmare il chip direttamente sulla scheda destinazione abbreviando i tempi
di sviluppo/produzione di schede basate sui PIC.
Tutta la documentazione necessaria per implementare
apparecchiature di programmazione ICSP è disponibile gratuitamente sul sito Microchip o sul CD distribuito sempre da Microchip.
Tale programmazione viene effettuata tramite tre soli
collegamenti + massa tra il programmatore ed il PIC da programmare ovvero:
MCLR |
Piedino di master clear (pin
4 su PIC16x84) utilizzato per applicare la tensione di programmazione VPP al chip. |
RB6 |
Linea 6 della porta B (pin 12
su PIC16x84) utilizzata come linea CLOCK. |
RB7 |
Linea 7 della porta B (pin 13
su PIC16x84) utilizzata come linea DATA. |
La modalità di comunicazione con il PIC è di tipo
seriale sincrono in cui i bit trasmessi sulla linea DATA (pin RB7) vengono scanditi dal
segnale generato sulla linea di CLOCK (pin RB6). Questultimo viene generato dal
programmatore mentre il DATA è bidirezionale a seconda delloperazione in corso. In figura
2 viene riportato un esempio di trasmissione di un comando dal programmatore al PIC.

Tutte le operazioni sul PIC da programmare devono
essere precedute dallinvio di un comando da parte del programmatore per comunicare
al PIC loperazione che si intende eseguire. La lunghezza dei comandi è sempre di 6
bit a volte seguiti da una trasmissione di 14 bit contenenti il valore da programmare.
Nella seguente tabella viene riportato lelenco dei comandi riconosciuti dal PIC:
Comando
dal programmatore |
Codice comando |
Descrizione |
Load Configuration |
000000 |
Invia al PIC il prossimo
dato da scrivere in memoria programma. Al codice comando segue immediatamente il dato da
memorizzare. |
Load Data for
Program Memory |
000010 |
Invia al PIC il prossimo
dato da scrivere in memoria dati. Al codice comando segue immediatamente il dato da
memorizzare. |
Read Data from
Program Memory |
000100 |
Legge dal PIC la locazione
corrente dallarea programma. Appena riceve questo comando il PIC trasmette al
programmatore il valore letto. |
Increment Address |
000110 |
Incrementa il puntatore
alla locazione corrente nella memoria dati/configurazione/programma. |
Begin Programming |
001000 |
Programma la locazione
corrente. |
Load Data for Data
Memory |
000011 |
Invia al PIC il prossimo
valore da scrivere in memoria dati. Al codice comando segue immediatamente il dato da
memorizzare. |
Read Data from Data
Memory |
000101 |
Legge dal PIC la locazione
corrente dalla memoria dati. Appena riceve questo comando il PIC trasmette al
programmatore il valore letto. |
Bulk Erase Program
Memory |
001001 |
Cancella lintera
memoria programma |
Bulk Erase Data
Memory |
001011 |
Cancella lintera
memoria dati |
Il PIC dispone internamente di tre aree di memoria
distinte programmabili dallesterno: larea programma pari ad 1 kbyte nel
PIC16x84, larea dati pari a 64 byte e larea configurazione pari a 8 byte.
Tutte le aree di memoria sono implementate su FLASH. Le sole aree di programma e dati
possono essere lette dallesterno.
Per poter scrivere in una qualsiasi locazione il programmatore deve
inviare al PIC uno dei comandi LOAD seguito da 14 bit contenenti il dato da memorizzare.
Volendo ad esempio scrivere nella locazione 0 della memoria programma basterà inviare al
PIC la sequenza:
Load Data for Program Memory + valore a 14
bit
Begin Programming
Il comando Load Data trasferisce
semplicemente il dato a 14 bit in un buffer provvisorio allinterno del PIC, il
comando Begin Programming effettua la scrittura vera e propria del dato
nella memoria programma. Lindirizzo della locazione di memoria che viene scritta è
contenuto in un puntatore di scrittura azzerato automaticamente non appena il PIC viene
messo in programmazione (MCLR=12 volt) ed incrementato tramite il comando:
Increment Address
A questo punto per programmare la locazione
successiva basterà trasmettere nuovamente i seguenti comandi:
Load Data for Program Memory + valore
locazione 1
Begin Programming
Increment Address
e così via fino alla scrittura completa del
programma. Per poter scrivere in una locazione di memoria non è necessario effettuare
operazioni di cancellazione.
Larea dati e larea configurazione si programmano con le
stesse modalità utilizzando il comando LOAD relativo. Larea dati è unarea
FLASH visibile anche dal programma in esecuzione sul PIC, la sua programmazione può
essere utile per assegnare dei valori iniziali alle variabili utilizzate dal nostro
programma. Larea configurazione contiene dati invisibili al programma su PIC ma
utili per determinare la modalità di funzionamento di alcuni dispositivi interni al PIC
quali loscillatore di clock, il watchdog timer, ecc. che vedremo successivamente
durante il nostro corso.
COME FUNZIONA LO YAPP
Lo YAPP si occupa di generare tutti i segnali necessari per
programmare il PIC a partire dai comandi inviato dal PC sulla porta RS232. In pratica lo
YAPP si occupa di tradurre i comandi dal formato seriale asincrono a 9600 baud 8,1,N nel
formato Microchip e viceversa. Tutte le temporizzazioni interne necessarie alla corretta
programmazione vengono gestite dal micro (anch'esso un PIC) presente sullo YAPP liberando
il programma di gestione su PC dalle problematiche di gestione delle temporizzazione.
Questa caratteristica ci consente di scrivere il programma di gestione con linguaggi ad
alto livello tramite i quali risulta ifficile gestire temporizzazioni precise.
Il collegamento tra lo YAPP e la scheda da programmare avviene
tramite un connettore a sei contatti sul quale sono presenti i seguenti segnali:
Pin |
Funzione |
1 |
MCLR - Da collegare
al pin MCLR del PIC da programmare. |
2 |
DATA - Da collegare
al pin RB7 del PIC da programmare. |
3 |
CLOCK - Da collegare
al pin RB6 del PIC da programmare. |
4 |
GND Massa. |
5 |
N.C. - Questo pin
non viene collegato e serve come chiave per evitare inserzioni errate. |
6 |
+12 Volt
Tensione di alimentazione proveniente dalla scheda prototipo per alimentare lo YAPP. |
SCHEMA ELETTRICO
Come possiamo vedere dallo schema
elettrico, il funzionamento dello YAPP è basato a sua volta su un PIC, in
particolare un 16C54 (U1) di cui viene fornito il sorgente in
assembler in alternativa è possibile utilizzare anche un 16x84. Esso si occupa di
interpretare i comandi ricevuti dal PC tramite la porta RS232 e di inviare i segnali di
programmazione corretti al PIC da programmare.
Il circuito integrato U2, un MAX232, si occupa di convertire i
segnali RS232 la cui tensione varia da 12 volt a + 12 volt nei rispettivi segnali
TTL da 0 a 5 gestibili dal PIC16C54 (U1). In particolare sul pin 12 (RB6) del PIC viene
inviato il TxD proveniente dal PC e dal pin 11 (RB5) viene generato il segnale da inviare
allRxD del PC.
Lo YAPP si comporta come un dispositivo DCE (Data
Comunication Equipment) e per collegarlo al PC occorre utilizzare un cavo dritto, ovvero
un cavo in cui i connettori alle estremità siano collegati pin a pin. Un cavo modem può
andare benissimo mentre è assolutamente da evitare luso di un cavo null-modem nel
quale vengono scambiati i collegamenti tra i pin dei connettori. Chi volesse realizzare in
proprio il cavo di collegamento può seguire lo schema riportato nella seguente figura:

Il diodo led verde D1 ed il diodo led rosso D2 servono
rispettivamente ad indicare quando lo YAPP è pronto a ricevere comandi dal PC (stato di
READY) o quando lo YAPP è entrato in PROGRAMMAZIONE.
Quando il led verde è acceso, la linea MCLR viene messa a +5 volt
consentendo al PIC appena programmato di iniziare lesecuzione del codice.
Lalimentazione dello YAPP viene ricavata direttamente dalla
scheda prototipo tramite il pin 6 del connettore e quindi ridotta a +5 volt
dallintegrato U3 per alimentare gli integrati U1 e U2. La +12 volt viene utilizzata
anche per generare la tensione di programmazione Vpp inviata al PIC tramite il pin MCLR.
LINKS
Manuale utente YAPP.EXE
Protocollo di comunicazione YAPP/PC
DOWNLOAD
Schema elettrico YAPP.PDF (13Kb)
Source assembler YAPP21.ZIP versione 2.1 (7 Kb)
Source C (Turbo C++ 1.0) + eseguibile MS/DOS YAPPDOS.ZIP versione 1.3 (29 Kb)
In caso
di problemi scrivere a tanzilli@picpoint.com
FEEDBACK
Per eventuali commenti e/o chiarimenti
scrivete a :
Sergio
Tanzilli (tanzilli@picpoint.com)
Viale Giulio Agricola, 61 - 00174 Rome - Italy
Tel. +39-06-71510914 - Portatile: +39-0335-6152295
|