Você está na página 1de 8

ICSP: Cmo Usar "Programacin Serial En Circuito" con

MicrocontroladoresPIC

Cuando se desarrollan sistemas microcontrolados resulta muy


ineficiente tener que sacar el PIC de su circuito para reprogramarlo
unayotra,yotravez...Sielproyectoesrelativamentelargo,estono
solamente consume un tiempo considerable, sino que tambin
puede afectar la vida til del PIC (los pines podran doblarse y
romperse) y si se est prototipando en breadboard, tambin se
reducelavidatildelbreadboard.
En este tutorial se muestra un circuito prctico con la conexin de
todas las seales ICSP para programar y reprogramar el PIC "en
circuito", sin la necesidad de extraerlo de su circuito de aplicacin.
Este tutorial sirve a su vez como un desarrollo introductorio de los
conceptosbsicosdelaProgramacinSerialEnCircuito(ICSP).
QueesICSP?
ICSP es el acrnimo de la frase en ingls: "In Circuit Serial
Programming" (Programacin Serial En Circuito); es una tecnologa
incluida en todos los microcontroladores PIC de Microchip ms
recientes y posibilita la reprogramacin de los mismos sin que sea
necesaria la remocin de stos de su circuito de aplicacin. Esta
caracterstica es extremadamente til no solamente en la etapa de
desarrollodebidoaqueahorratiempoytrabajo,sinoquesuutilidad
se extiende a la etapa de mantenimiento y actualizacin de los
sistemas, dando la posibilidad de reprogramar los mismos "en el
campo" en sus respectivas placas ya soldadas, ya sea para corregir
errores de software o para la mejora del sistema con la
implementacin de nuevas funciones.

Estemtododeprogramacin(lectura,escriturayverificacin)noes
exclusivo de los microcontroladores Microchip, ya que otras marcas
como Atmel, Parallax y otros usan tambin mtodos similares
conocidos de manera genrica como ISP (In System Programming) y
enlaarquitecturadeProcesadoresARMseutilizaunmtodosimilar
conocidocomoJTAG.
ProgramadoresICSP
Todos los modelos recientes de microcontroladores PIC se
programan usando ICSP con voltaje alto de programacin y una
varianteconLVP(LVPes"LowVoltageProgramming"msadelante
hablaremosdeesto).Asmismo,todoslosprogramadoresmodernos
de PIC utilizan este mtodo para programarlos, aunque esto no sea
aparenteenalgunosprogramadoresquecuentanporejemploconun
socketZIF,comoelmostradoenlafigura.

En el caso de los programadores con socket ZIF, El mtodo de


programacinsiguesiendoICSP(ProgramacinEnCircuito),sloque
enestecasotodaslassealesICSPestncableadasalsocketZIF;sin
embargo debido a que el PIC debe ser removido del circuito para
ubicarlo en el socket, se contradice el propsito inicial de la idea, la
cual es justamente no remover el PIC de su circuito. Para los
principiantes el uso del socket ZIF es ms conveniente; sin embargo
para quien debe realizar un trabajo de largo aliento, con muchas
iteraciones de reprogramacin, programar el PIC sin tener que
removerlo cada vez de su circuito es mucho ms conveniente.

En la siguiente fotografa vemos un ejemplo de un sistema siendo


programado"encircuito":

SealesyConexionesenelCabezalICSP
LassealesconectadasentreelPICyeldispositivoprogramadorpara
realizar la escritura, lectura y verificacin del programa son las
siguientes:
VPP(VoltajedeProgramacin):Esunvoltajeentre1214VDC
aplicado al pin MCLR/VPP del PIC, y es usado para poner al PIC en
estadodeprogramacin.
PGC (Program Clock): Seal de reloj provista al PIC para
sincrona.
PGD (Program Data):Lnea serial de datos para escritura,
lectura y verificacin de la memoria de programa (ROM Flash) del
microcontrolador.
VDD (Voltaje de Alimentacin 5/3.3 VDC): Voltaje de
alimentacinprovistoalPIC.EnelcasodelosprogramadoresPickit2
y Pickit 3, estos primeramente consultan este pin para verificar si el
PICyaestsiendoalimentadoexternamente(recomendado)deotro
modo, existe la posibilidad de configurar al programador para que
stemandevoltajedealimentacinalPICatravsdeestalnea.
GND(Ground):Conexinatierra.
Elsiguientediagramadecircuitomuestraunmtodomuyusualpara
laimplementacindeICSP:

Como se puede observar, el mtodo ICSP utiliza pines en el


microcontroladorquetambinpuedencumplirpotencialmenteotras
funciones;enelcasodelPIC16F628Atenemosporejemplo:
El pin RA5/MCLR/VPP, adems de ser el pin VPP es el pin RA5
delpuertoAylaentradadereset(MCLR).
El pin RB7/T1OSI/PGD, adems de la conexin serial de datos
para la programacin (PGD) es tambin el pin RB7 del Puerto B y la
entradadeosciladordelTimer1(T1OSI).
El pin RB6/T1OSO/T1CKI/PGC, es la entrada de reloj para ICSP,
adems de ser el pin RB6 del Puerto B, la salida de oscilador del
Timer1(T1OSO)ylaentradaderelojdelTimer1(T1CKI).
Por tanto, los pines anteriores cumplen bsicamente dos funciones:
1) Funciones relacionadas a la aplicacin principal del circuito, y 2)
Funciones para la conexin con el dispositivo programador que
posibilite la lectura, escritura y verificacin de la memoria de
programa"encircuito".
CircuitodeAislacin
Para que la programacin se lleve a cabo de manera correcta y
segura, es necesario aislar el circuito de aplicacin del circuito de
programacin.Elcircuitoejemplomostradoenlafiguraanteriornos
muestradequmanerasepuedelograresto:
Conectar un diodo de seal(como el 1N4148 u otro similar)
entre el pin MCLR/VPP y el circuito de reset (resistencia + capacitor)
de la aplicacin. Esto aisla al circuito de reset y la fuente de voltaje
del microcontrolador de los 1213 voltios generados por VPP en el
momentodelaprogramacin.
ConectarotrodiododesealentreelpinVDDylaalimentacin
de voltaje del circuito de aplicacin. Esto posibilita que en caso de
queelVDDdelcircuitodelmicrocontroladorestencendido,stesea
aisladodelaalimentacindevoltajeprovistaporelprogramador;en
todocasoesmsrecomendableysegurousralaalimentacinpropia
del circuito de aplicacin para energizar el PIC que usar la
alimentacindevoltajeprovistaporelprogramador,sobretodopara
losprincipiantes.
Conectar resistencias(tpicamente 10K) entre los pines PGD y
PGC y el circuito de aplicacin a fin de que la reactancia vista desde
estos pines no afecte la integridad de las seales de datos y reloj
utilizadas en la escritura, lectura y verificacin del programa. Si la
aplicacin lo permite, es recomendable dejar libres estos pines para
serusadosexclusivamenteparalaprogramacinICSP.
RespectoalaaislacindelospinesPGDyPGCesimportanterecalcar
quesibienestetpicoejemplodecircuitodeaislacinfuncionapara
la mayora de los casos, no es una receta segura para todos, y en
algunos casos podra requerirse ligeras modificaciones o incluso un
planteamientodiferenteparalogrardichaaislacin.
DepuracinconICSP
Cabe notar tambin que ICSP, aparte de proveer el mtodo para la
escritura, lectura y verificacin del cdigo de programa en el
microcontrolador, provee tambin mtodos para la depuracin y la
emulacin "en circuito"; capacidades que vienen adicionalmente
implementadas en ciertos dispositivos conocidos en ingls como
"programers/debuggers/emulators"
(programadores/depuradores/emuladores). Ambas capacidades
adicionales complementan grandemente la "caja de herramientas"
detododesarrolladordesistemasmicrocontrolados.
ProgramacinConBajoVoltaje(LVP)
LaProgramacinConBajoVoltajeLVP(LowVoltajeProgramming)es
una opcin adicional de programacin presente en los PICs la cual
permite obviar VPP (1214 VDC) y utilizar bajo voltaje. Para ello los
PICs cuentan con otro pin denominado PGM (el pin RB4/PGM en el
caso del PIC16F628A) atravs del cual el dispositivo programador
toma control del PIC para su programacin. Los detalles de este
mtodo salen del alcance de este tutorial, simplemente aadiremos
que,sisevaausarICSPconVPP(1214VDC),esrecomendabledejar
deshabilitada la Programacin Con Bajo Voltaje (LVP) en el
microcontrolador(mediantelaescrituradelbitcorrespondienteenla
palabra de configuracin (registro CONFIG) del microcontrolador,
esto para evitar desprogramaciones accidentales del PIC. La
desventaja de LVP es que cualquier ruido o pico de voltaje ms o
menos fuerte puede desprogramar accidentalmente el PIC, por lo
cual, es mejor deshabilitarlo y usar la programacin ICSP con voltaje
alto.
Conclusin
Implementar ICSP se hace imprescindible en un proyecto que
requiere muchas iteraciones de reprogramacin en la etapa de
desarrollo; por otra parte brinda tambin la posibilidad de
actualizacin y mejora del programa cuando los componentes ya
estn soldados en la placa y el sistema ya est en funcionamiento.
Para quienes nunca antes programaron "en circuito", implementarlo
puede parecer un poco intimidante al principio, sin embargo es un
pasonecesarioadar,afindemejorarlaeficienciaeneldesarrollode
sistemasmicrocontrolados.
Nada reemplaza la adecuada investigacin y bsqueda de
informacin antes de probar herramientas y tcnicas nuevas para
uno, por lo cual es muy recomendable revisar tambin la
documentacin oficial de fabricante respecto a la Programacin
Serial En Circuito, a fin de contar con la informacin detallada y de
primeramanorespectoaestetpico.
EEPROM (Electrically Erasable Programmable Read-Only Memory

Você também pode gostar