Bootloader e Programmazione On-Board
Per
programmare il PIC senza toglierlo dal circuito in cui viene utilizzato
(programmazione on-board) , è necessario permettere la
comunicazione seriale tra il PIC ed il PC ed utilizzare un
apposito programma, detto bootloader.
La
comunicazione seriale avviene tramite gli appositi pin RX e TX
dell'USART del PIC ( normalmente RC7 e RC6 ) , dopo aver provveduto
alla conversione di livello dei segnali provenienti dalla porta RS232
del PC tramite un integrato MAX232.
Il
circuito utilizzato è il seguente :
Il
bootloader è un software composto da due parti : una parte
risiede
sul PIC ed è normalmente chiamata bootloader, l'altra sul PC ed
è
normalmente chiamata programma di caricamento.
La parte che risiede sul PIC si
attiva allo start-up del PIC o al suo
reset. Per un breve periodo di tempo verifica la presenza di
attività
sulla porta seriale generata dal programma di caricamento e, in caso
positivo, avvia il trasferimento del file di programma .hex dal PC e lo
scrive nella memoria flash del PIC.
Nel caso non trovasse
attività sulla porta seriale, dopo un periodo di
tempo predefinito (qualche centinaio di millisecondi ), il bootloader
va in time out e viene eseguito il programma residente nella memoria
del PIC.
Il bootloader va caricato sul PIC
utilizzando IC-Prog, così come spiegato nella sezione relativa
al programmatore.
Il bootloader dipende dal tipo di
PIC utilizzato, dalla frequenza del quarzo e dalla velocità di
comunicazione con il PC ( Baud rate ).
Vari bootloader, il programma di
caricamento ed ulteriori informazioni si possono ricavare dal sito di
Shane Tolmie : http://www.microchipc.com/PIC16bootload/
Utilizzando un PIC 16F877A, un
quarzo da 10Mhz ed una velocità di comunicazione di 19200 bps il
file da utilizzare è :
bootldr-16F877A-20MHz-38400bps.HEX
Lo stesso file può essere
utilizzato per un quarzo di 20Mhz e 38400bps.
Il caricamento del bootloader sul
PIC va fatto una sola volta.
Per trasferire sul PIC un
eseguibile utilizzando il bootloader, si utilizza un programma di
caricamento.
Sul sito di Shane Tolmie è
disponibile il programma PIC_downloader.exe che una volta lanciato si
presenta in questo modo :
File
è il nome del .hex da caricare sul PIC
La porta di comunicazione PORT va
settata alla stessa velocità impostata nel bootloader caricato
sul PIC.
Premendo WRITE il programma
aspetta il reset del PIC.
Appena si resetta il PIC premendo
il tasto collegato al pin MCLR, parte il trasferimento, di cui è
possibile seguire l'avanzamento nella finestrella INFO.
Alla fine del trasferimento un
messaggio di OK conferma il completamento dell'operazione.
Il programma è
stato trasferito sul PIC senza che questo venga rimosso dal circuito
(on-board programming)
Questo è il prototipo del
circuito di verifica del bootloader per il PIC 16F877A montato su
basetta millefori. Il quarzo ha una frequenza di 10Mhz.
Si
è preferito cablare su un
ritaglio di basetta la parte relativa al MAX232 per riutilizzare
l'interfaccia seriale in altri progetti.
Al
pin 20 del PIC è collegato il puntale di un oscilloscopio per
verificare il corretto funzionamento di un semplice programma di prova che "accende" in sequenza dei LED
collegati agli 8 pin della PORTA D.
Per verificare il corretto
funzionamento della porta seriale, è possibile caricare sul PIC,
tramite IC-Prog, il programma _19100 -
Test_16F87x_Serial_Port_19200baud_10Mhz.HEX .
Dopo aver collegato il PC al PIC tramite un cavo seriale, ed aver
attivato il programma di comunicazione HyperTerminal di Windows impostando una velocità di
comunicazione di 19200 baud, è possibile visualizzare il
messaggio [ALIVE] che viene inviato continuamente dal PIC sulla porta
seriale.
Ultimo Aggiornamento : 18
Apr. 2005