You are on page 1of 32

1

MPLAB X Y TCNICAS DE
PROGRAMACIN CON LIBRERAS
DE MICROCHIP





Andrs Ral Bruno Saravia
Ariel Jacinto Coria
Sebastin Gregori Fiadino
Alejandro Anibal Airoldi

2


Airoldi, Alejandro Anibal
MPLAB X y Tcnicas de Programacin con Libreras de Microchip. - 1a ed. - Buenos Aires.
mcelectronics, 2011.
300 p.: il.; 22x16 cm.

ISBN: 978-987-26021-1-6

1. Informtica. 2. Programacin. I. Ttulo
CDD 519.7


Fecha de catalogacin: Abril 2011

mcelectronics

Hecho el depsito que marca la ley 11.723
Todos los derechos reservados.

Ninguna parte de este libro, incluido el diseo de la portada, puede reproducirse, almacenarse o transmitirse de
ninguna forma ni por ningn medio, sea este elctrico, qumico, mecnico, ptico, de grabacin o de fotocopia,
sin la previa autorizacin escrita por parte de mcelectronics. La infraccin de los derechos mencionados puede
ser constitutiva de delito contra la propiedad intelectual.

La editorial no se pronuncia ni expresa implcitamente respecto a la exactitud de la informacin contenida en
este libro, razn por la cual no puede asumir ningn tipo de responsabilidad en caso de error u omisin.

Las marcas mencionadas son propiedad exclusiva de sus registradores legales.


3


















A todos los que han colaborado en la redaccin y edicin de este libro.
A los alumnos que a lo largo de estos aos contribuyeron con sus invaluables aportes.
A nuestras familias y amigos por el apoyo incondicional.
4



5





SERVICIO DE AYUDA AL LECTOR

Por consultas, sugerencias o para solicitar informacin adicional, favor no dude en escribirnos a:
soporte@mcelectronics.com.ar


PROGRAMAS Y RECURSOS ADICIONALES DE MICROCHIP

Para poder compilar los programas propuestos necesita el entorno de desarrollo MPLAB X, el
compilador C18 para PIC18 y el compilador C30 para los dsPIC. Todas las herramientas se pueden
obtener en forma gratuita desde la de Microchip:

www.microchip.com/mplabx
www.microchip.com/c18
www.microchip.com/c30


PROGRAMAS Y RECURSOS ADICIONALES DE MCELECTRONICS

Puede acceder al cdigo fuente de los programas, ejercicios adicionales y clases en MP3 a travs
de la web del libro:

www.mcelectronics.com.ar/techtrain


COMPLEMENTOS

Microchip Application Libraries
www.microchip.com/mal

MCP2200 Configuration Utility
www.microchip.com/mcp2200

LABVIEW
www.ni.com/labview

MATLAB
www.mathworks.com/products/matlab
6

























7

SUMARIO

CREANDO UN PROYECTO CON MPLAB X 9
GUIA VISUAL 11

PROGRAMANDO EN LENGUAJE C 21
CARACTERISTICAS DEL LENGUAJE 23
SET DE INSTRUCCIONES 26
DECLARACION DE VARIABLES 30
FUNCION PRINTF() 31
MANEJO DE LA MEMORIA 41
FUNCIONES 44
INTERRUPCIONES 50

ESCRIBIENDO APLICACIONES EN C18 53
CONTROL I/O ELEMENTAL 55
CONTADOR 56
LCD 57
CONVERSOR A/D 63
USART 65
INTERRUPCIONES 68
ETHERNET Y WI-FI CON PIC 71
MICROCHIP TCP/IP CONFIGURATION WIZARD 74
LOS ARCHIVOS DEL STACK 85
MPFS 88
MICROCHIP WEB PREVIEW 93
ENVIO DE EMAILS 95
ACCESO DESDE INTERNET 97
ARQUITECTURA DEL PIC18F97J60 102
VARIABLES DINMICAS 106
MODULO WI-FI 124






8






ALICACIONES USB CON PIC 149
CAPAS DEL MODELO USB 157
USB + VISUAL BASIC.NET 177
LABORATORIOS PRACTICOS 179
MCP2200 197
APLICACIONES GSM CON PIC 201
COMANDOS AT 203
ESQUEMATICO COMPLETO 206
DESCRIPCION DEL PROGRAMA 211

CONTROL DISCRETO CON dsPIC 227
INTRODUCCION A CONTROL AUTOMATICO 229
SISTEMAS DE CONTROL DIGITALES 230
SELF BALANCING ROBOT 235
CONSTRUCCION DEL ROBOT 242
COMPENSADOR EN MATLAB 251
ADQUISICION Y ANALISIS DE DATOS 258
INTRODUCCION A LABVIEW 259
COMPARACION SOFT/DSP 280
NOMENCLATURA 282





9





ETHERNET Y WI-FI CON
PIC

10



11

TELEMETRA Y CONTROL REMOTO CON PIC

En este captulo aprenderemos a realizar algunas aplicaciones muy tiles para los sistemas de
monitoreo y control a distancia utilizados en electrnica industrial mediante redes Ethernet.

Las aplicaciones de monitoreo y control son muy utilizadas en la industria, donde se necesita
tener suficiente informacin para realizar una determinada accin de control. Es por este motivo
que en este captulo veremos algunas aplicaciones simples donde se agrega comunicacin a
travs de la red Ethernet. Esto permite que el control sea a distancia, permitiendo adems la
comunicacin entre distintos dispositivos que actan como sensores o actuadores, esto es un
ejemplo de los beneficios que trae una red Ethernet.
Los ejemplos sern explicados de manera detallada y con la profundidad adecuada. Veremos
adems, los mdulos de entrenamiento comerciales que nos ayudarn a afianzar los
conocimientos tericos sobre este tema. Todo esto nos permitir desarrollar aplicaciones de
manera rpida y efectiva.



NETWORKING CON PIC

Aprenderemos a utilizar las herramientas de Microchip, como el TCP/IP Configuration Wizard y el
Microchip WebPreview para crear un WebServer con PIC.

Para comenzar a trabajar necesitamos tener instalado el MPLAB, el compilador C18 y el
Microchip TCP/IP Stack. Vamos a estudiar el Microchip TCP/IP Stack. Siempre es recomendable
consultar la web del fabricante para descargar la ltima versin: www.microchip.com/mal

Para instalarlo basta con ejecutar las Microchip Libraries que se descargan de la web mencionada
anteriormente. En verdad estamos instalando una serie de libreras que Microchip provee para
manejo de USB, mTouch (sensor capacitivo), TFT y Ethernet.

El Microchip TCP/IP Stack est formado por un conjunto de capas que dan acceso a distintos
protocolos: ARP, IP, ICMP, UDP, TCP, DHCP, SNMP, HTTP, FTP y TFTP. El Stack est totalmente
programado en C, requiere aproximadamente 32K en memoria de programa y es portable a
travs de las distintas familias de Microchip. Es decir, funciona en micros de 8, 16 y 32 bits.


12



Figura 1: El stack est formado por varia capas, donde cada una brinda servicios a la capa
superior.


Junto con el TCP/IP Stack se instalan 2 aplicaciones sumamente tiles al momento de desarrollar
una interface Ethernet con PIC: el Microchip TCP/IP Configuration Wizard y el Microchip Web
Preview. La primera nos permite modificar los parmetros del Stack en forma grfica (sin tener
que programar en C) y con la segunda podemos visualizar la pgina web antes de cargarla en la
memoria del PIC.


MICROCHIP TCP/IP CONFIGURATION WIZARD

Podemos tener una buena idea de las posibilidades del Stack estudiando en detalle el Microchip
TCP/IP Configuration Wizard. Si bien esta aplicacin nos permite modificar parmetros de la red
como la direccin IP y MAC; seleccionar entre protocolos como HTTP y FTP, no permite que el
usuario agregue su propio cdigo. Al momento de implementar un sistema necesariamente
debemos programar las funciones en C con el MPLAB.

Lo primero que debemos hacer es seleccionar la carpeta desde la cual vamos a trabajar, es decir,
donde est instalado el Stack. El proyecto bsico se encuentra en: C:\Microchip Solutions
library\TCPIP Demo App. Si bien hay varios ejemplos realizados con el stack, es conveniente
empezar con este. Hay otros con soporte para WI-FI y libreras de encriptacin SSL.

Lo que estamos haciendo es decirle al asistente que archivos vamos a configurar. Hay que tener
presente que el TCP/IP Configuration Wizard agrega o quita funciones del stack comentando
cdigo. Sabemos que el C18 no compila el cdigo comentado ni las funciones asociadas,
ahorrando as memoria de programa en el PIC.

13


Figura 2: Pantalla inicial del TCP/IP Configuration Wizard.

El TCP/IP Configuration Wizard es una aplicacin grfica que permite modificar los parmetros
del stack. Sin embargo, para realizar telemetra y control a travs de Ethernet debemos
interactuar con el stack mediante funciones callback programadas en C.



AGREGANDO SERVICIOS AL STACK

Podemos agregar soporte para distintos servicios: Servidor Web, Cliente de email, Telnet, FTP y
SSL. Adems soporte para el mdulo WI-FI de Wi-Fi que veremos en el fascculo 22.

En esta instancia vamos a agregar Servidor Web, que permite acceder a un pgina por medio de
una direccin IP y Cliente de email mediante el cual podremos enviar un email automticamente
ante un determinado evento, por ejemplo, si sube la temperatura por encima de un umbral.

14



Figura 3: Opciones de Servidor Web y Cliente de email seleccionadas en el TCPIP Configuration
Wizard.


Como mencionamos anteriormente, cada servicio que deshabilitamos por medio del asistente es
comentado en el Stack para que el C18 no lo compile.
En la Figura 3, vemos que podemos comentar manualmente cada servicio. En esta instancia cabe
mencionar que el Stack de Microchip est organizado en varios archivos, los encabezados que
habilitan los servicios se encuentran en el archivo: TCPIPConfig.h

Vemos que no todas las funciones del Stack estn disponibles a travs del TCP/IP Configuration
Wizard, por eso es importante acceder al archivo TCPIPConfig.h y comentar los servicios que no
necesitamos, de esta forma estamos optimizando el uso de la memoria de programa. Por
ejemplo, para deshabilitar el DNS, la instruccin debe quedar comentada por medio del operador
//


//#define STACK_USE_DNS



15

FUNCIONES ESPECIALES DEL STACK


Por medio del TCP/IP Configuration Wizard podemos agregar funciones especiales. Por ejemplo,
una aplicacin sumamente til es hacer un conversor RS232 Ethernet: as todos los paquetes
que ingresen por el conector de red sern retransmitidos por la UART del PIC y viceversa. De esta
forma podemos darle conectividad Ethernet a sistemas que originalmente solo tenan
comunicacin RS232.

Otra funcin interesante es medir el tiempo de viaje de un paquete entre el cliente y el host, lo
que comnmente denominamos PING. El stack nos devuelve el tiempo de viaje en milisegundos.




Figura 4: Habilitando las funciones especiales Serial to Ethernet Bridge y TCP Performance Test
(PING).

Vamos ahora a definir el nombre de Host, es decir un nombre con el cual identificar a nuestra
placa en la red. Si tenemos habilitado el servicio de DNS podemos asociar un nombre a la placa
que ser ms fcil de recordar que la direccin IP. Por otra parte, como la IP puede ser asignada
por el servidor en forma dinmica, resulta conveniente definir un nombre de Host.

16



Figura 5: Direccin MAC por defecto del PIC y nombre de Host .


Vinculado estrechamente al nombre de Host se encuentra la direccin MAC. Recordemos que por
norma la MAC debe ser unvoca, por lo tanto, al momento de comercializar nuestro desarrollo es
necesario adquirir un bloque de direcciones MAC a la IEEE. Existen memorias de Microchip que
tienen pregrabada una MAC y que podemos vincular el microcontrolador a travs de la interface
SPI o I2C. Claro que para hacer pruebas podemos utilizar la MAC por defecto que trae el Stack.



CONFIGURACIN DEL WEBSERVER

Vamos a definir el nombre de la pgina principal, es decir aquella que se va a mostrar por
defecto, en este caso: index.htm


17



Figura 6: Configuracin de la pgina por defecto, la cantidad de conexiones simultneas y
funciones adicionales.

Un parmetro importante es la cantidad de conexiones que vamos a permitir. Esto hace
referencia a la cantidad de usuarios que pueden monitorear el sistema simultneamente. Cmo
mximo pueden ser 32, pero debemos considerar parmetros como ancho de banda y
estabilidad de la red antes de establecerlo, ya que una excesiva demanda puede deteriorar el
rendimiento del sistema.


UBICACIN DE LA PGINA WEB

Podemos establecer diferentes ubicaciones para almacenar la pgina web que ver el usuario
final de nuestro webserver. La misma puede estar en la memoria de programa del
microcontrolador o en una memoria externa del tipo EEPROM.

Si bien vemos en la Figura 7 otras opciones como memoria Flash y sistema FAT, las mencionadas
anteriormente son las ms representativas ya que determinan si la pgina est alojada en la
memoria del micro o en una memoria externa.


18



Figura 7: Opciones de almacenamiento para la pgina web.

En los ejemplos de este capitulo vamos a utilizar la memoria externa de Microchip: 25LC1024.
Esta memoria es del tipo EEPROM , tiene una capacidad de 1Mbit y se conecta al PIC por SPI.
Eligiendo una memoria externa disponemos de toda la memoria de programa para escribir
nuestro cdigo y alojar el Stack TCP/IP.


Bsicamente tenemos dos opciones para almacenar la pgina web: memoria externa o interna.
Debemos decidir por una u otra considerando el costo adicional que significa una memoria
EEPROM y por otro lado la consecuente reduccin de espacio en memoria de programa.









19

COMPILANDO EL STACK


Una vez configurados los parmetros bsicos de nuestra aplicacin a travs del Microchip TCP/IP
Configuraton Wizard, estamos en condiciones de compilar el Stack y cargarlo en el PIC.




Figura 8: La ltima pantalla del asistente: simplemente cliquear en finalizar para aceptar los
cambios realizados.


Necesitamos, entonces, compilar el Stack, para lo cual abrimos el proyecto TCPIP Demo App-
C18.mcp desde el MPLAB y ejecutamos la compilacin haciendo click en Build all.

Dentro de la carpeta TCPIP Demo App encontramos varios proyectos preparados para utilizar con
micros de 8 a 32 bits. Es interesante destacar que los parmetros configurados con el asistente
sirven para cualquier proyecto, esto se debe a que slo se est modificando el archivo de
cabecera TCPIPConfig.h. Ntese que seleccionamos el proyecto TCPIP Demo App-C18.mcp ya que
vamos a trabajar con un micro de la familia PIC18 (8bits).


20



Figura 9: Proyecto en el MPLAB listo para compilar.

Una vez compilado el proyecto, necesitamos un microcontrolador donde cargarlo. Vamos a
utilizar una placa comercial denominada MCE WebServer DEV desarrollada por la empresa
mcelectronics (www.mcelectronics.com.ar).












21

ACCEDIENDO A LA PGINA WEB

El Stack, por defecto, habilita el cliente DHCP, por tal motivo podemos conectar la placa a un
router con DHCP habilitado (capacidad de asignar direcciones IP) y as obtener conectividad
desde una computadora en la misma red.





Figura 10: Pgina inicial index.htm que se accede colocando la direccin IP asignada por el
router.

En este caso la IP asignada es 192.168.0.101, vemos sobre la izquierda de la pgina inicial un
men con las distintas opciones de la placa. Estas opciones son las que habilitamos a travs del
TCP/IP Configuration Wizard. Por ejemplo: envo de emails, servidor HTTP y servidor seguro, el
cual nos permite acceder a una pgina protegida.

22

Lo que nos interesa en este momento es el recuadro de arriba a la derecha que nos muestra en
tiempo real el estado de 8 LEDs y la temperatura enviada desde un sensor que tiene la placa.
Podramos, por ejemplo, monitorear otro led o controlar un relay desde la interface web. Este
tipo de interaccin, donde una variable reporta o modifica el estado de un puerto, se realiza
mediante funciones callback que veremos ms adelante. Es interesante destacar que la
actualizacin de los datos es automtica y no requiere refrescar la pantalla del navegador.


En la seccin Configuracin, encontramos parmetros como la direccin IP, el default Gateway, la
mscara de red, la MAC y el servidor DHCP. Todo esto podemos cambiarlo en tiempo de
ejecucin, por eso es importante protegerlo con contrasea, ya que una configuracin incorrecta
dar como resultado la prdida de conexin.


Tambin tenemos la posibilidad de enviar emails desde un formulario web. Para esto se utiliza el
protocolo SMTP. Simplemente hay que completar el formulario con el nombre del servidor SMTP,
el nombre de usuario y la clave. Por ltimo colocamos la direccin del destinatario y el cuerpo del
mensaje. Por defecto se adjunta un archivo csv (se puede abrir con Excel) donde se muestra el
estado de los LEDs, los pulsadores y el valor de temperatura. Ms adelante vamos a ver el cdigo
de este ejemplo.


Antes de pasar a la programacin del stack, vamos a ver una ltima pantalla de la interface web.
Se trata del envo de variables a travs de los mtodos GET y POST. Quin est acostumbrado a
programar en PHP sabr la ventaja que conlleva utilizar este recurso. Por ejemplo, con el mtodo
GET podemos enviar una serie de variables junto con la URL. Es lo que habitualmente vemos
como:


http://192.168.1.101/forms.htm?relay2=on&relay1=off


Luego de la direccin IP de nuestra placa est el nombre del formulario que vamos a actualizar, y
a continuacin del signo de interrogacin est el nombre de cada variable y su valor separadas
por &.


Ntese que estamos actualizando el estado de dos variables (relay1 y relay2) de una sola vez. GET
tiene una limitacin y es el hecho de que la URL no puede contener ms de 1024 bytes.


Si necesitamos enviar una mayor cantidad de variables, debemos utilizar el mtodo POST que no
tiene restricciones de longitud. Generalmente se suele utilizar POST para actualizar el texto de un
LCD.


23

LOS ARCHIVOS PRINCIPALES DEL STACK


Como mencionamos anteriormente, es necesario conocer el stack para poder agregar nuestras
propias funciones y as lograr un sistema de telemetra y control remoto acorde a nuestras
necesidades. Para esto vamos a desarrollar los archivos principales del stack. En la Figura 9
vemos la estructura general en el MPLAB.




Figura 11: Estructura de archivos del Stack.

Se distingue la estructura dividida en archivos de cabecera (.h) y el cdigo en los archivos (.c). Los
archivos principales son los siguientes:


HardwareProfile.h
En este archivo simplemente asociamos un puerto con un nombre fcil de recordar, por ejemplo
si colocamos un LED en el puerto RF3 del PIC:


#define LED_TRIS (TRISFbits.TRISF3)
#define LED_IO (PORTFbits.RF3)
24

TCPIPConfig.h
Como vimos, se utiliza para habilitar o deshabilitar funciones del stack como DNS, FTP, SNTP, SSL
y UART dependiendo de las caractersticas de nuestra aplicacin y la memoria disponible en el
micro.

MainDemo.c
Es el programa principal, en el archivo MainDemo.c encontramos el mapeo de puertos, la
configuracin de los registros de la USART, los ADC y la inicializacin de la placa. Por ejemplo
ADCON0=0x0D; Para seleccionar AN3 como entrada analgica.

CustomHTTPApp.c
Por ltimo, el cuarto archivo que necesitamos para una aplicacin bsica es CustomHTTPApp.c,
en el cual se encuentran las funciones callback, es decir aquellas que interactan con la pagina
web.



FUNCIONES CALLBACK

Echemos un vistazo al archivo CustomHTTPApp.c donde se encuentran las funciones Callback. En
este ejemplo vamos a mostrar el estado de un LED en la pgina web por medio de ON y OFF.

La funcin Callback contiene el nombre y el valor de la variable dinmica ( led ) que va a ser
mostrada en la web. Un error comn es enviar directamente al buffer Ethernet el estado del led
mediante la variable int LED_IO.

Hay que tener en cuenta que SOLO SE PUEDEN ENVIAR STRINGS POR ETHERNET, por lo que, en
numerosas ocasiones usamos itoa o ftoa para convertir los tipos de dato. Analicemos el cdigo:

ROM BYTE ESTADO_LED_UP[] = ON";
ROM BYTE ESTADO_LED_DOWN[] = OFF";

void HTTPPrint_led(void)
{
TCPPutROMString(sktHTTP, (LED_IO?ESTADO_LED_UP:ESTADO_LED_DOWN));
}

En este caso, en lugar de usar los conversores de tipo, creamos dos variables auxiliares
ESTADO_LED_UP y ESTADO_LED_DOWN para mostrar el estado del led mediante ON y OFF.

La funcin void HTTPPrint_led(void) enva a la pgina web el valor de la variable dinmica led.
Para chequear el estado del puerto RF3 (donde esta mapeado el led) utilizamos la sentencia
condicional IF, aqu representada en una lnea:


LED_IO?ESTADO_LED_UP:ESTADO_LED_DOWN
25

Recordar que anteriormente definimos LED_IO como el estado del puerto RF3.
El IF chequea el estado de LED_IO, si el puerto est en 1, entonces la sentencia es verdadera y
enva por HTTP, ESTADO_LED_UP, si en cambio est en cero, la sentencia es falsa y enva
ESTADO_LED_DOWN.

De esta forma tenemos un sistema bsico que monitorea una variable y la enva por Ethernet.
Ahora debemos disear una pgina web que reciba esta variable y la muestre en el explorador.
Programacin de la pgina web

Microchip organiza los archivos del sitio web de tal forma de ahorrar espacio. Se trata de no
repetir la informacin, por ejemplo, al pie de todas las pginas aparece la misma leyenda,
entonces, utilizamos el archivo footer.inc que ser llamado desde cada pgina, en lugar de
escribir el texto nuevamente. Esto permite reducir sensiblemente el tamao total del sitio.

Hay que incluir en el sitio web la variable dinmica led, para esto vamos a modificar status.xml e
index.htm.

status.xml contiene todas las variables dinmicas que se actualizan (leds, temperatura y
pulsadores). Agregamos la lnea correspondiente a la nueva variable dinmica:

<led>~led~</led>

Entre <> se indica el nombre del divisor que se va a utilizar en el index para definir la posicin de
la variable.

Index.html finalmente es el archivo que ve el usuario final. Donde aparezca <led> el webserver
lo va a reemplazar con ON, OFF segn el valor de LED_IO.


<span id=led">?</span>;


Es importante destacar que este ejemplo utiliza AJAX para actualizar la informacin sin tener que
apretar F5 en el explorador. Por lo tanto debemos agregar la siguiente sentencia al final del
index:


document.getElementById(led').innerHTML = getXMLValue(xmlData, led');


Lo que hicimos hasta el momento fue crear una variable dinmica led en el cdigo del Stack y
enviarla a la web a travs de una funcin callback, luego configuramos los archivos index.htm y
status.xml para visaulizar el estado de la variable en la web.



26

SISTEMA DE ARCHIVOS MPFS


Ahora necesitamos cargar la web en la memoria externa 25LC1024. Antes de hacerlo debemos
compactar los archivos que componen el sitio mediante la aplicacin MPFS (Microchip PIC File
System). Esta aplicacin se instala con el Stack y se encuentra en la ruta que venimos trabajando.

MPFS es el sistema de archivos que utiliza el micro para leer la pgina web. Una vez que tenemos
nuestro sitio terminado con los archivos html, jpg o gif debemos convertirlos al sistema MPFS,
para luego, poder cargarlos en el micro o en la memoria externa. Lo que hace internamente este
conversor es juntar todos los archivos en uno solo, de hecho, podemos abrir el archivo resultante
con el bloc de notas y veremos, ordenado secuencialmente, el contenido de cada archivo que
compone el website.

La aplicacin MPFS.exe convierte el conjunto de archivos que componen la pgina web a dos
formatos posibles:

.bin (para cargar el website en la memoria EEPROM externa)
.c (para cargar el website en la memoria de programa del PIC)

Como mencionamos anteriormente, al cargar la web en la memoria externa, tenemos disponible
toda la memoria de programa del PIC para nuestra aplicacin.


27



Figura 13: Pantalla principal del MPFS.exe con las opciones necesarias para compactar la web
y cargarla en la memoria.


El MPFS nos da la opcin de transferir la web automticamente a la memoria externa luego de
compactarla. Para esto la placa debe estar conectada a la red y tener cargada la ltima versin
del Stack.

Debemos tener en cuenta que cada variable que agreguemos en la web requiere su
correspondiente variable en el Stack, por lo tanto es necesario recompilar el stack y cargarlo en el
PIC antes de compactar la web y transferirla a la memoria. La secuencia correcta es la siguiente:


1-Modificar el Stack segn las necesidades de telemetra requeridas.
2-Agregar las variables dinmicas correspondientes en status.xml e index.htm.
3-Compactar la web con MPFS.
4-Compilar el Stack con el MPLAB.
5-Cargar el stack en el PIC.
6-Transferir la pgina web a la memoria externa.
28

Tenemos dos alternativas para cargar la web en la memoria externa, una ya la vimos y es a travs
del MPFS. La segunda opcin nos permite cargar la web remotamente a travs del explorador
web. Es un sistema de transferencia de archivos por medio de HTTP. Debemos ingresar a:

http://192.168.1.101/mpfsupload






Figura 14: Servicio para cargar el website remotamente, debemos incluir el archivo .bin
resultante de la compactacin.


Las aplicaciones ms seguras no permiten cargar la web de esta forma ya que cualquiera podra
ingresar a la direccin mencionada, conociendo solo la IP y modificar nuestra web. En este caso
podemos proteger el sistema de carga con contrasea o bien cargar la web en la memoria de
programa del PIC.

Debemos colocar la menor cantidad de imgenes posibles en la aplicacin final, ya que la
memoria 25LC1024 posee 1Mbit, es decir 128 Kbytes de espacio. Si nuestra web ocupa ms, no
se cargar correctamente.


Es importante tener en cuenta que al agregar o quitar variables de nuestra web, se modifica el
archivo HTTPPrint.h por lo que hay que volver a compilar el Stack antes de cargar la aplicacin
en el micro.






29

CARGAR LA WEB EN LA MEMORIA INTERNA DEL PIC


En aplicaciones que deben ser extremadamente econmicas o bien donde la seguridad es una
prioridad, podemos optar por almacenar la web en la memoria de programa del
microcontrolador.

Para esto ejecutamos el MPFS y seleccionamos la opcin: C18/C32 Image desde el men
principal.



Figura 15: MPFS configurado para generar un archivo .c

Esto generar un archivo .c que debemos agregar al stack para que sea compilado con el resto
del cdigo. Por defecto el nombre del archivo es MPFSImg2.c

Para agregar la web, es decir el archivo MPFSImg2.c, debemos hacer 2 cosas:

Primero comentamos la sentencia #define MPFS_USE_EEPROM dentro del archivo
TCPIPConfig.h. De este modo estamos indicando que la web no estar en la memoria EEPROM
externa.

30

En segundo lugar, incluimos el archivo MPFSImg2.c en el proyecto. Para lo cual hacemos click con
el botn derecho sobre Source Files y seleccionamos Add Files, como se ve en la Figura 16.





Figura 16: Cmo agregar al proyecto el archivo MPFSImg2.c


De esta forma estaramos prescindiendo de la memoria EEPROM externa con el consecuente
ahorro de dinero y espacio fsico en la placa.


31

Ya tenemos la web incluida en el Stack, ahora debemos compilar el proyecto completo y cargarlo
en el PIC.

Una vez que compilamos, podemos notar que queda mucho menos espacio disponible en la
memoria de programa. Una pgina promedio ocupa cerca del 25% de la memoria de un
PIC18F97J60. Este es el PIC que est en la placa MCE WebServer DEV y que vamos a estudiar en
detalle en el prximo fascculo. Por lo tanto, en caso de necesitar almacenar la web de esta
forma, es crtico reducir la cantidad de imgenes y minimizar su resolucin lo ms posible.



MICROCHIP WEBPREVIEW


Esta aplicacin permite visualizar el aspecto que tendr la pgina web antes de cargarla en
nuestro sistema. Esto resulta til, ya que de otra forma deberamos compactar la web y
transferirla a la memoria cada vez que modifiquemos algn parmetro esttico.

El Microchip WebPreview se encuentra dentro de la carpeta del Stack en el men Inicio.




Figura 17: Pantalla principal de Microchip WebPreview


En primer lugar debemos ingresar la ruta del archivo index.htm y la ubicacin de la carpeta
donde se encuentran las imgenes y dems archivos que componen el sitio:

Respectivamente son:

C:\Microchip Solutions library\TCPIP Demo App\WebPages2\index.htm
C:\Microchip Solutions library\TCPIP Demo App\WebPages2
32


Luego hacemos clic en Preview Page y veremos la pgina generada por la aplicacin en una
ventana de Windows.




Figura 18: Pgina generada con el WebPreview


Ntese que las variables, como las que indican el estado de los pulsadores, aparecen con (?), esto
es lgico, pues no est la aplicacin cargada en el micro y por lo tanto no hay un funcin callback
que devuelva esos valores. Tampoco tenemos posibilidad de interaccin con los botones.

Si bien el Microchip WebPreview es sumamente til para visualizar el aspecto de nuestra web,
necesariamente debemos compilar el proyecto y grabarlo en el PIC para luego transferir la web a
la memoria y poder verificar que todas las funciones callback estn funcionando como
esperamos.

You might also like