Вы находитесь на странице: 1из 32

MPLAB X Y TCNICAS DE PROGRAMACIN CON LIBRERAS DE MICROCHIP

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

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.

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.

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

SUMARIO
CREANDO UN PROYECTO CON MPLAB X GUIA VISUAL PROGRAMANDO EN LENGUAJE C CARACTERISTICAS DEL LENGUAJE SET DE INSTRUCCIONES DECLARACION DE VARIABLES FUNCION PRINTF() MANEJO DE LA MEMORIA FUNCIONES INTERRUPCIONES ESCRIBIENDO APLICACIONES EN C18 CONTROL I/O ELEMENTAL CONTADOR LCD CONVERSOR A/D USART INTERRUPCIONES ETHERNET Y WI-FI CON PIC MICROCHIP TCP/IP CONFIGURATION WIZARD LOS ARCHIVOS DEL STACK MPFS MICROCHIP WEB PREVIEW ENVIO DE EMAILS ACCESO DESDE INTERNET ARQUITECTURA DEL PIC18F97J60 VARIABLES DINMICAS MODULO WI-FI 9 11 21 23 26 30 31 41 44 50 53 55 56 57 63 65 68 71 74 85 88 93 95 97 102 106 124

ALICACIONES USB CON PIC CAPAS DEL MODELO USB USB + VISUAL BASIC.NET LABORATORIOS PRACTICOS MCP2200 APLICACIONES GSM CON PIC COMANDOS AT ESQUEMATICO COMPLETO DESCRIPCION DEL PROGRAMA CONTROL DISCRETO CON dsPIC INTRODUCCION A CONTROL AUTOMATICO SISTEMAS DE CONTROL DIGITALES SELF BALANCING ROBOT CONSTRUCCION DEL ROBOT COMPENSADOR EN MATLAB ADQUISICION Y ANALISIS DE DATOS INTRODUCCION A LABVIEW COMPARACION SOFT/DSP NOMENCLATURA

149 157 177 179 197 201 203 206 211 227 229 230 235 242 251 258 259 280 282

ETHERNET Y WI-FI CON PIC

10

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.

11

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.

12

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.

13

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

14

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.

15

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

16

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.

17

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.

18

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

19

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

20

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.

21

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.

22

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)

23

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 24

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.

25

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.

26

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.

27

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.

28

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.

29

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.

30

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 31

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.

32

Вам также может понравиться