You are on page 1of 245

Universidad ORT Uruguay Facultad de Ingenier a

Procesador para control multiprotocolar


Entregado como requisito para la obtencin del t o tulo de Ingeniero en Telecomunicaciones

Alan Cohn - No 137033 Rossana Morales - No 67756

Tutor: Ing. Matias Nogueira

2007

Agradecimientos
Agradecemos a todas aquellas personas que han aportado su granito de arena para ayudarnos en esta experiencia, desde lo conceptual hasta lo material, especialmente a nuestro tutor, el Ing. Mat Nogueira por el apoyo y la as constante asistencia a favor del proyecto. Queremos destacar la colaboracin o de los ingenieros Mart Szmulewicz y Pablo Homan, as como tambin a las n e empresas Ikatu y Sonda Uruguay. Finalmente a nuestras familias y amigos por brindarnos su apoyo incondicional en cada momento.

Abstract
La evolucin de la tecnolog y la invencin de nuevos protocolos vienen o a o acompa adas de un cambio de paradigmas a la hora de controlar los diferentes n dispositivos que funcionan en base a la implementacin de protocolos. Mieno tras en el pasado se buscaba mantener el control individual de cada equipo dedicando un control espec co para cada aplicacin -, en estos tiempos, meo diante la creacin de plataformas y arquitecturas es menester la domtica y la o o automatizacin de sistemas. o La Internet es una red de redes, miles de redes basadas en tecnolog hetas erogneas se comunican en ella ofreciendo un conjunto ilimitado de servicios. e La familia de protocolos TCP / IP es la base de la Internet que sirve para enlazar computadores que utilizan diferentes sistemas operativos. Cada vez son ms y mejores las aplicaciones que utilizan este set de protocolos para brindar a conectividad total entre usuarios y equipos. La automatizacin y la domtica o o tienden al uso de la Internet como la plataforma que permite la conexin y la o comunicacin entre dispositivos para su uso domstico o industrial. o e El proyecto consiste en la investigacin, dise o y construccin de un siso n o tema capaz de ofrecer el uso de determinados protocolos a travs de una ine terfaz Ethernet. Se busca crear un dispositivo dedicado a intercomunicar un conjuntos de protocolos incompatibles. Se implementa el control sobre distintos protocolos, donde se ha investigado y estudiado espec camente sobre los siguientes: Ir, RS232 y entradas / salidas digitales. El estudio concreto de los protocolos anteriormente mencionados corresponde a su gran insercin o en el mercado de la ingenier Dichos protocolos fueron los elegidos para ser a. implementados. El sistema consta de un bloque central y varios mdulos exteo riores, cumplindose la condicin que cada mdulo exterior maneja, controla e o o y permite el funcionamiento de un unico protocolo. La cantidad de mdulos o exteriores que componen el sistema est sujeta a las preferencias del usuario, a permitiendo el uso mximo de 16 mdulos por sistema. a o Esta experiencia no solo consisti en la realizacin del proyecto en s sino o o , tambin en el aprendizaje relativo a la gestin de un proyecto. Para su gestin e o o se emplearon distintas herramientas que facilitaron el dise o y el avance dun 3

rante el mismo. En este documento se incluyen apuntes, decisiones de dise o n y conclusiones, sobre la evolucin y progreso del proyecto. o

Indice
Cap tulo 1. Proyecto 1.1. Introduccin . . . . . . . . . . . . . o 1.1.1. Domtica y automatizacin o o 1.1.2. Protocolos . . . . . . . . . . 1.1.3. Descripcin del sistema . . . o 1.2. Motivacin . . . . . . . . . . . . . . o 1.3. Objetivos . . . . . . . . . . . . . . 1.4. Gestin del proyecto . . . . . . . . o 1.4.1. Planicacin y desarrollo . . o 1.5. Implementacin . . . . . . . . . . . o 1.6. Estructura del documento . . . . . 1.7. Referencias . . . . . . . . . . . . . 11 11 11 12 13 13 14 14 15 18 18 20

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

Parte I - Sistemas Embebidos


Cap tulo 2. Sistemas Embebidos 2.1. Introduccin . . . . . . . . . o 2.2. Marco terico . . . . . . . . o 2.2.1. Protocolo OSGI . . . 2.3. Placas Rabbit . . . . . . . . 2.3.1. RCM3700 . . . . . . 2.3.2. RCM3720 . . . . . . 2.3.3. Dynamic C . . . . . 2.3.4. Precios . . . . . . . . 2.4. Placas Digi . . . . . . . . . 2.4.1. ConnectCore 7U . . 2.4.2. Prestaciones . . . . . 2.4.3. Consideraciones . . . 2.4.4. Precios . . . . . . . . 2.5. Placas PC104 . . . . . . . . 2.5.1. TS-7200 ARM . . . . 2.5.2. Prestaciones . . . . . con interfaz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21
22 22 23 23 26 26 26 27 28 28 28 28 29 30 30 30 30 5

INDICE 2.5.3. Consideraciones . 2.5.4. Precios . . . . . . 2.6. Comparacin de placas . o 2.6.1. Precio . . . . . . 2.6.2. Dimensiones . . . 2.6.3. Caracter sticas . 2.6.4. Soporte . . . . . 2.6.5. Por qu Rabbit? e 2.7. Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 32 32 32 32 32 33 33 35 37 37 38 38 40 42 42 43 43 43 44 48 58 61 63 64 64 66 66 67 67 68 68 68 69

Cap tulo 3. Desarrollando con Rabbit 3.1. Introduccin . . . . . . . . . . . . . . . . . . o 3.2. Marco terico . . . . . . . . . . . . . . . . . o 3.2.1. Protocolo HTTP . . . . . . . . . . . 3.2.2. Protocolo SMTP . . . . . . . . . . . 3.2.3. Protocolo HTML . . . . . . . . . . . 3.2.4. Telnet . . . . . . . . . . . . . . . . . 3.3. Prestaciones del RCM3700 . . . . . . . . . . 3.3.1. Dimensiones . . . . . . . . . . . . . . 3.3.2. Kit de desarrollo . . . . . . . . . . . 3.3.3. Referencia del hardware . . . . . . . 3.3.4. Prestaciones con Ethernet . . . . . . 3.3.5. Prestaciones con Dynamic C . . . . . 3.4. Estrategia de programacin y desarrollo . . o 3.4.1. Formas de programacin de la placa . o 3.4.2. Debugging . . . . . . . . . . . . . . . 3.4.3. Gestin ante errores y problemas . . o 3.5. Pruebas . . . . . . . . . . . . . . . . . . . . 3.5.1. BotonEnviaCaracter.c . . . . . . . . 3.5.2. Autenticacin.c . . . . . . . . . . . o 3.5.3. Leds.c . . . . . . . . . . . . . . . . . 3.5.4. LedsAutenti.c . . . . . . . . . . . . . 3.5.5. EnviaMail.c . . . . . . . . . . . . . . 3.5.6. FormAsociada.c . . . . . . . . . . . . 3.6. Referencias . . . . . . . . . . . . . . . . . .

Parte II - Manejo y control de protocolos

71

Cap tulo 4. Arquitectura multiprotocolar 72 4.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 o 4.2. Marco terico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 o 4.2.1. Protocolo RS485 . . . . . . . . . . . . . . . . . . . . . . 72

INDICE 4.2.2. Protocolo GPIB . . . . . . . . . . . . . . . . . . . . . . . 2 4.2.3. Protocolo I C . . . . . . . . . . . . . . . . . . . . . . . . 4.2.4. Cable par trenzado . . . . . . . . . . . . . . . . . . . . . 4.3. Deniciones relativas a la arquitectura multiprotocolar . . . . . 4.4. Descripcin del protocolo por capas . . . . . . . . . . . . . . . . o 4.4.1. Capa f sica . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.2. Capa de conexin . . . . . . . . . . . . . . . . . . . . . . o 4.4.3. Capa de acciones . . . . . . . . . . . . . . . . . . . . . . 4.5. Anlisis de velocidades y tiempos . . . . . . . . . . . . . . . . . a 4.5.1. Tiempo de transferencia del mensaje (Ttm ) . . . . . . . . 4.5.2. Tiempo de transferencia de las noticaciones (Ttn ) . . . . 4.5.3. Retardo de propagacin de los integrados utilizados (Rp ) o 4.5.4. Tiempo de espera entre intento e intento (Te ) . . . . . . 4.5.5. Tiempo mximo del ciclo de consulta del Rabbit (Tcm ) . a 4.5.6. Tiempo de inicializacin de los mdulos exteriores (Ti ) . o o 4.5.7. Tiempo entre env y env de bytes (Tb ) . . . . . . . . . o o 4.5.8. Tiempo m nimo entre acciones consecutivas al mismo mdulo exterior (Tac ) . . . . . . . . . . . . . . . . . . . . o 4.6. Funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.1. Ciclo de consulta . . . . . . . . . . . . . . . . . . . . . . 4.6.2. Acciones del Rabbit . . . . . . . . . . . . . . . . . . . . 4.6.3. Eventos espordicos . . . . . . . . . . . . . . . . . . . . . a 4.6.4. Consideraciones . . . . . . . . . . . . . . . . . . . . . . . 4.7. Implementacin en la placa Rabbit . . . . . . . . . . . . . . . . o 4.7.1. Universalidad de IDs . . . . . . . . . . . . . . . . . . . . 4.7.2. Procedimiento . . . . . . . . . . . . . . . . . . . . . . . . 4.8. Implementacin en los mdulos exteriores . . . . . . . . . . . . . o o 4.8.1. Procedimiento . . . . . . . . . . . . . . . . . . . . . . . . 4.8.2. Aspectos a considerar . . . . . . . . . . . . . . . . . . . . 4.8.3. Pines de utilizacin genrica . . . . . . . . . . . . . . . . o e 4.8.4. Archivos base . . . . . . . . . . . . . . . . . . . . . . . . 4.8.5. Programacin en el PIC . . . . . . . . . . . . . . . . . . o 4.9. Solucin no implementada . . . . . . . . . . . . . . . . . . . . . o 4.9.1. Principio de funcionamiento . . . . . . . . . . . . . . . . 4.9.2. Clculo de probabilidad . . . . . . . . . . . . . . . . . . a 4.9.3. Inconveniente . . . . . . . . . . . . . . . . . . . . . . . . 4.10. Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cap tulo 5. Mdulos exteriores o 5.1. Introduccin . . . . . . . . . o 5.2. Marco terico . . . . . . . . o 5.2.1. Protocolo Ir . . . . . 5.2.2. Protocolo RS232 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 78 80 81 81 82 86 93 93 95 95 95 96 96 97 97 98 98 98 98 99 99 99 100 100 101 101 103 103 104 104 104 106 107 108 109 110 110 111 111 118 7

INDICE 5.2.3. Amplicacin en clase A . . . o El PIC 16F628A . . . . . . . . . . . 5.3.1. Propiedades . . . . . . . . . . 5.3.2. Pinout . . . . . . . . . . . . . Fundamentos comunes . . . . . . . . 5.4.1. Pines de utilizacin genrica . o e 5.4.2. Direccionamiento . . . . . . . 5.4.3. Circuito de reset . . . . . . . Modulo exterior Ir . . . . . . . . . . 5.5.1. Proceso de implementacin . . o 5.5.2. Desarrollo nal . . . . . . . . 5.5.3. Puertos adicionales de I/O . . 5.5.4. Interrupciones utilizadas . . . Mdulo exterior RS232 . . . . . . . . o 5.6.1. Consideraciones . . . . . . . . 5.6.2. Puertos adicionales de I/O . . 5.6.3. Interrupciones utilizadas . . . Mdulo exterior de salidas digitales . o 5.7.1. Consideraciones . . . . . . . . 5.7.2. Puertos adicionales de I/O . . 5.7.3. Interrupciones utilizadas . . . Mdulo exterior de entradas digitales o 5.8.1. Consideraciones . . . . . . . . 5.8.2. Puertos adicionales de I/O . . 5.8.3. Interrupciones utilizadas . . . Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 124 124 125 125 126 126 126 128 128 134 134 134 135 135 136 137 137 137 137 137 137 137 138 138 139

5.3.

5.4.

5.5.

5.6.

5.7.

5.8.

5.9.

Parte III - Conclusiones


Cap tulo 6. Mejoras pendientes 6.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . o 6.2. Mejoras relativas al bloque central . . . . . . . . . . . 6.2.1. Funcionalidad del reset por software . . . . . . 6.2.2. Universalidad de mdulos exteriores . . . . . . o 6.2.3. Aplicacin del protocolo Telnet . . . . . . . . o 6.2.4. Software de conguracin y rmware . . . . . o 6.2.5. Utilizacin del servidor FTP . . . . . . . . . . o 6.2.6. Compresin de archivos en el servidor HTTP . o 6.2.7. Interfaz grca de manejo . . . . . . . . . . . a 6.2.8. Aumento de la velocidad de transmisin . . . o 6.2.9. Escalabilidad de Rabbits y control central . . 6.3. Mejoras en los mdulos exteriores . . . . . . . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

141
142 . 142 . 142 . 142 . 143 . 143 . 143 . 144 . 144 . 144 . 144 . 145 . 145 8

INDICE 6.3.1. Generacin de una base de datos infrarroja . . o 6.3.2. Fuente de corriente para mdulo exterior Ir . . o 6.3.3. Alimentacin directa del bus . . . . . . . . . . o 6.3.4. Manejo de mayor cantidad de protocolos . . . 6.4. Mejoras de fabricacin . . . . . . . . . . . . . . . . . o 6.4.1. Proteccin ante inclemencias del ambiente . . o 6.4.2. Fabricacin de un circuito impreso . . . . . . o 6.4.3. Proteccin ante interferencia electromagntica o e 6.5. Referencias . . . . . . . . . . . . . . . . . . . . . . . Cap tulo 7. Cierre del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 145 145 146 146 146 146 147 147 148

Bibliograf a Parte IV - Anexos


Anexo A. Herramientas de gestin de proyecto o A.1. Introduccin . . . . . . . . . . . . . . . . . . o A.2. TWiki . . . . . . . . . . . . . . . . . . . . . A.3. Subversion TortoiseSVN . . . . . . . . . . A.4. UltraVNC . . . . . . . . . . . . . . . . . . . A.5. Pic Simulator IDE . . . . . . . . . . . . . . A.6. Referencias . . . . . . . . . . . . . . . . . . Anexo B. Esquemticos a Anexo C. Cdigos Fuentes o C.1. Introduccin . . . . . . . . . . o C.2. Cdigo ModRs232.asm . . . . o C.3. Cdigo ModIR.asm . . . . . . o C.4. Cdigo ModIN.asm . . . . . . o C.5. Cdigo ModOUT.asm . . . . o C.6. Cdigo IrAiwa.asm . . . . . . o C.7. Cdigo ArquitecturaRabbit.c . o C.8. Cdigo BotonEnviaCaracter.c o C.9. Cdigo Autenticacion.c . . . o C.10.Cdigo Leds.c . . . . . . . . . o C.11.Cdigo EnviaMail.c . . . . . . o C.12.Cdigo AutentiLeds.c . . . . . o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

150 156
. . . . . . 157 157 157 159 161 162 164 165 169 . 169 . 169 . 179 . 193 . 200 . 213 . 223 . 230 . 232 . 234 . 235 . 236

INDICE Anexo D. Hojas de datos, tablas y licencias D.1. Hojas de datos . . . . . . . . . . . . . . D.1.1. Microprocesador Rabbit 3000 . . D.1.2. Microprocesador PIC 16F628A . D.1.3. MAX232 . . . . . . . . . . . . . . D.1.4. MAX485 . . . . . . . . . . . . . . D.1.5. Compuerta NOR MC14001 . . . D.1.6. Multiplexor 74HC153 . . . . . . . D.1.7. Demultiplexor CD4555 . . . . . . D.1.8. Regulador LM7805 . . . . . . . . D.1.9. Transistor BC547 . . . . . . . . . D.1.10.Emisor Ir L53SF4BT . . . . . . . D.2. Tablas . . . . . . . . . . . . . . . . . . . D.2.1. Tabla RC5 . . . . . . . . . . . . . D.3. Licencias . . . . . . . . . . . . . . . . . . D.3.1. Licencia GNU . . . . . . . . . . . D.3.2. Licencia BSD . . . . . . . . . . . Anexo E.1. E.2. E.3. 240 . 240 . 240 . 240 . 240 . 240 . 240 . 240 . 241 . 241 . 241 . 241 . 241 . 241 . 241 . 241 . 241

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . .

E. Decodicacin infrarroja o 242 Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 o Decodicacin de los comandos . . . . . . . . . . . . . . . . . . 242 o Forma de onda de los comandos . . . . . . . . . . . . . . . . . . 244

10

Cap tulo 1 Proyecto


1.1.
1.1.1.

Introduccin o
Domtica y automatizacin o o

Los sistemas actuales integran informtica, automatizacin y nuevas teca o nolog La domtica trata de aplicar la tecnolog de la automatizacin y as. o a o el control al hogar. Seg n el diccionario Larrousede la Real Academia de u la Lengua Francesa, la domtica es el conjunto de servicios proporcionados o por sistemas tecnolgicos integrados, como el mejor medio para satisfacer estas o necesidades bsicas de seguridad, comunicacin, gestin energtica y confort, a o o e al servivio del hombre y de su entorno ms cercano. Ver [Domoticaviva, 2002]. a Basado en [DomoDesk, 2002], los dispositivos de un sistema pueden clasicarse en: Controlador: central en la cual reside la inteligencia y que gestiona el sistema. Actuador: dispositivo de salida capaz de recibir una orden del controlador y realizar una accin. o Sensor: equipo que constantemente monitorea el entorno con el objetivo de generar un evento a ser procesado por el controlador. Existen equipos que son controladores/sensores/actuadores al mismo tiempo, lo que permite disponer en un unico equipo de la inteligencia necesaria para medir una variable f sica, procesarla y actuar en consecuencia. La mayor de las soluciones del mercado, se construyen diferenciando los sensores a de los actuadores con el objetivo de aportar mayor exibilidad y menor precio de cara a la instalacin e integracin en una vivienda. o o Seg n [Wikipedia1, 2007], desde el punto de vista del sistema existen varias u arquitecturas posibles: 11

CAP ITULO 1. PROYECTO Arquitectura centralizada - un controlador centralizado recibe informacin de varios sensores, la procesa y genera comandos hacia otros actuao dores. Arquitectura distribuida - la inteligencia del sistema est distribuida ena tre mdulos sensores o actuadores. o Arquitectura mixta - sistemas descentralizados en cuanto a que disponen de peque os dispositivos capaces de adquirir y procesar la informacin n o de m ltiples sensores y transmitirlos al resto de los equipos distribuidos u en la vivienda.

Figura 1.1: Arquitecturas

1.1.2.

Protocolos

El intercambio de informacin y datos, as como tambin la comunicacin o e o entre sistemas, es la base de la teor de redes. En ingenier al lenguaje a a, que emplean los distintos elementos que componen las redes se lo denomina protocolo. Como denicin ms formal, se considera un protocolo de coo a municacin al conjunto de reglas que controlan la secuencia de mensajes que o ocurren durante una comunicacin entre entidades que forman una red. Ver o [Wikipedia2, 2007]. Las entidades son vistas como dispositivos electrnicos y o automatismos que interactan, o el software que permite su aplicacin. u o Suelen convertirse en estndares, los protocolos implementados en sistemas a de comunicacin que tienen gran impacto. Existen consorcios empresariales, o que tienen como propsito proponer recomendaciones de estndares que se o a deben respetar para asegurar la interoperabilidad de productos y sistemas. En este documento se especican los distintos protocolos que forman parte del proyecto, los cuales corresponden a especicaciones de capa f sica y apli12

CAP ITULO 1. PROYECTO cacin. La investigacin, el anlisis de los mismos y sus caracter o o a sticas permiti la concepcin e implementacin de la arquitectura multiprotocolar y los o o o mdulos exteriores. o

1.1.3.

Descripcin del sistema o

El sistema est constituido por un bloque central y al menos un mdulo a o exterior. El sistema es escalable hasta un mximo de 16 mdulos exteriores. Los a o datos arriban por la interfaz Ethernet, son procesados por el bloque central y luego transmitidos hacia los mdulos exteriores. La gura 1.2 muestra un o grco referido a la composicin del sistema. a o

MDULO EXTERIOR 1 BLOQUE CENTRAL MDULO EXTERIOR 2

MDULO EXTERIOR n
Figura 1.2: Diagrama en bloques del sistema La personalizacin apunta al empleo de distintos mdulos exteriores cono o trolados por la misma interfaz, as como tambin a la utilizacin de varios de e o stos, del mismo tipo. Se establece la propiedad de plug & play, pudindose e e integrar y retirar del sistema la cantidad de mdulos exteriores que el usuario o desee.

1.2.

Motivacin o

Se ha optado por el desarrollo de un procesador de usos mltiples, el cual u ofrece la integracin de varias aplicaciones e interfaces en un mismo sistema. o Los productos disponibles en el mercado brindan soluciones para la automatizacin y control centralizado, manejan distintos protocolos integrados o dentro de un mismo sistema, pero no permiten la minimizacin y personalo izacin del hardware y de las aplicaciones que son utilizadas (seg n la jerga de o u este proyecto, el uso y manejo de mdulos exteriores de acuerdo a las necesio dades de cada usuario). Asimismo, el dise o de stos productos corresponde a una solucin integran e o da dentro un mismo espacio f sico, situndolo prximo a los dispositivos a cona o trolar y teniendo como limitante la distancia mxima que soporta la conexin a o 13

CAP ITULO 1. PROYECTO f sica hacia cada uno de ellos. Se restringe el campo de accin de los protocolos o a la ubicacin del producto. o Es intensin, brindar al mercado un sistema de bajo costo, escalable y o personalizable, que presente la posibilidad de elegir los protocolos a emplear, con el objetivo que el usuario nal pueda congurar su producto para cada situacin en particular. Tambin es motivo de desarrollo, la ubicacin de los o e o mdulos exteriores a una distancia considerable del mdulo central y cerca de o o los equipos a controlar. De esta forma, es posible ubicar el mdulo central en un espacio dedicado y o los mdulos exteriores concurrentes con cada una de las aplicaciones deseadas. o Por ejemplo: ubicar el mdulo exterior Ir prximo a una televisin. o o o localizar el bloque central adjunto a un router o modem ADSL. colocar el mdulo exterior de salidas digitales junto a reles que permiten o e la apertura de determinada puerta.

1.3.

Objetivos

Los objetivos del proyecto son: Estudio de una estructura multiprotocolo. Establecer un protocolo general para manejar los distintos mdulos exo teriores. Proporcionar escalabilidad y versatilidad de mdulos exteriores. o Posibilidad de comandar el sistema v Ethernet. a Obtener un prototipo funcionando (peque o, compacto y de fcil manen a jo). Su debida gestin. o

1.4.

Gestin del proyecto o

La gestin de un proyecto es el proceso por el cual se planica, dirige y o controla el desarrollo de un sistema dentro de un per odo de tiempo especico. Se destacan las siguientes etapas: 14

CAP ITULO 1. PROYECTO Fase de planicacin o


o

Se establece la forma en la cual el equipo de trabajo determinar: a alcance de las prestaciones planicacin temporal o coste

Denicin de objetivos o

Fase de ejecucin o
o o

Realizacin de actividades propiamente dichas del proyecto o Monitoreo del trabajo, analizando las diferencias entre el progreso y la planicacin inicial o

Fase de entregables
o

Culminacin de tareas: o documentacin o prototipo funcionando

Testeo del sistema

La interaccin entre la gestin y la realizacin del proyecto podr denirse o o o a seg n la gura 1.3 u El control, la coordinacin y las decisiones fueron etapas realizadas con la o ayuda del tutor del proyecto, para facilitar el cometido del know - how tcnico. e Adicionalmente de las responsabilidades de dise o e implementacin, se n o debi cumplir el papel de directores de proyecto. Una gestin errnea desemo o o boca, a menudo, en el no cumplimiento de los objetivos trazados. Las causas pueden ser omisiones realizadas durante el desarrollo del mismo, deniciones imprecisas de objetivos y decientes tcnicas de estimacin de tareas y tieme o pos. Una planicacin detallada da consistencia al proyecto y evita sorpresas. o Estas consideraciones fueron obtenidas de los informes [Wikipedia3, 2007] y [GETEC, 2005].

1.4.1.

Planicacin y desarrollo o

La siguiente es una breve descripcin del plan de trabajo llevado a cabo: o Las primeras dos semanas fueron dedicadas exclusivamente a la planicacin del proyecto. Se jaron las pautas generales a seguir, las etapas a o cubrir, objetivos, plazos y expectativas. Adems, se escogieron las herraa mientas a utilizar para realizar el seguimiento y la gestin. Tambin, se o e consider la viabilidad y los requisitos que deber satisfacer el sistema. o a 15

CAP ITULO 1. PROYECTO

Figura 1.3: Integracin entre la gestin y el preyecto o o Seguidamente, se comenz con la investigacin de los distintos sistemas o o embebidos con interfaz ethernet. Habiendo decidido la utilizacin de o una placa Rabbit como mdulo central, se estudiaron y establecieron o los primeros protocolos que fueron implementados. Se realizaron las pruebas correspondientes al manejo del stack de protocolos TCP/IP y a las aplicaciones concurrentes con los distintos puertos seriales de la placa Se discutieron, analizaron y profundizaron conceptos relevantes a la arquitectura multiprotocolar y al diseo de los mdulos exteriores. n o Localizando la atencin en cada mdulo, se program cada uno para que o o o cumpliera con las consideraciones preestablecidas. Se program la placa Rabbit y se veric que cumpliera con las condio o ciones del protocolo dise ado. n Finalmente, se teste y depur el sistema. o o

16

CAP ITULO 1. PROYECTO Cronograma

Figura 1.4: Cronograma de trabajo

17

CAP ITULO 1. PROYECTO

1.5.

Implementacin o

Habiendo determinado la magnitud del proyecto, realizado el anlisis y las a investigaciones correspondientes, a medida que se efectu la compra de los mao teriales y los componentes necesarios, se comenz con la implementacin de la o o solucin. o Cabe destacar que esta etapa retroaliment el anlisis y la investigacin, ya o a o que al desplegar las soluciones surgieron distintos inconvenientes que demandaron un nuevo estudio de las condiciones existentes, replanteando la teor a y realizando nuevas pruebas. En el Capitulo 4 se describe la forma en la cual la implementacin de la solucin terica no tuvo soporte prctico, de aqu la o o o a necesidad de volver a pensar una nueva alternativa.

1.6.

Estructura del documento

El documento se encuentra dividido en cuatro partes. Las partes expresan una temtica abarcada durante el desarrollo del proyecto. Cada cap a tulo abarca la etapa de investigacin y anlisis seguida de la implementacin, las o a o pruebas y las conclusiones correspondientes. Para la primera etapa, se describe una base terica, que busca la consistencia y coherencia de la solucin. o o Se dispone de 7 cap tulos y 9 apndices. Ellos son: e Cap tulo 1. Proyecto Realiza una introduccin del proyecto presentando las motivaciones, objeo tivos y aspiraciones del mismo. Se describe el proceso de gestin y la planio cacin del plan de trabajo. o Cap tulo 2. Sistemas embebidos con interfaz Ethernet Describe los distintos sistemas embebidos con interfaz Ethernet considerados para el desarrollo del proyecto. Se emplean argumentos y consideraciones para la eleccin de la placa RCM3700 de Rabbit Semiconductor como el mduo o lo central del sistema. Cap tulo 3. Desarrollando con Rabbit Profundiza en las prestaciones del Rabbit RCM3700, especicando claramente posibilidades de desarrollo en Dynamic C. Se analizan las librer as concurrentes a los objetivos del proyecto y se aclara la estrategia de imple-

18

CAP ITULO 1. PROYECTO mentacin seguida durante el transcurso del mismo. Se adjunta una descripo cin de las pruebas realizadas. o Cap tulo 4. Arquitectura multiprotocolar Puntualiza plenamente la concepcin de la arquitectura multiprotocolar, o denindola capa por capa, en sus 3 niveles. Detalla su implementacin en el e o Rabbit, como tambin, en los mdulos exteriores. Sobre le nal del cap e o tulo se expone una solucin que no fue implementada por limitaciones del hardware o elegido. Cap tulo 5. Mdulos exteriores o Detalla las consideraciones efectuadas para el desarrollo de cada mdulo o exterior, precisando consideraciones de hardware y aspectos recurrentes a la programacin de los PIC. Se especican, en profundidad, los avances para loo grar el control sobre el protocolo Ir. Cap tulo 6. Mejoras pendientes Este cap tulo es una revisin de los temas pospuestos para futuras mejoras o de la solucin. Especica mejores relativas al bloque central, los mdulos exo o teriores y la fabricacin del producto. o Cap tulo 7. Conclusiones y cierre del proyecto Resalta las conclusiones obtenidas, la evaluacin nal del trabajo y las leco ciones durante el transcurso del proyecto. Bibliograf a Conceptualiza las distintas fuentes que sirvieron como base para el desarrollo del proyecto. Apndice A. Herramientas de gestin de proyecto e o Se describen las herramientas utilizadas durante el proyecto que se emplearon en benecio de la gestin del mismo. o Apndice B. Esquemticos e a Contiene los esquemticos completos del procesador para control multiproa tocolar. 19

CAP ITULO 1. PROYECTO

Apndice C. Cdigo fuente e o Formaliza la implementacin en la placa Rabbit y en PIC por medio del o cdigo fuente. El lenguaje de programacin es C para Rabbit y Assembler para o o el PIC. Apndice D. Hojas de datos, tablas y licencias e Se ala distintos links para las hojas de datos de todos los componentes menn cionados en la documentacin. Tambin, adiciona un enlace especicando las o e licencias que permiten la utilizacin de las herramientas de gestin de proyecto. o o Apndice E. Decodicacin infrarroja e o Se especica la decodicacin de los comandos infrarrojos del radiograbador o Aiwa y sus correspondientes formas de onda.

1.7.

Referencias

[GETEC, 2005] GETEC. 2005.Etapas de un proyecto .[online] Disponible en Internet: <http://www.getec.etsit.upm.es/docencia/gproyectos/ planicacion/etapas.htm> [DomoDesk, 2002] DOMODESK SL. 1998.Domtica La L o nea Violeta.[online] Disponible en Internet: <http://www.domodesk.com/ content.aspx?co=51&t=21&c=43> [Domoticaviva, 2002] DOMOTICAVIVA. 2002.Qu es la domtica.[online] e o Disponible en Internet: <http://www.domoticaviva.com/portada/ quesdomotica.htm> [Wikipedia1, 2007] WIKIPEDIA. 2007.Domtica .[online] Disponible en Ino ternet: <http://es.wikipedia.org/wiki/Dom %C3 %B3tica> [Wikipedia2, 2007] WIKIPEDIA. 2007.Protocolo de red .[online] Disponible en Internet: <http://es.wikipedia.org/wiki/Protocolo de red> [Wikipedia3, 2007] WIKIPEDIA. 2007.Proyecto .[online] Disponible en Internet: <http://es.wikipedia.org/wiki/Proyecto>

20

Parte I Sistemas Embebidos

Cap tulo 2 Sistemas Embebidos con interfaz Ethernet


2.1. Introduccin o

Los microcontroladores de 8 bits generalmente son fciles de usar pero a habitualmente tienen poca memoria interna y su velocidad de procesamiento es limitada para algunas aplicaciones. Estos, pueden acceder a ms memoria, a pero ciertas veces es insuciente. La conexin con chips de decodicacin ocuo o pa espacio de circuito impreso y lleva tiempo de desarrollo y depurado, lo que implica un incremento de costos en el producto nal. Los microcontroladores de 16 bits son ms dif a ciles de utilizar, soportan ms a memoria, pero a veces tampoco es suciente. Por otra parte, suelen ser ms a caros y la conexin entre memorias y perifricos a los buses suele traer probo e lemas en ambientes donde el ruido y la interferencia estn presentes. Adems, a a necesitan chips de decodicacin con las caracter o sticas asociadas que estos implican. Procesadores de 32 bits o ms suelen ser ms complejos de usar. No obsa a tante, en velocidad y capacidad de memoria superan a las otras familias de microporcesadores. El trabajo con DSP (Digital Signal Processor, sistema basado en un microprocesador que posee un juego de instrucciones, un hardware y un software optimizados para aplicaciones que requieren operaciones numricas a muy ale ta velocidad) es engorroso, el diseo del hardware suele ser muy complicado, n necesitando chips muy veloces que consumen ms corriente, arduos circuitos a de wait-states y memorias muy agiles. Tendiendo un claro panorama de las metas propuestas, se comenz por reo 22

CAP ITULO 2. SISTEMAS EMBEBIDOS CON INTERFAZ ETHERNET alizar una investigacin con el objetivo de determinar el corazn del sistema: o o el dispositivo de trabajo adecuado que funcionar como bloque central. a Los sistemas embebidos son dispositivos utilizados para controlar o asistir la operacin de diversos equipamientos. Su hardware, se dise a normalmente o n a nivel de chips o de interconexin de PCBs, buscando la m o nima circuiter a y el menor tama o para una aplicacin particular. Ver [Wikipedia4, 2007]. A n o diferencia de los computadores de propsito general, un sistema embebido reo aliza una serie de tareas determinadas para cumplir unos requerimientos muy espec cos. No esta dentro del alcance del proyecto resolver la comunicacin entre la o interfaz Ethernet y los distintos protocolos a nivel de sistema operativo, la solucin en capas bajas debe estar ya implementada. Por lo cual, se consido er unicamente el uso de sistemas embebidos con interfaz Ethernet ya que o stos cuentan con un desarrollo avanzado y permiten lograr funcionalidades y e aplicaciones sobre una base de directivas estables. Tambin, se investig el protocolo OSGI y se encontr que se correspond e o o a plenamente con los objetivos trazados, este podr establecer la comunicacin a o correspondiente entre los mdulos exteriores y la red externa, tomando como o base una plataforma de software ya resuelta. Como criterios de evaluacin para la eleccin del sistema embebido se o o tomaron en cuenta: prestaciones y caracter sticas de las distintas placas precios consideraciones elocuentes a la posibilidad de implementacin y desarroo llo sobre el mismo protocolos de operacin que sirvan como plataforma a futuras aplicao ciones

2.2.
2.2.1.

Marco terico o
Protocolo OSGI

La Open Service Gateway Initiative (OSGI) es una asociacin de empresas o creada en marzo de 1999 con el objetivo de denir un estndar abierto para a el desarrollo y dise o de pasarelas residenciales que sean capaces de brindar n

23

CAP ITULO 2. SISTEMAS EMBEBIDOS CON INTERFAZ ETHERNET m ltiples servicios en el mercado residencial y automotriz. Las pasarelas resiu denciales son dispositivos que conectan las infraestructuras de telecomunicaciones de la vivienda (datos, control, automatizacin, etc.) a una red p blica o u de datos. Seg n [Casadomo, 1999]. u OSGI ofrece una arquitectura completa y una solucin extremo a extremo o que cubre todas las necesidades del proveedor de servicios, del cliente y de los distintos dispositivos instalados en la vivienda. Estudio basado en [OSGI, 2005], [IBM, 2003] y [OSGI, 2004]. Descripcin o No escoge una unica tecnolog de conexin en red para los mltiples dis a o u positivos de la vivienda, siendo su propsito denir una interfase com n para o u todos ellos dejando la responsabilidad a los fabricantes de construir controladores adecuados. Dene una plataforma de software basada en Java, independiente del hardware. Los componentes de software son librer o aplicaciones que dinmicaas a mente pueden descubrir y usar otros protocolos. Las especicaciones de OSGI son extensamente aplicables, ya que conforman una capa peque a que permite n m ltiples componentes basados en JavaTM , para cooperar ecientemente en u una sola mquina virtual de Java (JVM). a Las pasarelas OSGI pueden utilizar distintas tecnolog as: conexiones inalmbricas: IrDa, HomeRF, IEEE 802.11x., Bluetooth, etc. a cables telefnicos: HomePNA, etc. o redes de baja tensin: HomePlug, Lonworks, EIB/KNX, etc. o otras conexiones: Ethernet, USB, etc. distintos protocolos: HAVI, UPnP, Jini, etc. Caracter sticas Detalla un conjunto de APIs (Application Program Interfaces) que son el principal soporte de los servicios. Los rasgos principales que denen la especicacin son: o Estandarizada: poseer una plataforma com n para los fabricantes de u equipos y los proveedores de servicios e impedir que un unico fabricante monopolice el mercado. 24

CAP ITULO 2. SISTEMAS EMBEBIDOS CON INTERFAZ ETHERNET Abierta: no se dene ninguna estructura de red domtica ni se decreta o el uso de ning n protocolo ni tecnolog en concreto. La unica condicin u a o es que las tecnolog deben ser compatibles con las APIs predenidas. as Fiable: debe funcionar las 24 hrs. del d sin ca a das del sistema. Segura: obliga un nivel de seguridad e integridad con el objetivo que los proveedores ofrezcan m ltiples servicios sobre la misma plataforma sin u interferirse entre ellos. Escalable: la operacin de las distintas pasarelas debe ser exible, pero sonalizable y escalable acorde a las nuevas necesidades del proveedor del sistema. Arquitectura

Figura 2.1: Arquitectura OSGI

Funcionamiento Los bundles pueden instalarse remotamente, comenzando, parando y desintalandose sin requerir un reboot y proporcionan una determinada funcionalidad a otros paquetes o directamente al usuario nal. Estos, residen sobre un elemento central llamado Plataforma de Servicios OSGI situada en la red local y conectada al proveedor de servicios a travs de e una pasarela en la red del operador; este elemento permite la interaccin entre o redes de dispositivos que empleen distintas tecnolog para la comunicacin. as o

25

CAP ITULO 2. SISTEMAS EMBEBIDOS CON INTERFAZ ETHERNET El registro de servicio act a como un servicio de directorios en el que los u bundles se registran y pueden localizar otros bundles para articular otros servicios. En la especicacin se denieron APis bsicas: logging, servidor HTTP o a y DAS (Device Access Specication). Con el DAS se denen los bundles de red - encargados de descubrir nuevos dispositivos y protocolos, empleando el protocolo de descubrimiento-, una vez alcanzada esta informacin, deben adquirirse del proveedor de servicios el buno dle de dispositivo correspondiente al dispositivo declarado que se instalar en a la plataforma y se registrar en el Registro de Servicios OSGI, creando la a asociacin correspondiente con el proveedor del servicio para que puedan ino teractuar.

2.3.

Placas Rabbit

Son placas fabricadas por la empresa Rabbit Semiconductor. Considerando las prestaciones brindadas y el equilibrio precio/funcionalidad se investig el o mdulo RCM3700 y el RCM3720 para su utilizacin. o o

2.3.1.

RCM3700

Mdulo Ethernet de bajo costo basado en el procesador Rabbit 3000 a o 22.1 MHz. Ethernet 10Base-T, RJ-45. Hasta 512K Flash / 512K SRAM. 1MB de Memoria Flash Serie. Conexin para bater externa. o a 33 E/S digitales / Bus de E/S alternado. 4 puertos serie (IrDA, HDLC, asynch, SPI). Tama o: 7.5 cm x 3.0 cm x 2.2 cm. n

2.3.2.

RCM3720

Mdulo Ethernet de bajo costo basado en el procesador Rabbit 3000 a o 22.1 MHz.

26

CAP ITULO 2. SISTEMAS EMBEBIDOS CON INTERFAZ ETHERNET Ethernet 10Base-T, RJ-45. 512K Flash y 256K SRAM. 1MB de Memoria Flash Serie. Conexion para bateria externa. 33 E/S digitales / Bus de E/S alternado. 4 puertos serie (IrDA, HDLC, asynch, SPI). Tama o: 7.5 cm x 3.0 cm x 2.2 cm. n

2.3.3.

Dynamic C

Dynamic C es un software de desarrollo en lenguaje C industrialmente probado. Opera en cualquier PC bajo Windows 95, 98, NT, ME, 2000 y XP e incluye: Rpido compilador C que permite compilaciones de un solo paso, enlace a y bajada al destino; varias funciones en las librer de cdigo fuentes y as o un editor fcil de utilizar. a Debugging en tiempo real de completa prestacin a nivel fuente y/o o ensamblaje. Un cable inteligente, provisto con el kit de desarrollo, que conecta el puerto serial de la PC con uno de los puertos seriales Rabbit mientras el procesador esta corriendo en el sistema destino, quitando la necesidad de emuladores, simplicando de esta forma los desarrollos. El desarrollo de software con Dyanamic C es sencillo: un programa puede ser escrito en cdigo C, Assembler o intermezclado de C con Assembler. o Los programas pueden ser escritos, compilados y testeados sin la necesidad de salir del ambiente de desarrollo Dynamic C. Prestaciones Est espec a camente confeccionado para sistemas dedicados. Se puede compilar un programa y rutinas de librer aplicables y bajar simultneamente el as a cdigo compilado hacia el sistema destino de forma muy rpida. Breakpoints, o a single stepping, observaciones de variables en un programa en ejecucin son o soportados para ayudar a debbugear. Tambin, incluye poderosas extensiones e de lenguaje para multitareas cooperativas, gran velocidad en punto otante, librer matemticas y controladores para los perifricos integrados de Rabbit. as a e

27

CAP ITULO 2. SISTEMAS EMBEBIDOS CON INTERFAZ ETHERNET Producto RCM3700 RCM3720 Development kit Development kit Precio en U$S por unidad 512 KB RAM and 512 KB Flash 59 256 KB RAM and 512 KB Flash 49 con placa RCM3700 299 con placa RCM3720 299 Tabla 2.1: Precios placas Rabbit Posee un stack de protocolos TCP/IP completo. Sus capacidades incluyen Ethernet, PPP, cliente DHCP, http (incluye facilidades para SSI, rutinas CGI, cookies y autenticaciones bsicas), SMTP, POP3, FTP y TFTP. a Descripcin o

2.3.4.

Precios

Ver tabla 2.1 Los precios estan basados segn [Rabbitsemiconductor1, 2007]. u

2.4.

Placas Digi

Son placas fabricadas por la empresa Digi International. Ver [Digi, 2006].

2.4.1.

ConnectCore 7U

Considerando las prestaciones brindidas y el equilibrio precio / funcionalidad se investig unicamente el mdulo ConnectCore 7U para su utilizacin. o o o

2.4.2.

Prestaciones

Procesador de 32 bits Reloj de 55 MHz. 16 MB de memoria RAM 8 KB de memoria EEPROM Hasta 8 MB de memoria ash Placa Ethernet 10/100 base-T 2 puertos USART y SPI Trabaja sobre un sistema operativo Linux 28

CAP ITULO 2. SISTEMAS EMBEBIDOS CON INTERFAZ ETHERNET 2 timers de 27 bits. Interface JTAG on-board Tama o: 6.28 cm x 1.85 cm x 1.04 n

2.4.3.

Consideraciones

Para desarrollar sobre la placa se necesita la plataforma LxNETES 2.3 (linux) o la plataforma NET+OS 6.0. Cada una de estas plataformas est dea sarrollada en un development kit. El LxNETES 2.3 incluye: Programacin en ash o UClinux kernel v2.4.22 GNU development tool Sistema de archivos que soporta CRAMFS, JFFS2, NFS. Servicio PPP Cliente Samba Web server embebido Debugging via Ethernet o serial Cdigos de ejemplo y documentacin o o El NET+OS 6.0 incluye: Debugging via JTAG GNU development tool Stack de protocolos TCP/IP Asignacin IP universal (Static IP, DHCP, BOOTP, auto -ip) o Web server embebido SSL/TLS w/DES, 3DES, AES Compilador HTML a C Cdigos de ejemplo y documentacin o o Los kits de desarrollo no incluyen la placa, por lo cual para el desarrollo de una aplicacin espec o ca se debe comprar la placa ms el kit de desarrollo a espec co.

29

CAP ITULO 2. SISTEMAS EMBEBIDOS CON INTERFAZ ETHERNET Producto ConnectCore 7U Descripcin o 16 MB SDRAM, 2 MB ash 16 MB SDRAM, 8 MB ash 32 MB SDRAM, 16 MB ash, 180 MHz LxNETES Linux NET+OS Tabla 2.2: Precios placas Digi Precio en U$S por unidad 99 159 49 299 1495

Development kits

2.4.4.

Precios

Ver tabla 2.2 Los precios estan basados segn [Mouser, 2006]. u

2.5.

Placas PC104

El estndar PC/104 fue establecido en 1992 por 12 compa El bus ISA, a nas. establecido por la especicacin IEEE P996, est completamente soportado o a por la tecnolog PC/104. Se investig teniendo en cuenta [Technologic, 2006] a o y [PC/104, 2006].

2.5.1.

TS-7200 ARM

Considerando las prestaciones brindadas y el equilibrio precio / funcionalidad se investig unicamente la placa TS-7200 ARM SBC para su utilizacin. o o

2.5.2.

Prestaciones

La TS-7200 es compacta, con caracter sticas completas de Single Board Computer (SBC) basada sobre la CPU del Cirrus EP9302 ARM9. Las caracter sticas del EP9302 y un avanzado procesador de 200 Mhz con una unidad de gerencia de memoria (MMU) permiten soportar sistemas operativos de alto nivel, tales como Linux, Windows CE y otros sistemas operativos embebidos. El propsito general del procesador es proveer un conjunto estndar de perifrio a e cos en la placa y un conjunto completo de sistemas Technologic que ofrecen los perifricos v el estndar PC/104. e a a Las caracter sticas ofrecidas son: TS-Linux sistema operativo instalado. 200 MHz ARM9 CPU con MMU 30

CAP ITULO 2. SISTEMAS EMBEBIDOS CON INTERFAZ ETHERNET 8 MB memoria ash on-board (bootea a Linux) 32 MB RAM True IDE Compact Flash socket (socket para memoria adicional) 2 puertos USB 2.0 compliant Full Speed host (OHCI) - 12 Mbps max 2 puertos seriales 10/100 Megabit Ethernet port 20 E/S digitales Watchdog Timer PC/104 bus de expansin o SPI bus interface Interfaz alfanumrica LCD e Single +5VDC,450 mA Tama o: 9.5 cm x 11.25 cm n

2.5.3.

Consideraciones

Para desarrollar sobre la placa se necesita un Kit de desarrollo espec co: Caracteristicas: 256 or 512 MB memoria ash ejemplos de cdigos y rutinas de test o Lector de memorias USB 5 VDC power supply Cable de adaptacin DB9 - 10 pines o Cables para varias conexiones (LCD, Keypad, etc.) CD con cdigos fuente, manuales, ejemplo de cdigo, etc. o o El kit de desarrollo no incluye la placa, por lo cual para el desarrollo de una aplicacin espec o ca se debe comprar la placa ms el kit de desarrollo. a

31

CAP ITULO 2. SISTEMAS EMBEBIDOS CON INTERFAZ ETHERNET Producto TS-7200 SBC Descripcin o 32 MB RAM and 8 MB Flash 32 MB RAM and 16 MB Flash USB 802.11g wireless network interface 512 MB Compact Flash Card Tabla 2.3: Precios placas PC/104 Precio en U$S por unidad 149 165 35 105

2.5.4.

Precios

Ver tabla 2.3 Los precios estn basados seg n [Technologic, 2006] a u

2.6.

Comparacin de placas o

Valorando las diferentes opciones y visualizando las caracter sticas de las placas se tomaron ciertos criterios para establecer la comparacin entre las o mismas: precio, dimensiones, caracter sticas y soporte ante fallas.

2.6.1.

Precio

Las placas Rabbit son las ms baratas, no solamente por el costo de la a placa en s sino tambin por el kit de desarrollo de Rabbit que incluye la , e placa. Vale la pena recalcar que sta es una gran consideracin ya que no e o es posible desarrollar alguna solucin sin un kit de desarrollo. Las limitantes o econmicas del proyecto estn denidas por la Universidad ORT. o a

2.6.2.

Dimensiones

Como la nalidad del sistema embebido consiste en ser el corazn del o sistemavale establecer que sus dimensiones debern ser peque as. Tanto las a n placas Rabbit como Digi poseen dimensiones peque as, la dimensin de la n o PC/104 es la mayor.

2.6.3.

Caracter sticas

Cuanto mayores son las capacidades de las placas, mayor es el rendimiento a sacarles. Visto y considerando los objetivos, no es necesario el desarrollo sobre una SBC, las cuales poseen prestaciones excesivas para los alcances de este proyecto.

32

CAP ITULO 2. SISTEMAS EMBEBIDOS CON INTERFAZ ETHERNET Cabe resaltar que tanto las placas Digi como la PC/104 corren sobre un sistema operativo basado en Linux. Rabbit es un microcontrolador que no est desarrollado sobre un sistema operativo booteable. a Las capacidades de memoria de Digi como la de PC/104 son ampliamente superables a Rabbit, pero poseer un contenido de memoria excesivo, no es una apreciacin valorable para el desarrollo del proyecto. Como los mdulos exo o teriores poseen su inteligencia, el uso de la memoria est distribuido entre a dichos mdulos y el bloque central. o La velocidad de procesamiento es una consideracin importante, el proceo sador de Rabbit trabaja a una velocidad de 22.1 MHz, Digi a 46 o 55 MHz y la PC/104 a 200MHZ. Cuanto mayor velocidad, ms rpido es la ejecucin de a a o instrucciones, pero 22.1 MHZ es una velocidad de procesamiento considerable.

2.6.4.

Soporte

Navegando en Internet es posible encontrar aplicaciones desarrolladas para las tres placas. Tanto Rabbit como Digi ofrecen como valor agregado a su producto un support que brinda ayuda las 24 hrs., pudiendo ser contactado tanto por e-mail como por telfono. A la hora de considerar el desarrollo de e un producto es bueno valorar la posibilidad externa de ayuda ya que cualquier impedimento en el desarrollo puede acarrear una prdida de tiempo considere able en el avance del proyecto. PC/104 ofrece ayuda en distintos foros para los desarrolladores. Digi y Rabbit brindan un servicio ms serio que PC/104, ya que dedican recursos de a sus compa para brindar un Tech Support amigable y accesible. nas

2.6.5.

Por qu Rabbit? e

La primera consideracin fue no excederse de los recursos econmicos brindao o dos por la Universidad ORT para la realizacin del proyecto. o Los procesadores de la linea Rabbit unican muchas de ventajas: El Rabbit es un microprocesador: su bus es accesible. Su bus de direcciones es de 20 bits, lo que implica 1MB de direccionamiento posible. Su bus de datos es de 8 bits: menos l neas de conexin. o

33

CAP ITULO 2. SISTEMAS EMBEBIDOS CON INTERFAZ ETHERNET Su arquitectura es compatible con el Z-80: conocido, con gran cantidad de software disponible. Es un microcontrolador: I/O ports, USARTs (seriales), timers, WDT (watch-dog), RTC (real-time clock), todos inclu dos en un chip. Serial boot: siempre es posible cargar la ultima versin, sin parches. o Slave port: facilita la interconexin de procesadores, incluso puede bootear o del slave port. Su performance es comparable a la de muchos DSP del mercado. El kit de desarrollo viene acompaado por un potente entorno de pron gramacin C con bibliotecas de funciones, soporte multitarea, TCP/IP o (sin regal as), e ICD (In-Circuit Debugging). Las dimensiones de la placa son pequeas. n Core Modules Si bien el procesador no posee memoria interna, en vez de comprar el procesador por separado y disear la placa de circuito impreso, existe la posibilidad n de adquirir los core-modules: mdulos pre-armados con cierta capacidad de o memoria ya instalada, pines para la conexion con el mundo exterior, contro lador Ethernet y jack RJ-45. Estos mdulos, son un recurso probado en amo bientes conictivos, econmicos y de fcil implementacin: pueden soldarse o o a o conectarse con un zcalo a la placa principal, en el cual el diseador no necesita o n preocuparse por los buses ni por el timming, sino que puede trabajar con las entradas y salidas como en cualquier microcontrolador. En caso de necesitar mas memoria para el proyecto, en vez de portar el dise o a un controlador de gama superior, simplemente se puede remplazar el n modulo por uno de mayor capacidad.

TCP/IP sobre Ethernet Esta es la caracteristica ms interesante del producto. Cualquier desarroa llador podr elegir un procesador, desarrollar la interfaz Ethernet, conseguir a: un stack TCP/IP reducido que ha sido recortado y compactado para caber en memoria; con la placa Rabbit slo es necesario conectar el patch-cord y o comenzar a desarrollar en base a librer predenidas. as

34

CAP ITULO 2. SISTEMAS EMBEBIDOS CON INTERFAZ ETHERNET Dynamic C El compilador es una implementacin de C con el agregado de funciones o espec cas para Rabbit, soporte multitarea cooperativo, y bibliotecas de funciones que resuelven gran cantidad de tareas en aplicaciones t picas. S ntesis En resumen, se trata de un micro de propositos generales, con gran cantidad de puertos de I/O, posibilidad de conexion al bus, alta velocidad de operacin, amplia capacidad de RAM y Flash, programacin en C, con moo o dulos pre armados que facilitan la velocidad de desarrollo y un gran stack de directivas TCP/IP para implementar. Habiendo realizado un balance en base a prestaciones/precios, y contemplando exhaustivamente las limitaciones econmicas del proyecto se consider no o o adquirir una placa de desarrollo con un sistema operativo basado en Linux o Windows. Examinando las distintas opciones y la investigacin llevada a cabo, o se opto por la compra del sistema embebido RCM3700 de la empresa Rabbit Semiconductor. No se consider la implementacin del protocolo OSGI, tal cual desarroo o llado, ya que la placa RCM3700 no corre sobre un sistema operativo. No es posible instalarle una Java Virtual Machine. Segn el contacto establecido con u Tom Finn (gerente de ventas de Rabbit Semiconductor para Amrica Latina), e la unica forma de implementar OSGI ser realizar una mquina virtual capaz a a de interpretar byte core de Java, lo cul no es muy eciente para la placa Raba bit. El estudio exhaustivo de las caracter sticas y funciones de Rabbit, y las pruebas realizadas se encuentran documentadas en el cap tulo 3.

2.7.

Referencias

[Casadomo, 1999] Casadomo Soluciones S.L. 1999.Pasarela Residenical.[online] Disponible en Internet: <http://www.casadomo.com/ noticiasDetalle.aspx?c=49&m=15&idm=60&pat=14&n2=14> [Digi, 2006] Digi. 1996 .ConnectCore 7U.[online] Disponible en Internet: <http://www.digi.com/products/embeddedsolutions/devkits/ connectcore7udevkit.jsp>

35

CAP ITULO 2. SISTEMAS EMBEBIDOS CON INTERFAZ ETHERNET [IBM, 2003] IBM. Managed mobile clients with OSGi: Managed smart clients.[online] Disponible en Internet: <http://www-128.ibm.com/developerworks/library/wi-osgi/index.html> [Mouser, 2006] Mouser Electronics. 1996 .Digi International.[online] Disponible en Internet: <http://www.mouser.com/digi/> [OSGI, 2005] The OSGI Alliance. 2000 .OSGi Service Platform Core Specication.[online] Disponible en Internet: <http://www.osgi.org> [OSGI, 2004] The OSGI Alliance. 2000 .About the OSGi Service Platform.[online] Disponible en Internet: <http://www.osgi.org> [PC/104, 2006] PC/104 Embedded PC Modules. 1992 . PC/104 Consortium.[online] Disponible en Internet: <http://www.pc104.org/> [Rabbitsemiconductor1, 2007] Rabbit Semiconductir. 1999 .RCM3700 RabbitCore.[online] Disponible en Internet: <http://www.rabbitsemiconductor.com/ products/rcm3700/> [Technologic, 2006] Technologic Systems. 1984 .TS-7200.[online] Disponible en Internet: <http://www.embeddedarm.com/epc/ ts7200-spec-p.php#7200pricing> [Wikipedia4, 2007] Wikipedia. 2007.Microprocesadores y sistemas embebidos .[online] Disponible en Internet: <http://es.wikipedia.org/wiki/ Sistema integrado#Microprocesadores y sistemas embebidos>

36

Cap tulo 3 Desarrollando con Rabbit


3.1. Introduccin o

Aprender una nueva tecnolog presenta un gran desaf dominar las herraa o, mientas de desarrollo requiere tiempo, y comprender la documentacin tiene o sus dicultades. Desarrollar, investigar, y volver a desarrollar, es la base de la ingenier Una vez adquirida la modalidad de trabajo (objetivos - implea. mentacin - programacin), la automatizacin de las mejores prcticas en el o o o a ciclo de vida del desarrollo del prototipo, concluyen en una labor concisa y efectiva. Habiendo tomado la decisin y efectuado la compra del RCM3700, se proo cedi al estudio profundo de sus prestaciones. Dicho estudio, abarc lecturas de o o manuales, notas de aplicacin y referencias. Conjuntamente con los ejemplos o de base, se comenz a desarrollar. o Si bien la documentacin de Rabbit es precisa y correcta, es necesario o recorrerla varias veces para poder encontrar lo que se busca, y comprender la mxima expresin de cada aplicacin. No es la nalidad de este cap a o o tulo reproducir una copia del manual, sino que este intenta resaltar las propiedades ms signicativas de la placa, las cuales llevaron a la correcta implementacin a o de la solucin. o Resulta sustancial mantener una determinada estrategia para concordar entre el desarrollo y los objetivos del proyecto. Este cap tulo intenta explicar el camino seguido y sus avances correspondientes, nalizando con una serie de pruebas que denotan peque as funcionalidades del bloque central. n El marco terico busca comprender y justicar las prestaciones elegidas, o focalizar el desarrollo por una via espec ca y ser soporte de consulta ante inconvenientes de implementacin. Se estudiaron los protocolos HTTP, SMTP, o 37

CAP ITULO 3. DESARROLLANDO CON RABBIT HTML y Telnet.

3.2.
3.2.1.

Marco terico o
Protocolo HTTP

El Protocolo de Transferencia de HiperTexto (Hypertext Transfer Protocol) es un protocolo cliente-servidor que articula los intercambios de informacin o entre los clientes Web y los servidores HTTP. Desde el punto de vista de las comunicaciones, est soportado sobre los servicios de conexin TCP/IP, a o y funciona de la misma forma: un proceso servidor escucha en un puerto de comunicaciones TCP (por defecto, el 80), y espera las solicitudes de conexin o de los clientes Web. Una vez que se establece la conexin, el protocolo TCP o se encarga de mantener la comunicacin y garantizar un intercambio de datos o libre de errores. HTTP se basa en sencillas operaciones de solicitud/respuesta. Un cliente establece una conexin con un servidor y env un mensaje con los datos de la o a solicitud. El servidor responde con un mensaje similar, que contiene el estado de la operacin y su posible resultado. Todas las operaciones pueden adjuntar o un objeto o recurso sobre el que actan. Cada objeto Web (documento HTML, u chero multimedia o aplicacin CGI) es conocido por su URL. o

Etapas de una transaccin HTTP o Cada vez que un cliente realiza una peticin a un servidor, se ejecutan los o siguientes pasos: Un usuario accede a una URL, seleccionando un enlace de un documento HTML o introducindola directamente en el campo Location del cliente e Web. El cliente Web descodica la URL, separando sus diferentes partes. Identica el protocolo de acceso, la direccin DNS o IP del servidor, el posio ble puerto opcional (el valor por defecto es 80) y el objeto requerido del servidor. Se abre una conexin TCP/IP con el servidor, llamando al puerto TCP o correspondiente. Se realiza la peticin. Se env el comando necesario (GET, POST, o a HEAD,. . . ), la direccin del objeto requerido (el contenido de la URL o 38

CAP ITULO 3. DESARROLLANDO CON RABBIT que sigue a la direccin del servidor), la versin del protocolo HTTP emo o pleada (casi siempre HTTP/1.0) y un conjunto variable de informacin, o que incluye datos sobre las capacidades del browser y datos opcionales para el servidor El servidor devuelve la respuesta al cliente como un cdigo de estado y o el tipo de dato MIME de la informacin de retorno, seguido de la propia o informacin. o Se cierra la conexin TCP. o Ejemplo de un dilogo HTTP a Para obtener un recurso con el URL http://www.tuhost.example/index.html. Se abre un socket con el host www.tuHost.example, puerto 80 que es el puerto por defecto para HTTP. Se env un mensaje en el estilo siguiente: a GET /index.html HTTP/1.0 From: yo@miHost.example User-Agent: HTTPTool/1.0 [L nea en blanco] La respuesta del servidor est formada por encabezados seguidos del recura so solicitado, en el caso de una pgina web: a HTTP/1.0 200 OK Date: Fri, 31 Dec 2003 23:59:59 GMT Content-Type: text/html Content-Length: 1221 <html> <body> <h1>Pgina principal de tuHost</h1> a (Contenido) . . . </body> </html> Al recibirse la respuesta, el servidor cierra la comunicacin. Cabe se alar o n que los principales navegadores web no muestran al usuario los encabezados

39

CAP ITULO 3. DESARROLLANDO CON RABBIT HTTP del recurso. Para visualizarlos, pueden utilizarse herramientas conocidas genricamente como visores HTTP. e El estudio de HTTP fue basado en [ProgramacionWeb2, 2007],[Del Castillo, 2002] y [Webopedia2, 2007].

3.2.2.

Protocolo SMTP

Seg n [Postela, 1982], [ProgramacionWeb1, 2007],[Webopedia1, 2007], el SMTP u (Simple Mail Transfer Protocol o protocolo simple de transferencia de correo electrnico) es un protocolo de red basado en texto que se utiliza para el ino tercambio de mensajes de correo electrnico entre computadoras o distintos o dispositivos. Se basa en el modelo cliente-servidor, donde un cliente env un a mensaje a uno o varios receptores. En el conjunto de protocolos TCP/IP, el SMTP va por encima del TCP, usando normalmente el puerto 25 en el servidor para establecer la conexin. o Ejemplo de una comunicacin SMTP o En primer lugar se ha de establecer una conexin entre el emisor (cliente) o y el receptor (servidor). Esto puede hacerse automticamente con un prograa ma cliente de correo o mediante un cliente telnet. El ejemplo a continuacin o muestra una conexin t o pica. con la letra C se nombra al cliente y con S al servidor: S: 220 Servidor ESMTP C: HELO S: 250 Hello, please meet you C: MAIL FROM: yo@midominio.com S: 250 Ok C: RCPT TO: destinatario@sudominio.com S: 250 Ok C: DATA S: 354 End data with <CR><LF>.<CR><LF> C: Subject: Campo de asunto C: From: yo@midominio.com C: To: destinatario@sudominio.com C: C: Hola, C: Esto es una prueba. C: Adios. C: . S: 250 Ok: queued as 12345 40

CAP ITULO 3. DESARROLLANDO CON RABBIT C: quit S: 221 Bye Todas las ordenes, rplicas o datos son l e neas de texto, delimitadas por el carcter, llevando un cdigo numrico al comienzo de la l a o e nea. Cuando un cliente establece una conexin con el servidor SMTP, espera a o que ste env un mensaje 220 Service ready o 421 Service non available. Se e e env un HELO y el servidor se identica. Esto puede usarse para comprobar a si se conect con el servidor SMTP correcto. El cliente comienza la transaccin o o del correo con la orden MAIL. Como argumento, se puede pasar la direccin o de correo al que el servidor noticar cualquier fallo en el env del correo. El a o servidor responde 250 OK. Luego se comunica el destino, la orden es RCPT TO:destinohost, es posible noticar tantas ordenes RCPT como destinatarios del correo queramos. Por cada destinatario, el servidor contestar 250 OK, a o bien 550 No such user heresi no encuentra al destinatario. Finalizada esta tarea, el cliente manda una orden DATA para indicar que a continuacin se o env los contenidos del mensaje. El servidor responde 354 Start mail input, an end with .. Esto indica la forma en que el cliente noticar el n del mensaje. a Seguidamente, ste env el cuerpo del mensaje - l e a nea a l nea - nalizando con un . (la ultima l nea ser un punto), a lo que el servidor contestar 250 OK, a a o un mensaje de error apropiado. Tras el env si no se tienen que enviar ms o, a correos, se corta la conexin con la orden QUIT. Tambin, puede utilizar el o e comando TURN, con el cual el se intercambian roles entre cliente y servidor. Finalmente, si tiene ms menajes que entregar, repite el proceso hasta coma pletarlos. En el ejemplo pueden verse las rdenes bsicas de SMTP: o a HELO, para abrir una sesin con el servidor. o MAIL FROM, para indicar quien env el mensaje. a RCPT TO, para indicar el destinatario del mensaje. DATA, para indicar el comienzo del mensaje, ste nalizar cuando haya e a una l nea unicamente con un punto. QUIT, para cerrar la sesin. o Las respuestas que da el servidor pueden ser de varias clases: 2XX, para una respuesta armativa. 3XX, para una respuesta temporal armativa. 41

CAP ITULO 3. DESARROLLANDO CON RABBIT 4XX, para una respuesta de error, pero se espera a que se repita la instruccin. o 5XX, para una respuesta de error. Una vez que el servidor recibe el mensaje, puede almacenarlo si es para un destinatario que pertenece a su dominio, o bien retransmitirlo a otro servidor para que nalmente llegue a un servidor del dominio del receptor. Formato del mensaje El mensaje est compuesto por dos partes: a Cabecera - en el ejemplo anterior, las tres primeras l neas del mensaje corresponden a la cabecera. Se usan palabras claves para denir los campos del mensaje, quienes ayudan a los clientes de correo a organizarlos y mostrarlos. T picamente son subject (asunto), from (emisor) y to (receptor). A los dos ultimos no hay que confundirlos con las ordenes MAIL FROM y RCPT TO, que pertenecen al protocolo, pero no al formato del mensaje. Cuerpo del mensaje - es el mensaje propiamente dicho. Est coma puesto unicamente por texto, y naliza con una l nea en la que el unico carcter es un punto. a

3.2.3.

Protocolo HTML

Es el acrnimo de HyperText Markup Language, lenguaje de marcacin o o dise ado para estructurar textos y presentarlos en forma de hipertexto, siendo n ste el formato estndar de las pginas web. e a a Habiendo realizado el estudio correspondiente, se especican en [?] las estructuras propias del protocolo HTML. Se consider que su inclusin dentro de o o este documento no aportar valor alguno. Dichas notas, fueron escritas seg n a u [Utem, 2006], 9, [Wikipedia5, 2007].

3.2.4.

Telnet

Emula una terminal remota, permite que un usuario en una red lejana trabaje sobre un servidor como si estuviera conectado a una terminal as ncrona en un puerto serie local. Transere teclado y pantalla de forma transparente. Emplea TCP como capa de transporte, utilizando el puerto 23. Por medio de una serie de negociaciones determina la mejor forma de adaptar terminal y sistema. 42

CAP ITULO 3. DESARROLLANDO CON RABBIT Caracter sticas Microprocesador Flash Memory SRAM Serial Flash Memory Serial Port RCM3700 Rabbit 3000 corriendo a 22.1 MHz 512K 512K 1 Mbyte 4 compartidos de alta velocidad, 3.3 V CMOS puertos compatibles los 4 son congurables como puerto serie asincronico 3 son congurables como puerto serie registrado (SPI) y 1 es congurable como puerto serie HDLC opcin para un segundo puerto serie o HDLC a expensas de 2 puertos SPI

Tabla 3.1: Caracteristicas de las placas Rabbit

Posee mtodos de autenticacin. Por lo general, el sistema est congue o a rado para requerir informacin de login, identicando al usuario y ejecuo tando un intrprete de comandos, que le permite el acceso al sistema. e Opera siempre en modo cliente/servidor, permitiendo mltiples conexiou nes en el servidor (el proceso master en el servidor crea un esclavo por conexin). o Estas consideraciones fueron obtenidas profundizando sobre [Postelb, 2001].

3.3.

Prestaciones del RCM3700

Consultando en [Rabbitsemiconductor6, 2007] y en [Rabbitsemiconductor5, 2007], se se alan los distintos aspectos descritos en la Tabla 3.1. n

3.3.1.

Dimensiones

Ver gura 3.1.

3.3.2.

Kit de desarrollo

El kit de desarrollo contiene el hardware y software necesario para usar el RCM3700: Modulo RCM3700 43

CAP ITULO 3. DESARROLLANDO CON RABBIT

Figura 3.1: Dimensiones core module Placa de desarrollo RCM3700 Cable de programacin o Dynamic C CD-ROM Accesorios para la placa de desarrollo

3.3.3.

Referencia del hardware

La gura 3.2 describe los componentes de hardware y los principales subsistemas de hardware del RCM3700.

Figura 3.2: Procesador Rabbit 3000 La gura 3.3 muestra los puertos disponibles:

44

CAP ITULO 3. DESARROLLANDO CON RABBIT

Figura 3.3: Puertos en RCM3700 Puertos E/S El procesador Rabbit 3000 dispone de 56 lineas de entrada/salida repartidas en siete puertos de 8 bits designados como puertos A, B, C, D, E, F y G. La mayor de los pines utilizados tienen funciones alternativas, como puerto serie a o chip select strobe. Los puertos D, E, F y G tienen la capacidad de sincronizar sus salidas con un timer. Todos ellos menos el E pueden congurarse como open drain. Puertos series Existen 6 puertos series designados como A, B, C, D, E y F. Todos pueden funcionar en modo asincrnico, pero los puertos A, B, C y D pueden funo cionar tambin en modo sincrnico. Los puertos E y F soportan comunicaciones e o SDLC/HLDC, poseen una FIFO de 4 bytes, y presentan pines separados de clock para transmisin y recepcin. Todos los puertos soportan opcional RZ o o (Return to Zero) con timing de 3/16 (SIR) o 1/4 (MIR) de bit: esta opcin se o utiliza normalmente para IrDA. La estructura de registros de los puertos es la siguiente: SxDR: Serial (A, B, C, D, E, F) Data Register, contiene el dato recibido (lectura), o se le escribe el dato a transmitir. SxAR: Alternate Data Register, se utiliza para generar un noveno bit en el modo de se alizacin de inicio de mensaje. Tambin puede emplearse n o e para generar un bit de paridad en modos de 8 bits.

45

CAP ITULO 3. DESARROLLANDO CON RABBIT SxLR: Long Stop Register, se utiliza en modos con dos bits de stop o para generar el bit de paridad en modos de 8 bits. SxSR: Status Register, contiene los ags que indican el estado del puerto, condicin de interrupcin, y errores. o o SxCR: Control Register, congura el modo de operacin y la prioridad o de las interrupciones. SxER: Extended Register, congura opciones adicionales de sincronizacin, o incluyendo 16x o 8x para modo sincrnico y RZI para HDLC e IrDA?. o La opcin 16x/8x provee los dos timings IrDA. o Reloj del sistema La frecuencia especicada para el RCM3700 de 22,1 MHz es generado utilizando un cristal de 11.06 MHz. Es posible, ya que el Rabbit 3000 permite duplicar o dividir por ocho la frecuencia, a modo de elegir entre velocidad de ejecucin y potencia consumida. Esta propiedad puede ser modicada desde o el BIOS. Los registros principales son: GCSR: Global Control/Status Register, los bits 4, 3 y 2 controlan la fuente del clocking:
o

000 = reloj del procesador y de los perifricos tomando del oscilador e a cristal, dividido por ocho. 001 = reloj del procesador tomado del oscilador al cristal. 010 = reloj del procesador y de los perifricos tomando del oscilador e al cristal. 011 = reloj del procesador y de los perifricos tomando del oscilador e al cristal, dividido por dos. 110 = reloj del procesador y de los perifricos tomando del oscilador e al cristal, dividido por cuatro. 111 = reloj del procesador y de los perifricos tomando del oscilador e al cristal, dividido por seis. 100 = reloj del procesador y de los perifricos tomando del clock de e 32.768 KHz. 101 = reloj del procesador y de los perifricos tomando del clock de e 32.768 KHz, apaga el oscilador a cristal.

o o

46

CAP ITULO 3. DESARROLLANDO CON RABBIT GCDR: Global Clock Double Register, controla la operacin del ciro cuito de clock de doubler. Funciona mediante la tcnica de demora y e or-exclusiva, por lo que controlando la demora se opera sobre el ciclo de trabajo resultante. Los bits 3, 2 ,1 y 0 permiten seleccionar la demora, la combinacin 0000 inhabilita el clock doubler. o GPSCR: Global Power Save Control Register, contiene opciones de control del timming de generacin de chip selects para permitir operaciones o a muy baja frecuencia. Timers Existen dos sistemas denominados timer A y timer B. El timer A est compuesto por 7 registros de 8 bits de cuenta regresiva a (A1, A2, A3, A4, A5, A6, A7), que pueden recargarse. Se controla mediante los siguientes registros: TACSR: Timer A Control/Status Register, contiene los ags de cuenta regresiva de cada uno de los timers en modo lectura, y controla el estado de la interrupcion de cada timer, en modo escritura. Cada bit controla el timer respectivo, el bit 0 controla la operacin del sistema Timer A. o TATxR: Timer Ax Time Constant Register, aloja la constante de cuenta para cada timer. TACR: Timer A Control Register, los bits 2 al 7 controlan el uso o no del timer A1 como prescaler para cada timer respectivo. Los bits 1, 0 denen la prioridad de la interrupcion (00 = no habilitada). El timer B est compuesto por un contador de 10 bits que puede leerse pero no a escribirse y dos registros de comparacin que generan un pulso cuando el valor o del contador iguala al del registro. Opera mediante los siguientes registros: TBCSR: Timer B Control/Status Register, contiene los ags de comparacin de cada uno de los timers en modo lectura, cada bit controla el o registro respectivo. TBCR: Timer B Control Register, controla la prioridad de la interrupcin o y la fuente del reloj del contador. Captura de eventos Las entradas de captura se utilizan para determinar el momento en que se produce un evento espec co. Se se ala mediante un anco (positivo, negativo n o ambos) en alguno de los 16 pines que pueden ser congurados para este 47

CAP ITULO 3. DESARROLLANDO CON RABBIT propsito. Para llevar la cuenta del tiempo, cada mdulo emplea un contador o o de 16 bits que recibe el clock del Timer A8. Existen dos tipos de eventos que pueden usarse para registrar la cuenta en el momento de producirse el evento, o bien para nes espec cos: condicin de inicio - se utiliza para iniciar la cuenta. o condicin de detencin - empleado para detener la cuenta. o o Adems, puede medirse la duracin de un pulso, dado que puede congua o rarse el contador para comenzar en un pulso y detenerse en el otro.

3.3.4.

Prestaciones con Ethernet

Habindose investigado en [Rabbitsemiconductor3, 2007] y [Rabbitsemiconductor3, 2007], e se resaltan las consideraciones elocuentes de la interfaz Ethernet. Soporta los siguiente tipos de conexiones Ethernet: No LAN - se conecta la placa Rabbit al puerto Ethernet de la computadora mediante un cable de red cruzado. Micro - LAN - se conecta la placa y la computadora a un hub 10Base-T usando cables de red derechos. LAN - se conecta la placa a una red LAN preferentemente a la que est conectada la computadora (Se debe obtener una direccin IP). a o WAN - Se conecta la placa a Internet pero se recomienda programar y debuggear en la red local antes de conectar la placa a Internet. Utiliza una conexin 10/100Base-T a una velocidad de 10 Mbps. Cada o RCM3700 tiene su propia MAC address. No soporta IPv6, slo IPv4. Si no se o busca acceder al RCM3700 por Internet, es posible situarlo en la red interna utilizando una IP esttica o bien por DHCP. Cuando se accede por Internet, a es posible situar la placa detrs de un rewall, congurndolo de forma tal que a a traduzca y mande paquetes de Internet al RCM3700. Conguracin del stack TCP/IP o Para correr el stack TCP/IP, un host debe conocer la direccin IP de cada o interfaz. La intefaz Ethernet tambin necesita una mscara de red. La combie a nacin entre stas dos, forma la subred. Describe la comunidad de hosts que o e pueden comunicarse directamente a este host, sin necesidad de pasar por un router. Para la comunicacin local tambin se necesita un gateway host. o e

48

CAP ITULO 3. DESARROLLANDO CON RABBIT TCPCONFIG Ethernet PPP DHCP Runtime 1 Si No No No 2 No Si No No 3 Si No Si No 4 Si Si No No 5 Si No Si No 6 Si No No Si 7 Si No Si No 8 No Si Si No Tabla 3.2: Conguraciones de TCP predeterminadas

Inicializacin o La funcin sock init() debe llamarse cerca del comienzo de la rutina del o main() para inicializar el stack TCP/IP. El feedback debe indicar xito antes e de llamar otras rutinas referentes a TCP/IP. La funcin realiza lo siguiente: o Llama a rutinas de inicializaciones correspondientes a TCP, UDP, DNS y ARP. Testea si sock init() fue ejecutado anteriormente; si la armacin es coro recta, devuelve un OK, de lo contrario sigue los pasos correspondientes. Resetea el hardware y borra los buers de recepcin. o Borra las tablas del servidor. Cuando se usa Ethernet espera aproximadamente 1 segundo para que el hardware correspondiente a Ethernet inicialice. Las intefases son inicializadas segn lo predenido. u Conguraciones predeterminadas Se utilizan las conguraciones predeterminadas de la librer tcp cong.lib, a tanto para conguraciones estticas o dinmicas. Deniendo un macro espec a a co, es posible elegir entre las conguraciones predeterminadas. El macro se muestra en la tabla 3.2. #dene TCPCONFIG No Conguraciones manuales Para una conguracin esttica espec o a ca se emplea el siguiente cdigo: o 49

CAP ITULO 3. DESARROLLANDO CON RABBIT #dene IFCONFIG ETH0 IFS IPADDR, aton(192.168.1.102), \ IFS NETMASK, aton(255.255.255.0), \ IFS ROUTER SET, aton(192.168.1.1), \ IFS UP Ante una conguracin dinmica con DHCP se emplea la opcin de cono a o o guracin predenida No 3 y el siguiente cdigo: o

#dene USE DHCP #dene IF DEFAULT 0 #dene IFCONFIG ETH0 IFS DHCP, 1, IFS UP #use dcrtcp.lib

50

CAP ITULO 3. DESARROLLANDO CON RABBIT Arquitectura del servidor web La gura 3.4 muestra todos los elementos relevantes de cualquier aplicacin o que corra sobre el servidor web.

Figura 3.4: Arquitectura del servidor web Bloque de aplicacin o Consiste en cinco sub-bloques y representa el cdigo que se debe crear. Todo o lo que se encuentra capas ms abajo es brindado por las distintas librer pero a as, se debe especicar parte de las interfaces de los diferentes componentes. Compile-time initialization Incluye seleccin de las librer apropiadas, inicializacin de las estruco as o turas estticas y tablas, seleccin de la conguracin de red predeterminada e a o o inclusin de los recursos estticos por medio del #ximport. o a La MIME Table le indica al browser como ser presentado el contenido a por el usuario. Se utiliza sta estructura dado que no se tiene un sistema e 51

CAP ITULO 3. DESARROLLANDO CON RABBIT operativo que resuelva esas tareas y se le debe especicar al servidor el signicado de cada cosa. La Rule Table se aplica ante el empleo de un lesystem (FS2, FAT). Es utilizado para aplicar permisos a los recursos contenidos en un lesystem; es necesario ya que no todos los lesystems pueden asociar derechos de acceso con archivos individuales. Program ash representa la carga de los archivos de recursos en la memoria de programa por medio del #ximport. Runtime initialization El main() necesita llamar a ciertas funciones espec cas una sola vez cuando comienza: sock init(): inicializa el sistema de acceso a la red sspec automount(): es opcional, inicializa los lesystems http init(): inicializa el servidor HTTP. Main loop El cdigo nal es el main(), quien necesita convocar continuamente a la o funcin http handler(), encargada de permitir el procesamiento de peticiones o en el servidor HTTP. Application species and I/O Es el bloque en el cual se comunica la aplicacin con el servidor HTTP. o CGI functions CGI (Common Gateway Interface), en dynamic C reere a una funcin C o que es llamada por el servidor HTTP para generar contenido dinmico para el a browser. Bloque HTTP El servidor es el responsable de procesar peticiones del mundo exterior. Cada peticin es analizada para identicar al usuario que est haciendo uso de o a la misma, el recurso que solicita, y si se encuentra autorizado a obtener dicho recurso. Si es usuario es conocido y el recurso est disponible, ste se transmite a e al browser.

52

CAP ITULO 3. DESARROLLANDO CON RABBIT #web Variables Es el medio de comunicacin entre la aplicacin y el servidor. Las web vao o riables son variables en C, arrays o estructuras determinadas. SSI Es la manera clsica de generar contenido dinmico. El SSI (Server Side a a Includes) es tambin un lenguaje script que puede llamar a funciones .cgi. e Bloque TCP/IP Es el pipeline al mundo exterior: el browser. Bloque Zserver Ocia de manejador de recursos, controla el acceso a muchos de los otros bloques. Tiene aplicacin en el servidor FTP, ya que provee una interfaz consistente o para los diferentes tipos de recursos. Tiene la responsabilidad de mapear var ios lesystems y tipos de recursos en una sola API. Esta API no solo cuida de las diferencias entre los lesystems, sino que tambin permite emular algunas e funciones que no son soportadas por el lesystem subyacente. Zserver debe asociar datos del metadata y authorization con cada recurso.

Control de acceso Si la aplicacin que se est corriendo permite la actualizacin del controo a o lador en forma remota, es importante agregar seguridad. La forma ms fcil a a de lograr el cometido es deniendo: un set de usuarios un mtodo de autenticacin e o permisos a cada recurso de acuerdo al usuario User Table Es una de las tablas en la cual se dene lo anterior. Contiene la lista de la identicacin de usuarios e informacin de autenticacin (password). Cada o o o entrada en la tabla contiene una mscara de grupo, que indica el nombre del a 53

CAP ITULO 3. DESARROLLANDO CON RABBIT grupo al cual el usuario pertenece. Es posible denir hasta 16 grupos y cada usuario puede pertenecer a uno o ms de ellos. a Rule Table Es la ultima tabla en que se termina de denir el control de acceso. Contiene una lista de informacin asociada con cada recurso llamada permisos. Cada o recurso tiene la siguiente informacin: o La mscara de grupo de los grupos que tienen el permiso de solo leca tura. La mscara de grupo de los grupos que tienen el permiso de leer/moda icar. Los servidores que no proh ben ning n acceso a este recurso. u El mtodo de autenticacin que es recomendado. e o El MIME type del recurso. Librer de uso general (Zserver.lib) a El manejador de recursos contiene las estructuras, funciones y constantes para permitirles a los servidores HTTP y FTP, compartir datos e informacin o de autenticacin mientras estn en funcionamiento. o a La funcionalidad bsica de Zserver es la habilidad de traducir nombres de a recursos (URLs en el caso de HTTP) en referencias a lesystems y objetos de memoria. Tambin, provee soporte para formularios HTML. e Las estructuras relativas a sta librer son: e a MIMETypeMap ServerSpec ServerAuth ServerPermissions RuleEntry FormVar SSpecFileHandle

54

CAP ITULO 3. DESARROLLANDO CON RABBIT MIMETypeMap Asocia la extensin de un archivo con una clase MIME (Multipurpose Ino ternet Mail Extension) y una funcin que maneja dicha clase. Por ejemplo para o crear un servidor HTTP que maneje archivos .html y .gif el siguiente algoritmo es requerido en el cdigo: o

SSPEC MIMETABLE START SSPEC MIME(.html, text/html), SSPEC MIME(.gif, image/gif), SSPEC MIMETABLE END

ServerSpec Es utilizada por la tabla de recursos esttica y dinmica. La diferencia ena a tre tablas es que una es una constante (inicializada en tiempo de compilacin) o y la otra es creada en tiempo de corrida del programa en la RAM, y por tanto, modicable. Se llaman por medio de los macros SSPEC RESOURCE. ServerAuth Dene un array global como una lista de pares nombre de usuario- contrase a. n ServerPermissions Lleva a cabo los permisos de acceso para un recurso o un grupo de recursos. RuleEntry Asocia un prejo del nombre del recurso a una estructura de ServerPermissions. La RULE Table es un array de stas estructuras. e FormVar Un array de FormVar representa las variables de un formulario HTML. La estructura contiene: Un ndice server spec que reere a las variables que sern modicadas. a Una funcin de integridad que asegura que las variables estn jadas en o e valores vlidos. a 55

CAP ITULO 3. DESARROLLANDO CON RABBIT Valores mximos y m a nimos para variables numricas. e Largo de las variables. Un puntero a un arreglo de valores (cuando el valor debe ser espec co de una lista de valores). Es posible especicar si la variable est jada a travs de una entrada a e de texto o un men , y tambin, si su valor se considera inalterable. El aru e ray de FormVar se pone en una estructura de ServerSpec usando la funcin o sspec addform (). Las entradas de ServerSpec que representan variables son agregadas al array de FormVar utilizando la funcin sspec addfv (). o SSpecFileHandle Es utilizada internamente por Zserver para desarrollar nuevos lesystems que pueden ser incorporados a Zserver.

Soporte de archivos comprimidos Es posible ejecutar en el servidor HTTP archivos comprimidos. Se utiliza la directiva #zimport en vez de #ximport, quien realiza la misma funcin o pero comprime el archivo invocando utilidades de compresin antes de enviar o el archivo. Para agregar un archivo comprimido a la tabla de recursos esttica, a se utiliza el macro SSPEC RESOURSE ZMEMFILE. Cada servidor utiliza un buer para la descompresin. o Servidor HTTP El servidor HTTP permite que pginas HTML y otros recursos sean ala canzables por los clientes (browsers). Se implementa por medio de la librer a HTTP.lib y utiliza la librer Zserver para manejar los distintos recursos y a controles de acceso. Un puntero a HttpState es el primer parmetro a todas las funciones CGI a que son llamadas desde el servidor HTTP. Cliente FTP La librer FTP CLIENT.LIB implementa el protocolo FTP para el laa do de la conexin del cliente. Soporta una sola sesin FTP ya que el estado o o de la sesin es mantenido en una sola estructura global en la memoria. Es o posible subir y bajar archivos a la memoria esttica o bien tener un funcin a o que devuelva un puntero de datos capaz de implementar largas transferencias 56

CAP ITULO 3. DESARROLLANDO CON RABBIT de archivos es varios buers, o generar procesos de datos con un buer m nimo. Se puede especicar una conexin FTP pasiva. Al hacerlo, el cliente abrir aco a tivamente el puerto de la transferencia de datos en el servidor, evitando la necesidad del servidor de penetrar el rewall (si lo hubiese) con una conexin o activa del exterior. Servidor FTP La librer FTP SERVER.LIB implementa el protocolo FTP para el lado a de la conexin del servidor. El servidor realiza una conexin FTP pasiva en el o o puerto 21 y queda escuchando por un cliente. Brinda la posibilidad de crear, leer y borrar archivos. Cliente SMTP El servidor SMTP espera que se conecten los clientes, generalmente, en el puerto 25 de TCP. Cliente POP3 POP3 es la forma ms com n de recuperar un E-mail de un servidor remoto. a u Es una conversacin de texto a travs de un socket TCP, normalmente utilizano e do el puerto 110 TCP. Existen dos formas de utilizar la librer POP3.LIB: a Descargar completamente el E-mail (header y texto), con toda la informacin. o Descargar el E-mail separando header y texto. Pasos para recibir un E-mail pop3 init() es llamada una sola vez con el objetivo de proporcionar los datos entrantes. pop3 getmail() es llamada para empezar el E-mail que es recibido y para proveer a la librer la informacin de la cuenta del E-mail. a o pop3 tick() es llamada para hacer correr la librer mientras no es llamaa da. Telnet La librer Vserial.lib implementa el protocolo Telnet. La implementacin a o es un gateway telnet-serial y serial-telnet. 57

CAP ITULO 3. DESARROLLANDO CON RABBIT

3.3.5.

Prestaciones con Dynamic C

Dynamic C es el nombre del entorno de desarrollo que se utiliza para implementar en Rabbit. Es tambin, el nombre del lenguaje de programacin, e o una extensin al lenguaje ANSI C. o Se permiten realizar las siguientes operaciones: edicin o compilacin o linkeado carga en el procesador depuracin o Caracter sticas Compila compila la totalidad del cdigo del archivo fuente y las librer o as. Soporta cdigo assembler. o Permite implementar co-sentencias (costatements). Tolera la implementacin de co-funciones (cofunctions). o Propiedades Si una variable es inicializada en su declaracin (int x=0), ser guardao a da en memoria ash y no puede ser alterada ms tarde por una nueva a asignacin. o Para inicializar variables estticas en SRAM, se emplean las secciones a #GLOBAL INIT. Al declarar una variable, la clase por defecto es auto. Utiliza la directiva #use para proveer la informacin automtica de las o a librer as. Dynamic C compila directamente en la memoria del sistema objeto. Tipos de variables Se especifcan en tabla 3.3

58

CAP ITULO 3. DESARROLLANDO CON RABBIT Variable integer long integer unsigned char unsigned integer unsigned long single oating point Tamao n 2 bytes 4 bytes 1 byte 2 bytes 4 bytes 4 bytes

Tabla 3.3: Tipos de variables

Librer de funciones a Incluye archivos en cdigo fuente con funciones. Su extensin es .lib. Utiliza o o las funciones y los datos de las librer para compilarlas junto con el programa as de aplicacin. Un programa (extensin .C) consiste en un archivo fuente que o o contiene una funcin llamada main() y otras funciones denidas por el usuario. o Manejo de memoria Si el programa es peque o, el cdigo puede ubicarse en el rea de memoria n o a denominada root. Cuando el programa es ms grande, parte del mismo tiene a que ser compilado a la memoria extendida - segmento xmem -, ventana de 8 Kbytes en el espacio de 0xE000 a 0xFFFF. Para que sto ocurra, se debe e indicar en el cdigo la sentencia #memmap xmem. Tanto las funciones como o las variables pueden ser ubicadas en el rea root o xmem. La estructura de la a memoria se puede ver en la gura 3.5. Memoria Flash Se ubica por defecto a partir de la direccin 0x00000 y se controla mediante o CS0/OE0/WE0. Si el sistema necesita actualizar constantemente informacin o en la ash, debe saberse que existe un tiempo muertodurante el cual la memoria est siendo escrita y el procesador no puede acceder a ella para ejea cutar instrucciones. Memoria SRAM La RAM esttica se ubica por defecto a partir de la direccin f a o sica 0x80000. Puede tener una pila de respaldo para tener un resguardo ante una prdida de e alimentacin. o

59

CAP ITULO 3. DESARROLLANDO CON RABBIT

Figura 3.5: Estructura de la memoria Procesamiento multitarea En un entorno multitarea, pueden aparentar ejecutarse ms de una tarea en a paralelo, salvo que exista ms de un procesador, ya que un procesador puede a ejecutar solo una instruccin a la vez. El software multitarea aprovecha las o demoras naturales en cada tarea para mejorar el desempe o del sistema, cada n tarea realiza parte de su trabajo mientras las otras estn esperando que transa curra alg n evento; de esta forma, las tareas se ejecutan casi en paralelo. u Co-sentencias Simulan procesos paralelos concurrentes en un mismo programa y simplican la implementacin de tareas m ltiples. La estructura de un costate es o u lista ordenada de operaciones a realizar. Cada costate tiene su propio puntero de programa para determinar que lugar de la lista debe ejecutarse cuando se le asigna la oportunidad, funciona internamente como una mquina de estados: a while (1) { costate { sentencia de control //cede la ejecucin a otros costates o ... } costate { 60

CAP ITULO 3. DESARROLLANDO CON RABBIT sentencia de control //cede la ejecucin a otros costates o ... }

Co-funciones Simulan procesos cooperativos en un mismo programa. Son similares a las costates, pero su formato es similar a las funciones: es posible pasarles argumentos y devuelven un resultado. Son llamadas desde un costate para ejecutar una determinada funcin. o cofunc int nombre (int parametro) { ... sentencia de control //cede la ejecucin a otros costates o ... return(resultado) } Sentencias de control Se utilizan para delegar el procesamiento entre las distintas tareas, detectando los estados de espera y cediendo voluntariamente el control del procesador a otras tareas. waitfor (expresin): No es una funcin. Cualquier funcin que retorne o o o alg n valor puede ser utilizada como parmetro de espera. La ejecucin u a o se suspende hasta tanto la expresin utilizada devuelva un valor distinto o de cero. waitfordone (tarea);: Se ve a la tarea como una cofunction: se la llama por primera vez, donde inicializa su operacin, y continua a travs de o e sucesivas llamadas durante el loop del programa. El n ocurre cuando se satisface la condicin waitfordone. o yield;: Cede el control voluntariamente ante determinado evento. Es muy util cuando se debe realizar una tarea mientras se controla una temporizacin determina o

3.4.

Estrategia de programacin y desarrollo o

Como primera consideracin, se busc un simulador de la placa Rabbit pero o o ning n fabricante de Rabbit o terceras empresas ha desarrollado uno. Con el u 61

CAP ITULO 3. DESARROLLANDO CON RABBIT RCM3700 es posible debuggear sin estar conectado a la placa, pero no permite visualizar el debugging en tiempo real una vez programada la placa: correr las instrucciones paso a paso a medida que se ejecutan. Seguidamente, se investig como programar la placa: conexin del cable o o de programacin y seteos correspondientes. (Ver 3.4.1). Se corri un ejemplo o o bsico sobre Dynamic C (provisto de fbrica), y se analiz el mecanismo que a a o realizaba el RCM3700 durante el proceso - compilacin, bajada del archivo a o la placa y ejecucin -. Se resolvi que la manera ms eciente ser compilar o o a a en la memoria ash y ejecutar las aplicaciones en la SRAM. Se debi probar su eciencia y capacidad para poder llevar a cabo los obo jetivos planteados. La estrategia de programacin fue la siguiente: o Hacer funcionar un puerto serie. Ver como implementar una pgina web con cdigo HTML a o
o o

Buscar la forma de autenticarse. Probar el env de mails cada vez que se realiza una accin en la o o pgina web. a

Investigar la implementacin de los protocolos y manejar el puerto serie o por red. Implementar una peque a web por HTML para el manejo del puerto n serie utilizando varias opciones.
o o

Probar forms que manejen propiedades. Denir acciones y mediante el click en estructuras, obtener distintos strings por el puerto serie.

Se comenz el desarrollo realizando pruebas con los distintos puertos series o de la placa, cuando se vio el claro manejo de los puertos, se busc la forma o de cargarle a la placa un peque o servidor web. La programacin del mismo, n o constituy en la implementacin del protocolo HTTP, mediantes las librer o o as relacionadas; las pginas web se programaron en lenguaje HTML. Una vez a alcanzado el objetivo se busc la forma de restringir el acceso al servidor web o por medio de usuarios y contraseas, por lo cual, valindose de las librer n e as concurrentes, se implement un mtodo de autenticacin. o e o

62

CAP ITULO 3. DESARROLLANDO CON RABBIT En otro orden, habiendo sido consideradas las amplias librer que Rabbit as ha desarrollado para el manejo del stack de directivas TCP/IP, se intent reo alizar el env de correos electrnicos por medio de la librer SMTP cada vez o o a que se llevaba a cabo un evento espec co en el servidor web. Fueron programadas distintas forms dentro del servidor, probndose las a que despliegan propiedades y las que brindan la posibilidad de insertar texto. La intensin fue ofrecer un conjunto de opciones a ser procesadas luego. Se deo scubri, que el manejo de las mismas no es del todo exible, ya que permiten o un unico estilo de estructura y visualizacin: la imagen es en blanco y negro o y no fue posible cambiar la denicin de los campos principales dentro de las o columnas; es una herramienta que se basa en un modelo estndar. a El empleo de estructuras del tipo .CGI garantiz el mtodo para controlar o e los distintos cambios en la web. Monitoreando el estado de las mismas, fue posible realizar varias acciones y noticar al servidor de la actualizacin de las o variables correspondientes. Es engorrosa la programacin con una gran cantio dad de estructuras .CGI. Se env una consulta al Tech Support de Rabbit o comentando esta situacin - y recomendaron el uso de RabbitWeb. o RabbitWeb es una extensin de desarrollo para Dynamic C para simplio car la presentacin de los objetos del lenguaje C (variables, estructuras) en o un browser. Permite la escritura en un scripting especial que facilita la implementacin de funciones en el servidor HTTP. El precio de esta extensin es de o o USD 150, lo que hizo prohibitiva su compra. Se tom la decisin de implemeno o tar el menor nmero de estructuras .CGI, slo las necesarias para cumplir con u o los objetivos propuestos. Las pruebas fueron el art ce de la solucin; habiendo probando las capacio dades de la placa, y determinando el poder de Rabbit para realizar el trabajo o como bloque central del sistema, se avanz con el desarrollo de la arquitectura o multiprotocolar. Luego de diseado el protocolo de comunicacin, se implen o ment la solucin correspondiente, considerando la comunicacin half-duplex o o o por el puerto serie, la interaccin con el servidor HTTP y el manejo de la o librer SMTP. a

3.4.1.

Formas de programacin de la placa o

Inicialmente, habiendo le cierta literatura no ocial de Rabbit, se condo sider que exist la forma de programar el RCM3700 por Ethernet. Visto o a y considerando que los manuales ociales de Rabbit no mencionaban este tema se envi una consulta al Tech Support de Rabbit preguntando sobre o 63

CAP ITULO 3. DESARROLLANDO CON RABBIT esta prestacin; la respuesta fue clara: no es posible programar la placa por o Ethernet. La unica forma de programacin de la placa es mediante el puerto o serie de la pc utilizando el cable de programacin que viene inclu en el kit o do de desarrollo. El software utilizado para la programacin es tambin Dynamic o e C. Para congurar la comunicacin serial hay que entrar al men Options\Project o u Options\Comunications: en el campo Connection Type se debe marcar la opcin Use Serial o Connection. en Serial Options\Serial Port elegimos el puerto COM correspondiente y se setea Stop Bits 1. es necesario marcar Enable Processor verication para compilar en la memoria ash.

3.4.2.

Debugging

De las m ltiples herramientas para debuggear que permite Dynamic C, se u utilizaron las siguientes: Sentencia printf() - despliega mensajes en la ventada de la Stdio. Breakpoints - detiene la ejecucin, y permite examinar el recorrido del o programa. Paso a paso - ejecuta una sentencia por vez. Prendido de leds - dos leds de la placa pueden prenderse y apagarse para indicar una variedad de condiciones. En [Rabbitsemiconductor2, 2007] pg 68 se describen las ventajas y desvena tajas de las diferentes herramientas que soporta Dynamic C para debuggear.

3.4.3.

Gestin ante errores y problemas o

Durante el desarrollo de las aplicaciones, surgieron inconvenientes que fueron ms all de un error de sintaxis o semntica en el momento de la compia a a lacin. Un error de funcionamiento puede darse por directivas de software mal o denidas, o bien, el hardware utilizado (si se emplea) est da ado. Ante stas a n e inclemencias, se sigui un procedimiento riguroso para gestionar la solucin de o o los mismos: Localizar la existencia del problema. 64

CAP ITULO 3. DESARROLLANDO CON RABBIT Aislar la fuente del mismo. Identicar las causas del problema. Determinar la solucin. o Aplicar las medidas correspondientes y testear. Ejemplo concreto Durante las pruebas realizadas para visualizar el comportamiento del puerto serie C de la placa, surgi un inconveniente. La prueba consist en impleo a mentar una comunicacin half - duplex entre el puerto COM de la computadora o y el puerto C de la placa, habilitando la emisin y recepcin de caracteres en o o ambas partes. La transmisin desde el puerto serie C y la recepcin en la o o hyperterminal de la computadora se realizaba correctamente, no as la trans, misin desde la computadora hacia el puerto C; la comunicacin inversa no o o funcionaba. Primeramente, se veric que las conguraciones entre puertos seriales fuero an las correctas: baudrate, paridad, control de ujo, cantidad de datos y puerto COM. Teniendo la misma conguracin, se prob con otra computadora. Ocuro o ri lo mismo. o Luego, se debugge el cdigo implementado en lenguaje C (generando meno o sajes en la Stdio) y no se constataron errores. Seguidamente, se congur el RCM3700 (empleando jumpers) de forma tal, o de transmitir un caracter por el puerto C hacia el puerto D y hacer el echo correspondiente: transmitir hacia el puerto C el caracter recibido en el D. La prueba funcion correctamente. o Se determin que el problema radicaba en el medio de comunicacin, un o o cable null modem bsico: GND1 - GND2, Tx1 - Rx2, Rx1 - Tx2, conectado a entre el puerto serie y el puerto C de la placa. Se examinaron las conexiones y se descubri que la soldadura del pin 3 de la cha DB9 hembra conectada al o puerto COM conten una burbuja de aire, la cual imped la conexin f a a o sica entre los pares. Se volvi a soldar la cha y se teste el programa inicial. La prueba fue o o realizada en forma correcta.

65

CAP ITULO 3. DESARROLLANDO CON RABBIT

3.5.

Pruebas

Aqu se explica slo el funcionamiento de las pruebas relevantes. Las otras o pruebas realizadas sirvieron como gu para delimitar el alcance del mdulo a o Rabbit y aportar al desarrollo de cada prueba relevante. Los cdigos se eno cuentran plasmados en el Anexo C.

3.5.1.

BotonEnviaCaracter.c

El programa transmite y recibe un string ASCII por los puertos C y E, y despliega en pantalla el mensaje recibido en ambos puertos. Presionando y soltando el botn S1 de la placa, se env el mensaje desde el puerto C al E. Se o a realiza funcin inversa, presionando y soltando el botn S2. La velocidad de o o cada puerto est seteada a 19200. En el prototyping board se debe conectar, a por medio de jumpers, el TxC con el RxE y el RxC con el TxC.

66

CAP ITULO 3. DESARROLLANDO CON RABBIT

3.5.2.

Autenticacin.c o

Permite que los usuarios se registren con usuario y password. Se visualiza una pgina web que contiene una imagen y un mensaje. Se pueden congurar a los usuarios que se deseen, por imposicin, se estable por defecto para tres o usuarios. Las opciones de autenticacin estn implementadas en el cdigo con o a o un case. El main ejecuta un men y seg n lo que el usuario presione establece u u las distintas opciones: habilitar/deshabilitar el usuario 1, habilitar/deshabilitar el usuario 2, habilitar/deshabilitar el usuario 3, autenticacin bsica, auteno a ticacin con resumen o sin autenticacin. Se maneja el uso del protocolo o o HTTP con autenticacin. o La gura 3.6 muestra la imagen de la autenticacin. o

Figura 3.6: Autenticacin.c o

3.5.3.

Leds.c

Permite controlar por medio de una pgina web el prendido y apagado de a los leds DS1 y DS2 de la placa de desarrollo. La especicacin de las opciones o de prendido/apagado, para cada uno de los botones, se realiza en el main. Al iniciar el programa, el led1 comienza prendido y el led2 apagado. Luego, se setea la placa con las conguraciones HTTP correspondientes y se entra en loop ofreciendo la posibilidad que se cambie el estado de los leds mediante la presin de los botones correspondientes en la pgina web. Se emplea el uso del o a protocolo HTTP y las funciones .CGI asociadas.

67

CAP ITULO 3. DESARROLLANDO CON RABBIT

3.5.4.

LedsAutenti.c

Permite autenticar usuarios (como lo hace el codigo Autenticacion.c) y maneja el prendido y apagado de los leds DS1 y DS2 de la placa de desarrollo. Es una mezcla entre las pruebas Leds.c y Autenticacin.c. Se emplea el o protocolo HTTP con autenticacin y sin autenticacin. o o La gura 3.7 muestra la imagen del encendido/apagado de los leds.

Figura 3.7: Botones

3.5.5.

EnviaMail.c

Detecta la presin de alguno de los dos botones ubicados en la placa de o desarrollo. Si se cumple la condicin, se envia un mail noticando lo ocurrido. o Se utiliza el protocolo SMTP.

3.5.6.

FormAsociada.c

Carga en el servidor HTTP una form con opciones para setear un puerto serie determinado y enviar un string. Muestra la form y opciones; no permite el uso del puerto serie. Al iniciar, pide la autenticacin del usuario. El ID es o usuario y el pass es usuario. La gura 3.8 muestra la imagen de la Form.

68

CAP ITULO 3. DESARROLLANDO CON RABBIT

Figura 3.8: Form

3.6.

Referencias

[Del Castillo, 2002] Del Castillo San Flix, Alvaro. 1999.1.3. El protocolo e HTTP .[online] Disponible en Internet: <http://acs.barrapunto.org/ articulos/trunk/LinuxActual/Apache/html/x49.html> [HTML, 2007] HTML. 2007.Investigacin del protocolo HTML .[online] o Disponible en Internet: <http://z0.saladeteletipos.com/twiki/bin/view/ ProcesadorMultiprotocolar/ProtocoloHTML> [Postela, 1982] Postel, Jonathan B. 1982. SIMPLE MAIL TRANSFER PROTOCOL. RFC 821 [online]. Disponible en Internet: <http://www.ietf.org/rfc/ rfc0821.txt> [Postelb, 2001] Postel, J. 1983.Especicacin del protocolo TELNET . RFC o 854 [online] Disponible en Internet: <http://www.rfc-es.org/rfc/rfc0854es.txt> [Programacin, 2006] Programacin. 1999.Protocolo HTML .[online] Disponible o o en Internet: <http://www.programacion.com/html/foros/2/> [ProgramacionWeb1, 2007] CopyLeft. 2003.El protocolo SMTP .[online] Disponible en Internet: <http://www.programacionweb.net/articulos/ articulo/?num=412> [ProgramacionWeb2, 2007] CopyLeft. 2003.El protocolo HTTP .[online] Disponible en Internet: <http://www.programacionweb.net/articulos/ articulo/?num=409> 69

CAP ITULO 3. DESARROLLANDO CON RABBIT [Rabbitsemiconductor2, 2007] Rabbit Semiconductor. 1999 .Dynamic C: Users Manual.[online] Disponible en Internet: <http://www.rabbitsemiconductor.com/ documentation/docs/manuals/DC/DCUserManual/DCPUM.pdf> [Rabbitsemiconductor3, 2007] Rabbit Semiconductor. 1999 .Dynamic C TCP/IP Volume 1.[online] Disponible en Internet: <http://www.rabbitsemiconductor.com/ documentation/docs/manuals/TCPIP/UsersManualV1/tcpV1.pdf> [Rabbitsemiconductor4, 2007] Rabbit Semiconductor. 1999 .Dynamic C TCP/IP Volume 2.[online] Disponible en Internet: <http://www.rabbitsemiconductor.com/ documentation/docs/manuals/TCPIP/UsersManualV1/tcpV2.pdf> [Rabbitsemiconductor5, 2007] Rabbit Semiconductor. 1999 .RabbitCore RCM3700.[online] Disponible en Internet: <http://www.rabbitsemiconductor.com/ documentation/docs/manuals/RCM3700/RC3700UM.pdf> [Rabbitsemiconductor6, 2007] Rabbit Semiconductor. 1999 .Rabbit 3000 User manual.[online] Disponible en Internet: <http://www.rabbitsemiconductor.com/ documentation/docs/manuals/Rabbit3000/UsersManual/R3000UM.pdf> [Utem, 2006] UTEM. 1994.Manual HTML .[online] Disponible en Internet: <hhttp://www.utem.cl/web/form.htm> [Webopedia1, 2007] Webopedia. 2007.SMTP .[online] Disponible en Internet: <http://www.webopedia.com/TERM/S/SMTP.html> [Webopedia2, 2007] Webopedia. 2007.HTTP .[online] Disponible en Internet: <http://www.webopedia.com/TERM/H/HTTP.html> [Wikipedia5, 2007] WIKIPEDIA. 2007.HTML .[online] Disponible en Internet: <http://es.wikipedia.org/wiki/HTML>

70

Parte II Manejo y control de protocolos

Cap tulo 4 Arquitectura multiprotocolar


4.1. Introduccin o

Es fundamental una buena planicacin del trabajo de investigacin para o o desarrollar un protocolo. Esta organizacin permite lograr que al nal los datos o registrados puedan ser evaluables o de escasa validez, faltos de credibilidad o insucientes para arrojar luz sobre la hiptesis que motiv el desarrollo del o o mismo. Como en toda actividad, resultan muy importantes los conocimientos, la experiencia y el sentido com n. Si un estudio no ha sido bien planicado, u en la fase de anlisis ser muy dif subsanar los errores. a a cil Este desarrollo contempla deniciones concurrentes al entorno de trabajo y a la coherencia en la eleccin de variables, velocidades y tiempos. Las posibles o operaciones deben estar claramente estructuradas y las relaciones de interdependencia completamente detalladas. Dicho protocolo puede verse como un juego repetido, una sucesin de o interacciones entre dos entidades expresamente denidas: el bloque central y los mdulos exteriores. Las particularidades f o sicas y el contenido de la informacin intercambiada se describen en este cap o tulo. Tambin, son parte del estudio los protocolos RS485, GPIB e I C. e
2

4.2.
4.2.1.

Marco terico o
Protocolo RS485

Los estndares se han desarrollado para asegurar compatibilidad entre las a unidades proporcionadas por diferentes fabricantes. La EIA (Electronics Industry Association) ha producido el estndar RS485 para comunicacin de a o

72

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR


Parmetro a Modo de operacin o N mero de conductores y receptores u Longitud mxima del cable a Mxima velocidad de transmisin a o Mximo modo com n de voltaje a u M nimo nivel de produccin del conductor con carga o M nimo nivel de produccin del conductor sin carga o Carga m nima del conductor L mite de corriente de cortocircuito de la salida M nima impedancia de entrada Sensibilidad del receptor Valor Diferencial 32 conductores 32 receptores 1200 metros 10 MBaudios 12V a -7V +/- 1.5 +/- 6 60 150 mA a GND, 250 mA a -7 o 12V 12 K +/- 200 mV

Tabla 4.1: Estndar RS485 a datos. Seg n [tyco Electronics, 2002], RS485 es una l u nea balanceada que opera en modo half-duplex y permite distancias de transmisin hasta 1200 metros. o El estndar est especicado en la tabla 4.1. a a Como se ala [RS485, 2007], las seales diferenciales ayudan a anular los n n efectos de los cambios de tierra y de las seales de ruido inducidas, que pueden n aparecer como voltajes de modo com n en una red. u

4.2.2.

Protocolo GPIB

El bus GPIB (General Purpose Instrument Bus) es un bus digital de corto alcance que fue inventado por Hewlett-Packard en 1974 para simplicar la interconexin de instrumentos de medidas con la computadora y brindar una o interfaz estndar entre instrumentos de diferentes compa Fue adoptado a nas. como IEEE STD 488 en 1978. Un mximo de 15 dispositivos pueden existir en el bus, y se describen seg n a u sus funciones: controladores, transmisores y receptores. Algunos dispositivos pueden tener ms de una funcin. a o Descripcin o El sistema ms simple consiste en un controlador y un transmisor o recepa tor. Los controladores tienen la habilidad de enviar comandos, transmitir datos y escuchar al resto de los dispositivos. Es viable tener ms de un controlador a en el bus, pero slo uno podr estar activo en cualquier momento. o a

73

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR

Figura 4.1: Sistema GPIB Los dispositivos son direccionables como transmisores y receptores. Cada uno, tiene una direccin primaria entre 0 y 30. Tambin, alcanzan direcciones o e secundarias que se utilizan para tratar funciones secundarias o direccionar otros canales. Ciertos dispositivos pueden ser seteados como slo recepcin o o o slo transmisin. Pueden convivir en el bus dos dispositivos sin la necesidad o o de un controlador. La interfaz incorpora ocho l neas de datos, cinco l neas de control y tres l neas de handshake. Caracter sticas f sicas Los dispositivos se pueden conectar por lineas directas, en forma de estrella o combinadas. La conexin general es en daisy chain (seg n [Wikipedia6, 2007], o u es un cableado de forma tal que el equipo A se conecta al equipo B, el B se conecta al C, y as sucesivamente, donde las conexiones no realizan un loop back desde el ultimo dispositivo al primero). El conector estndar IEEE-488 utiliza 24 pines, teniendo un plug hembra a y uno macho en las dos puntas. Se especica una distancia mxima de bus de a 20 metros, donde los dispositivos pueden estar separados por un mximo de 2 a metros. Esta consideracin, limita la velocidad de trabajo. o El bus utiliza la lgica negativa del estndar TTL. La gura 4.2 muestra o a un conector GPIB La tabla 4.2 especica el uso de cada pin del conector. Seales n DIO1DIO8 - Data input/output bits. Estas l neas son usadas para leer y escribir los 8 bits de datos o el comando a transmitir por el bus.

74

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR

N mero de pin u 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

L nea del bus DIO1 DIO2 DIO3 DIO4 EOI DAV NRFD NDAC IFC SRQ ATN SHIELD DIO5 DIO6 DIO7 DIO8 REN GND GND GND GND GND GND

Descripcin o Data input/output bit Data input/output bit Data input/output bit Data input/output bit End-or-identify Data valid Not ready for data Not data accepted Interface clear Service request Attention Data input/output bit Data input/output bit Data input/output bit Data input/output bit Remote enable wire twisted with DAV wire twisted with NRFD wire twisted with NDAC wire twisted with IFC wire twisted with SRQ wire twisted with ATN

Tabla 4.2: Pines conector GPIB

75

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR

Figura 4.2: Conector GPIB NRFD - Not ready for data. L nea de handshake activada por los receptores para indicar que no estn prontos para recibir un nuevo dato. a DAV - Data valid. L nea de handshake que se ala la validez del valor n enviando por DIO1-DIO8. NDAC - Not data accepted. L nea de handshake activada por los receptores que indica no haber le el contenido de las l do neas DIO. ATN - Attention. Se levanta para advertir que las l neas DIO contienen un byte de comandos y no un byte de datos. EOI - End-or-identify. Se levanta con el ultimo byte de datos para indicar el n del mensaje. IFC - Interface clear. El controlador levanta la l nea por 100 seg. para resetear el bus y hacerse cargo del sistema. REN - Remote enable. El controlador levanta la l nea y habilita a los dispositivos a entrar en el modo remoto. SRQ - Service request. Los dispositivos pueden levantar la l nea para requerir servicio del controlador. Mensajes de la interfaz Comandos de direccin o La tabla 4.3 especica la funcin de los comandos de direccin. o o Comandos universales La tabla 4.4 muestra la funcin de cada comando universal. o Comandos de direccin para los receptores o Se establecen los comando de direccin por medio de la tabla 4.5 o

76

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR

Comando MLA MTA LAD TAD SAD UNL UNT

Funcin o My listen address (controlador a s mismo) My talk address (controlador a s mismo) Device listen address (0-30) Device talk address (0-30) Secondary Device address Unlisten (LAD 31) Listen (TAD 31) Tabla 4.3: Comandos de direccin o

Comando LLO DCL PPU SPE SPD

Funcin o Local lockout Device clear Parallel poll uncongure Serial poll enable Serial poll disable

Tabla 4.4: Comandos Universales

Comando SDC GTL GET PPC TCT

Funcin o Selected device clear Go to local Device trigger Parallel poll congure Take control

Tabla 4.5: Comandos de direccin para los receptores o

77

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR Velocidades y tiempos

Figura 4.3: Velocidades y Tiempos El dispositivo ms lento participa en el control y handshake para determia nar la velocidad de transmisin. El bus opera a esa velocidad, por esta razn es o o dif estimar la velocidad de transmisin ya que depende de los dispositivos. cil o Los datos se transeren de forma as ncrona utilizando las lineas de handshaking en lugar de un reloj. La informacin desplegada anteriormente esta basada en [Interfacebus, 2006], o [ICS, 2007] y [Tech Soft, 2007].

4.2.3.

Protocolo I C

Es un protocolo desarrollado por Philips Semiconductors, es una abreviacin de Integer Integrated Circuit bus (IIB). o Estructura f sica Seg n [ESAcademy1, 2000], el bus f u sico est compuesto por dos l a neas activas bidireccionales llamadas Datos (SDA) y Reloj (SCL). Cuando el bus est en un estado de IDLE, las l a neas estn en alta impedancia. Si el bus a est siendo empleado para transmitir, los dems chips no tienen el acceso a a permitido para transmitir. La gura 4.4 muestra la topolog del bus. a 78

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR

Figura 4.4: BUS Especicacin o Cada dispositivo del bus tiene su propia direccin y puede actuar como o transmisor o receptor, es un bus multi-master. El protocolo especica que la entidad que inicia una transferencia es considerada el maestro, por lo cual el resto de los dispositivos sern esclavos. a El dilogo comienza con una condicin de START, a partir de la cual los a o esclavos esperarn informacin. Luego, se env el ADDRESS que se desea aca o a ceder. Seguidamente, cada esclavo comparar esta direccin con su address y si a o conicide enviar un ACKNOWLEDGE. A partir de ese instante, comenzar la a a transmisin de informacin entre los dos dispositivos, hasta que se env la o o a se al de STOP. n START - primero tira la l nea SDA a un estado bajo y luego, hace lo mismo con SCL. ADDRESS - la gura 4.5 muestra la especicacin: o

Figura 4.5: Address I 2 C ACKNOWLEDGE - el esclavo que enviar un ACK, tira la l a nea SDA a 79

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR un estado bajo inmediatamente despus de la recepcin del octavo bit transe o mitido, en caso de ser un byte de ADRESS, despus de su evaluacin. e o STOP - primero lanza a un estado alto SCL y luego SDA. Estudio realizado en base a [ESAcademy2, 2000].

4.2.4.

Cable par trenzado

Existen dos tipos de cables de par trenzado: cable de par trenzado sin apantallar (UTP) y par trenzado apantallado (STP). Se agrupan una serie de hilos y se encierran en un revestimiento protector para formar un cable. La cantidad total de pares que hay en un cable puede variar. El trenzado elimina el ruido elctrico de los pares adyacentes y de otras e fuentes como ser motores, rels y transformadores. e El cable UTP, es el tipo ms conocido y ha sido el cableado LAN ms utia a lizado en los ultimos a os. El STP utiliza una envoltura con cobre trenzado, n ms protectora y de mayor calidad que la usada en el cable UTP. Utiliza una a lmina rodeando cada uno de los pares, permitiendo soportar mayores tasas a de transmisin que UTP. o Los estndares denen categor de UTP, ver [Monograas, 2007] y [Wikipedia7, 2007]: a as Categor 1 - adecuado para transmitir voz, pero no datos. a Categor 2 - para transmisin de datos de hasta 4 Mbps. a o Categor 3 - soporta transferencia de datos de hasta 16 Mbps. a Categor 4 - permite transmitir datos hasta 20 Mbps. a Categor 5 - velocidades hasta 100 Mbps. a Categor 5e - desempe o posible hasta frecuencias de 100 MHz. a n Categor 6 - capacidad hasta 250 MHz. a Categor 6a - aplicaciones futuras hasta 10 Gbps. a Categor 7 - tolera frecuencias hasta 600 MHz. a

80

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR

4.3.

Deniciones relativas a la arquitectura multiprotocolar

Se establece un modo de conexin maestro - esclavos. El Rabbit realiza la o labor de maestro (coordina la comunicacin), en tanto que los mdulos exteo o riores son los esclavos, y solo responden ante consultas del Rabbit. Los mdulos exteriores se identican en el sistema a travs de un ID o o e address, un tipo de mdulo y un n mero serial. El usuario deber establecer o u a el ID en cada uno de stos. Vale recalcar que cada mdulo exterior controla e o y permite el funcionamiento de un unico protocolo. El trmino accinhace e o referencia al empleo de ste ultimo. e Peridicamente, el Rabbit realiza un ciclo de consulta, cuestionando la o existencia de mdulos en cada direccin. Para especicar el destinatario de la o o comunicacin, el primer campo del mensaje es el ID correspondiente. o Se dene la regla de los tres intentosomo el mecanismo por el cual el Rabc bit retransmite un mensaje al mismo mdulo exterior. Cada mensaje, puede o transmitirse tres veces - generando de sta forma - tres intentos de transmisin. e o El concepto, abarca tambin, un intervalo de espera entre intento e intento. e Al env de informacin desde el Rabbit hacia los mdulos se lo denomina o o o mensaje, mientras que la comunicacin con origen en los mdulos y destino o o el Rabbit, se la dene como noticaciones. La gura 4.6 muestra esta interaccin. o

Figura 4.6: Interaccin o

4.4.

Descripcin del protocolo por capas o

El protocolo se encuentra detallado y analizado capa por capa. La arquitectura est compuesta por tres capas: capa f a sica, capa de conexin y capa de o acciones. La gura 4.7 muestra un diagrama de las mismas 81

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR

Figura 4.7: Capas

4.4.1.

Capa f sica

En esta seccin se describe el anlisis efectuado para la implementacin de o a o la capa f sica de la arquitectura multiprotocolar. Se especican las decisiones tomadas para su eleccin y las consideraciones prcticas, elocuentes a su utio a lizacin. o El primer parmetro de dise o fue la utilizacin del PIC 16F628A, como a n o el manejador de la inteligenciapara los mdulos exteriores. La eleccin fue o o tomada en base a: bajo costo y disponibilidad en el mercado local (USD 5 empresa Eneka). amplias facilidades y caracter sticas conocidas. Ver seccin 5.2: o
o o o o o o

16 pines de entrada/salida. 3 timers congurables. mdulo PWM. o 2 comparados de tensin. o USART integrada. Oscilador de 4 MHz.

conocimiento de funcionamiento por previo empleo. Investigacin inicial o Para la implementacin de la capa f o sica se consideraron las siguientes posibilidades: 1. Arquitectura basada en el bus IEEE - 488 (GPIB) Como se vio anteriormente, el protocolo GPIB utiliza 24 pines. Si se quiere implementar el protocolo en s el Rabbit podr destinar esta cantidad de , a pines, pero el PIC 16F628A, no. Existen pines que no aportan valor para la 82

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR instrumentacin de la arquitectura multiprotocolar, por tanto, tomando como o base el bus 488, se decidi considerar: o cuatro l neas de datos (en vez de ocho) para enviar 2 nibbles, primero los 4 bits menos signicativos y luego los restantes 4. cinco l neas de handshaking:
o o o o o

NRFD - no est preparado para recibir un nuevo dato. a DAV - dato vlido. a EOI - identica el ultimo nibble que se transmiti. o IFC - resetea el bus y lo limpia. SRQ - cuando un esclavo pide servicio porque est fallando. a

una l nea de tierra. Sumando conexiones, ser necesarias diez l an neas para la implementacin o propia de la capa f sica. La ocupacin de los puertos de E/S del PIC estar o a casi saturada (faltar considerar los pines utilizados para el direccionamiena to del mdulo exterior y las seales de alarma). La recepcin y transmisin o n o o de datos se realizar por polling e insumir varias temporizaciones, ya que a a el protocolo debe satisfacer las necesidades temporales de cada l nea de control. La conexin entre mdulos exteriores ser en modo daisy-chain, por lo cual o o a se necesitar elaborar una lgica que permitiese el funcionamiento en caso de a o fallas en alg n mdulo. u o La gran ventaja, es su estructura de bus paralelo, todos los mdulos pueden o conectarse paralelamente, l nea a l nea. Contrariamente, las salvedades entre distancias ser un impedimento - distancia entre mdulo y mdulo, y distana o o ica mxima del bus -. a 2. Arquitectura cimentada en el bus I C El I C no es un protocolo probado a nivel industrial, se emplea generalmente en comunicaciones entre dispositivos internos de una placa. Es un bus serial, pero los dispositivos se conectan en paralelo. El Rabbit 2 puede implementar una interfaz I C por software (tiene una librer dedicaa 2 da), pero el PIC no. Como informacin adicional, un PIC con interfaz I C es o ms caro que el 16F628A. a
2 2

83

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR Las restricciones en las distancias son una consideracin importante. o 3. Implementacin de una interfaz serial RS232 con lgica opero o ativa El RS232 es un protocolo pensado para entornos no industriales y de corta distancia. Ver seccin 5.2. o Ser necesario implementar cierta lgica digital de control, utilizando buers a o tri-state y otros integrados, con el propsito de no generar colisiones ni cortoo circuitos cuando dos o ms mdulos exteriores estn transmitiendo al mismo a o e tiempo. Se trabajar sobre un bus paralelo enviando strings seriales. El mayor a obstculo residir en la distancia mxima del bus y la complejidad de la lgica. a a a o 4. Arquitectura sustentada en el protocolo RS485 Es un protocolo muy utilizado en ambientes industriales. Se podr separar a el bloque central de los mdulos exteriores una distancia considerable, dado o que soporta distancias de hasta 1000 metros. Con una conexin mediante par o tranzado se puede transmitir hasta distancias de 100 metros (dependiendo del aislamiento del cable, etc), siendo sta, una distancia excesiva como puntualie dad de dise o. n Este protocolo permite conectar los dispositivos en forma de bus, de tal forma, que el maestro puede establecer un contacto directo con cada uno de los mdulos exteriores. Otra ventaja es la reduccin de costos, ya que se instala o o solo un par de cables.

Decisin nal o Para la decisin nal se consideraron los siguientes aspectos: o Distancias mximas alcanzables. a Velocidad de transmisin del medio f o sico. Limitaciones de adquisicin de hardware. o Facilidad de implementacin. o Localizacin de fallas. o Se resolvi que el protocolo de capa f o sica que brindar mayor exibilidad, a granularidad y escalabilidad, ser el RS485. Seg n las consideraciones antea u riores, cumple los mayores requisitos para la implementacin de un protocolo o 84

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR propio. As se conectar dispositivos en paralelo pero el modo de transmisin , an o ser serial TTL. a Hardware Para generar un bus RS485, se decidi la compra de integrados MAX485. o Dichos integrados tienen un costo accesible (USD 4) y estn disponibles en a plaza. Pueden conectarse hasta 32 estaciones en un mismo bus. Seg n la hoja u de datos, ver Anexo D, es necesario adaptar impedancias a travs del mtodo e e del stub para reducir la reexin de se ales a travs de la l o n e nea de transmisin. o All se recomienda utilizar una resistencia de 120 en la terminacin del bus. o Esta recomendacin es debida a la impedancia caracter o stica del cable par trenzado. El circuito de recepcin tiene una resistencia de entrada de 12 K, solo o absorbe una peque a parte de la corriente. Cuando la intensidad llega al nal n de la l nea se reeja, pero al estar en paralelo con una resistencia de 120 , la suma de intensidades produce una disminucin entre ellas. Asimismo, se o desprende calor y emisiones electromagnticas (EMI). e Si el bus estuviese formado por la cantidad mxima de mdulos exteriores a o (16), la resistencia de entrada vista ser a: Rve = 1
16 ( 12K )

= 750.

Considerando la adaptacin de 120 , la resistencia equivalente ser o a: Re = 1


1 ( 750+1/120 )

= 103, 45.

Considerando una alimentacin de 5V, la potencia disipada ser o a V = 216, 6mW. P = Re


2

Seg n [AN723, 1983], pg 6, se utiliza una resistencia de pull-up y otra u a de pull-dowm, para normalizar la situacin en la cual el bus se encuentra en o estado idle(nivel en alta impdancia), se recomienda el uso de dos resistencias de 1 K. No fue necesaria esta consideracin, ya que la solucin implementada o o no emplea estados de alta impedancia. El mecanismo por el cual funciona el MAX485 es el siguiente: 85

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR El receptor, en una linea diferencial, recibe slo la diferencia de tensin eno o tre las dos se ales (A y B). Ambas se ales, son opuestas y complementrarias. n n La m nima diferencia de tensin entre ambas se ales debe ser de 200mV. o n El cable que conecta los dispositivos MAX485 es un par trenzado UTP CAT5, ya que es el de mayor uso en el mercado. En la gura 4.8 se muestra lo expresado anteriormente.

Figura 4.8: Arquitectura de la Capa Fisica Los integrados deben alimentarse por una fuente de 5 VDC. Para generar este voltaje se emplea un regulador de tensin LM7805. seg n la recomeno u dacin de la hoja de datos - ver Anexo D - se debe alimentar el circuito con o una fuente de 12VDC para generar una se al estable a la salida del regulador. n Por lo tanto, cada componente del sistema (bloque central y mdulos exterioo res) deben alimentarse con una fuente de continua de 12 VDC, 500 mA. Para resetear el Rabbit (ante fallas no deseadas), se conect un pulsador o con una resistencia en pull-up. El circuito de reset de los mdulos exteriores o est especicado en el Cap a tulo 5 Por informacin concreta de conexionado, ver Anexo (B) o

4.4.2.

Capa de conexin o

Cualquier medio de transmisin debe ser capaz de proporcionar una transo misin sin errores, es decir, un trnsito de datos able a travs de un enlace o a e f sico. Debe crear y reconocer los l mites de las tramas, as como resolver los problemas derivados del deterioro o prdida de tramas. La capa de conexin se e o 86

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR ocupa del direccionamiento f sico de la informacin, la noticacin de errores o o y de la distribucin ordenada de tramas. o Comunicacin protocolar o Se dise un protocolo capaz de cumplir los siguientes requisitos: no comunicacin lineal [comando, respuesta] - facilidad de adaptacin a una o o conexin serial. o comandos y respuestas simples - entendibles para no ocupar demasiada capacidad de procesamiento ni memoria. empleo de caracteres ASCII - para poder ser depurado desde una terminal de texto (Hyperterminal). Mensaje El mensaje es un recado que env el Rabbit a los mdulos exteriores. Exisa o ten comandos de conguracin y comandos de funcionamiento que se emplean o para los siguientes usos: buscar la cantidad de mdulos exteriores presentes en el sistema. o exigirle a un mdulo exterior espec o co la realizacin de cierta accin. o o consultarle a un mdulo exterior de entradas digitales si tiene alg n o u anuncio espordico para noticarle. a Estructura La gura 4.9 muestra la estructura del mensaje.

Figura 4.9: Estructura del mensaje Especicacin o DIRECCION = direccin del mdulo de salida (dos nmeros en formato o o u ASCII). INTENTO = cantidad de veces que se envi el mensaje (nmero en formato o u ASCII). COMANDO = comando dirigido a los mdulos de salida (caracter ASCII). o PARAMETRO = parmetro del comando (dos nmeros en formato ASCII) a u 87

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR Intento Valor 0 Primera vez que se env a 1 Segunda vez que se env a 2 Tercera vez que se env a Tabla 4.6: Signicado del campo Intento

PARIDAD = funcin de paridad calculada sobre la DIRECCION, el INo TENTO, el COMANDO y el PARAMETRO. el LSB calcula la paridad de todos los LSB de los campos involucrados, el segundo de todos los segundos bits de los campos, y as sucesivamente. Se expresa en hexadecimal. LF = n de l nea (caracter ASCII 10). Intento La tabla 4.6 dene el signicado de cada valor del campo intento. Comando de conguracin o U Signicado: Are you. Pregunta si existe un mdulo de salida con la direccin correspondiente. o o Comandos de funcionamiento A Signicado: Action. Ordena al mdulo exterior la ejecucin de una determinada accin. o o o Q Signicado: Question. Consulta a un mdulo exterior de entradas digitales sobre la llegada de o alg n evento espordico. u a R Signicado: Reset. Exige el reseteo del mdulo exterior. o

88

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR S Signicado: Stop. Solicita que el mdulo exterior deje de ejecutar la accin enviada anterioro o mente. Parmetro a El signicado del campo parmetro, se establece por la tabla 4.7. a Paridad El byte de paridad se emplea para vericar la integridad del mensaje cunado ste arriba a los mdulos exteriores. Los tipos de paridad se especican segn e o u la tabla 4.8. Noticaciones Se denen como las reacciones de los mdulos exteriores a los distintos o eventos que ocurren. Existen 3 tipos: Noticacin de presencia - conrma la existencia del ID consultado, exo plicitando el tipo de mdulo exterior y una identicacin propia. o o Noticacin de respuesta - certica la recepcin de la accin solicitada. o o o Noticacin de evento espordico - comunica la llegada de un evento o a espordico (solo para mdulos exteriores de entradas digitales). a o Estructura de la noticacin de presencia o Ver gura 4.10

Figura 4.10: Noticacin de presencia o Estructura de la noticacin de respuesta o Ver gura 4.11 Estructura de la noticacin de evento espordico o a Ver gura 4.12

89

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR

Parametro 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

Signicado No ejecutar ninguna accin o Ejecutar accin n mero 1 o u Ejecutar accin n mero 2 o u Ejecutar accin n mero 3 o u Ejecutar accin n mero 4 o u Ejecutar accin n mero 5 o u Ejecutar accin n mero 6 o u Ejecutar accin n mero 7 o u Ejecutar accin n mero 8 o u Ejecutar accin n mero 9 o u Ejecutar accin n mero 10 o u Ejecutar accin n mero 11 o u Ejecutar accin n mero 12 o u Ejecutar accin n mero 13 o u Ejecutar accin n mero 14 o u Ejecutar accin n mero 15 o u Ejecutar accin n mero 16 o u Ejecutar accin n mero 17 o u Ejecutar accin n mero 18 o u Ejecutar accin n mero 19 o u Ejecutar accin n mero 20 o u Ejecutar accin n mero 21 o u Ejecutar accin n mero 22 o u Ejecutar accin n mero 23 o u Ejecutar accin n mero 24 o u Ejecutar accin n mero 25 o u Ejecutar accin n mero 26 o u Ejecutar accin n mero 27 o u Ejecutar accin n mero 28 o u Ejecutar accin n mero 29 o u Ejecutar accin n mero 30 o u Ejecutar accin n mero 31 o u Ejecutar accin n mero 32 o u

Tabla 4.7: Signicado del campo Parametro

90

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR Tipo de paridad 1 0 Signicado Paridad impar Paridad par

Tabla 4.8: Signicado del campo paridad

Figura 4.11: Noticacin de respuesta o Especicacin o IDENTIFICADOR = identicador de respuesta (caracter ASCII). TIPO = tipo de mdulo de salida (nmero en formato ASCII) o u o o N SERIE = n serial de reconocimiento del mdulo (caracter ASCII) o PARAMETRO = parmetro del comando (nmero en formato ASCII). a u LF = n de l nea (caracter ASCII 10). Identicador Los identicadores se muestran en la tabla 4.9. Tipo Los tipos de mdulos que pueden denirse se especican en la tabla 4.10. o N mero de serie u Es un n mero caracter u stico de cada mdulo de salida, se representa a o travs de un caracter ASCII. e Parmetro a

Identicador R P E

Traduccin o Respuesta a mensaje del Rabbit Rplica de presencia e Aviso de evento espordico a

Tabla 4.9: Signicado del campo Identicador

91

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR

Figura 4.12: Noticacin de evento espordico o a Tipo 0 1 2 3 Traduccin o Mdulo de salida Ir o Mdulo de salida RS232 o Mdulo de salidas digitales o Mdulo de entradas digitales o

Tabla 4.10: Signicado del campo tipo

El signicado del campo parmetro, se establece por la tabla 4.11. a

Ejemplo de comunicacin o 010U00 Rabbit consulta por la existencia de un mdulo en el address 1. o P3A El mdulo exterior 1 notica su presencia. o 010Q00 Rabbit le pregunta si ocurri un evento espordico. o a E4 El mdulo exterior 1 notica que se debe realizar la accin no 5. o o 151A28 Rabbit le exige al mdulo 15 la realizacin de la accin 28. o o o

Parmetro a 0 1 2 3 4

Traduccin o Ejecutar accin n mero o u Ejecutar accin n mero o u Ejecutar accin n mero o u Ejecutar accin n mero o u Ejecutar accin n mero o u

0 1 2 3 4

Tabla 4.11: Signicado del campo Parmetro a

92

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR R El mdulo exterior 15 conrma la recepcin de la orden. o o

4.4.3.

Capa de acciones

La tabla 4.12 dene la capa de acciones. Esta capa busca la coherencia entre las acciones realizadas en los diversos mdulo exteriores. Un n mero de o u accin determinado se corresponde con una labor espec o ca. Por ejemplo: Para hacer funcionar el Power en cualquier mdulo exterior Ir habr que o a o ejecutar la accin n 1. o Para utilizar el Vol + en cualquier mdulo exterior Ir habr que ejecutar o a la accin no 5. o Para activar la salida no 3 en cualquier mdulo exterior de salidas habr que o a o ejecutar la accin n 3. o Para actuar sobre el puerto serial 1 en un mdulo exterior RS232 habr que o a ejecutar acciones desde la 1 a la 16. Para trabajar con el puerto serial 2 en un mdulo exterior RS232 habr que o a ejecutar acciones desde la 17 a la 32.

4.5.

Anlisis de velocidades y tiempos a

Establecida la comunicacin en 9600 baudios 8N1, se calcularon los tiempos o relevantes. Este estudio, intenta argumentar el motivo de eleccin de un valor o espec co del tiempo de espera entre intento e intento, para la transmisin de o un mensaje. Adicionalmente, se calculan otros tiempos relevantes a la implementacin de la solucin. o o La velocidad de transmisin se dene como el n mero de bits transmitidos o u por segundo al enviar un ujo continuo de datos, calculndose de la siguiente a forma: simbolos bits Vt = seg ssmbolo Como cada baudio (s mbolo) est formado por 10 bits (1 bit de start, 8 bits a de datos y 1 bit de stop), la Vt = 9600 10 = 96kbps

93

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR

Accin o 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

Mdulo Ir o Sin accin o No 1 No 2 No 3 No 4 No 5 No 6 No 7 No 8 No 9 No 0 Power Tv/Av Channel + Channel Vol + Vol Open/Close Play/Pause Stop Track + Track Arriba Abajo Derecha Izquierda Enter Menu Clear Zoom Mute Rew FF

Mdulo Salidas o Sin accin o Salida 1 Salida 2 Salida 3 Salida 4 Salida 5 Salida 1,2 Salida 1,3 Salida 1,4 Salida 1,5 Salida 2,3 Salida 2,4 Salidas 2,5 Salidas 3,4 Salidas 3,5 Salidas 4,5 Salidas 1,2,3 Salidas 1,2,4 Salidas 1,2,5 Salidas 1,3,4 Salidas 1,3,5 Salidas 1,4,5 Salidas 2,3,4 Salidas 2,3,5 Salidas 2,4,5 Salidas 3,4,5 Salidas 1,2,3,4 Salidas 1,2,3,5 Salidas 1,2,4,5 Salidas 1,3,4,5 Salidas 2,3,4,5 Salidas 1,2,3,4,5 Sin accin o

Mdulo RS232 o Sin accin o Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial Accionar puerto serial

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

Tabla 4.12: Capa de Acciones

94

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR Noticacin o De presencia De evento espordico a De respuesta Traduccin o 4 3 2 Ttn 416,66 seg. 312,5 seg. 208,33 seg.

Tabla 4.13: Tiempo de transferencia de las noticaciones

Seguidamente, se concluye que el tiempo de bit es de 1 = 10, 417seg 96kbps

F sicamente, el bus formado a travs del MAX485 soporta velocidades hase ta 250 Kbps, por lo cual la velocidad de transmisin implementada no fue un o impedimento.

4.5.1.

Tiempo de transferencia del mensaje (Ttm )

Como una trama est compuesta por 8 bytes, el tiempo de transferencia a de trama es de 1 8 = 833, 33seg 9600 . Para su clculo prctico, es necesario agregar el delay correspondiente a la a a ejecucin de las rutinas de carga del byte en el buer de transmisin y su o o correspondiente env o.

4.5.2.

Tiempo de transferencia de las noticaciones (Ttn )

El Ttn de cada noticacin se calcula multiplicando la cantidad de bytes o 1 (k) de cada trama por el tiempo de transferencia de un byte: Ttn = 9600 k. La o tabla 4.13 muestra el Ttn para cada noticacin.

4.5.3.

Retardo de propagacin de los integrados utilizao dos (Rp )

Los datos escritos en la tabla 4.14, fueron obtenidos de las hojas de datos correspondientes. Ver Anexo D. El uso de estos integrados se encuentra especicado en el 5.

95

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR Integrado Rp MAX485 90 nseg. MC14001 125 nseg. CD4555 200 nseg. 74HC153 10 nseg. Tabla 4.14: Retardo de propagacin de los integrados o

4.5.4.

Tiempo de espera entre intento e intento (Te)

Al ser el Te relevante a la respuesta de los mdulos exteriores y como la o trama ms larga de las noticaciones es la de presencia, resulta coherente a aguardar un tiempo proporcional a este tiempo de trama. Por lo tanto, Te = (Ttn + ) siendo la sumatoria de todos los retardos de propagacin de los integrados o implicados. Tomando el caso de prdida de sincronismo entre tramas (byte LF), y cone siderando que esperar un n mero impar de tramas no propagar el error de u a 5 sincronizacin, un = 2 es un tiempo coherente para lograr la comunicacin o o con los mdulos exteriores, permitirles el procesamiento del mensaje para que o luego env la noticacin correspondiente. en o El mximo queda determinado por los mdulos exteriores RS232, dado a o que en stos, la informacin que uye hacia el Rabbit circula por un mae o yor n mero de integrados. Se debe considerar el retardo de propagacin del u o MAX485, del CD455 y del MC14001 max = (90nseg. + 200nseg. + 125nseg.) 4bytes = 1, 66seg. Este valor representa un 0,39 % del tiempo de transferencia de las noticaciones. Por su poca injerencia, fue despreciado. Por lo tanto, Te =
5 2

416, 66seg = 1, 042mseg.

4.5.5.

Tiempo mximo del ciclo de consulta del Rabbit a (Tcm )

El tiempo del ciclo de consulta del Rabbit se reere al tiempo que demora el Rabbit en preguntar por la presencia de todos los mdulos exteriores. Para o su valor mximo, hay que considerar el peor caso: a 96

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR Mdulo exterior Demora en inicializacin o o Ir 991 seg. Salidas digitales 170 seg. Rs232 165 seg Entradas digitales 195 seg. Tabla 4.15: Tiempo de inicializacin de los mdulos exteriores o o

existe un solo mdulo exterior presente en el sistema. o responde en el tercer intento de consulta, luego de transcurridos (Te Ttm ) segundos. Tcm = (T e T tm) + 2 Te + 15 Te 3 = 49, 60mseg.

4.5.6.

Tiempo de inicializacin de los mdulos exterioo o res (Ti)

Denota el tiempo m nimo que debe aguardar el Rabbit para transmitir un mensaje al mdulo 00 (siempre que est presente), cuando se reinicia el sistema. o e Se considera el reinicio simultneo del bloque central y el mdulo exterior. a o Para su medida, se control el tiempo que tardan los mdulos exteriores en o o estar preparados para la llegada de un byte, una vez reiniciado el sistema. El valor fue obtenido del PIC Simulator IDE, corriendo instruccin por instruco cin de cada implementacin de cdigo. La demora de cada mdulo est eso o o o a pecicada en la tabla 4.15. Ti = 991 seg. Por cuestiones prcticas se estableci en 1mseg. a o

4.5.7.

Tiempo entre env y env de bytes (Tb ) o o

Es el tiempo jo m nimo, entre env y env de byte, que debe esperar o o el Rabbit para que los mdulos exteriores puedan procesar la informacin y o o guardarla en las variables correspondientes. Tambin se emple la herramienta PIC Simulator IDE, constatndose la e o a necesidad de aguardar 350 seg para realizar las funciones correspondientes.

97

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR

4.5.8.

Tiempo m nimo entre acciones consecutivas al mismo mdulo exterior (Tac ) o

Se dene como la demora ja m nima que debe aguardar el Rabbit para enviar dos acciones seguidas al mismo mdulo exterior. Est denida por la o a accin ms larga, la cual se corresponde con el envi de una trama infrarroja. o a o Considerando la duracin de la trama infrarroja, (Ver seccin 5.2) un tiemo o po coherente ser 90 mseg. a

4.6.

Funcionamiento

Esta seccin reere al trabajo del sistema, estableciendo consideraciones y o prioridades ante situaciones determinadas.

4.6.1.

Ciclo de consulta

El Rabbit pregunta por el ID0 hasta el ID15. Cada mdulo exterior aguarda la consulta por su ID. o Si cumplida la regla de los tres intentos ning n mdulo exterior ha reu o spondido, el Rabbit pasar a buscar el siguiente ID. a Cada mdulo exterior responde con una noticacin de presencia. o o

4.6.2.

Acciones del Rabbit

El Rabbit env una orden a un mdulo exterior espec a o co. Si el mensaje recibido tiene un error de paridad, comparando el valor del campo paridad del mensaje con la paridad calculada, no se responde el mensaje. Si luego de tres intentos se percibe la misma situacin, el o mdulo exterior enciende una se al de alarma diagnosticando una falla o n (prende un led). Si el valor del campo comando es desconocido, no se responde el mensaje. Si luego de tres intentos se observa el mismo escenario, el mdulo exterior o enciende una se al de alarma (el mismo led que la circunstancia anterior). n Si el mensaje recibido es correcto, el mdulo exterior cursa una notio cacin de respuesta. o Si cumplida la regla de los tres intentos el mdulo no ha respondido, o el Rabbit encender una se al de alarma diagnosticando la desconexin a n o momentnea de un mdulo en el sistema (un aviso en la pgina web). a o a 98

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR

4.6.3.

Eventos espordicos a

Si existen mdulos exteriores de entradas digitales presentes en el sistema, o el Rabbit consulta por la aparicin de alg n evento espordico. o u a Si el mdulo ha detectado la aparicin de un evento, env una notio o a cacin de evento espordico. Si el Rabbit continua consultando, vencida o a la regla de los 3 intentos, ste, enciende una se al de alarma comunicane n do no haber podido despachar la noticacin correspondiente (prende un o led). Si el mdulo no ha advertido un evento espordico, no realiza ninguna o a accin. o Si cumplida la regla de los tres intentos, el Rabbit no recibe la noticacin o correspondiente, determina que no ha llegado ning n evento espordico. u a

4.6.4.

Consideraciones

Seguidamente a un ciclo de consulta, el Rabbit buscar mdulos extea o riores de entradas digitales para cuestionarlos sobre la llegada de un evento espordico. Este proceso se realizar cada dos segundos. Sabido a a es que el sistema permanecer la mayor parte del tiempo en un estado de a standby(aguardando una accin del servidor o la llegada de un evento o espordico), por lo cual, aguardar dos segundos para realizar un nuevo a ciclo de consulta resulta un tiempo sumamente prudencial. Las acciones que realizan los mdulos exteriores se efect an una vez o u enviada la noticacin de respuesta. o Ante la presencia de dos o ms mdulos exteriores con el mismo address, a o se decreta la ausencia de esa ID. Para agregar un nuevo mdulo exterior al sistema, simplemente se lo o debe conectar al bus. Para cambiar el ID de un mdulo exterior en pleno funcionamiento del o sistema, se debe realizar el cambio y luego resetear el mdulo. o

4.7.

Implementacin en la placa Rabbit o

Tomando como base las pruebas especicadas en el Cap tulo 3. Seccin 5 o se comenz con la programacin de la solucin. o o o La base de esta implementacin es la creacin de tres buers de manejo, a o o saber: 99

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR buer de IDs (ids mod[ ]): contine los IDs activos dentro del sistema buer de tipos de mdulos (tipo mod[ ]): denota los tipos de mduo o los exteriores presentes. buer de n meros de serie (nserie mod[ ]): abarca la identicacin u o de cada mdulo. o

4.7.1.

Universalidad de IDs

En cada ciclo de consulta se actualizan los valores de los buers mencionados anteriormente. El comportamiento del servidor web - dndose un cambio en una estruca tura .CGI -, genera mensajes hacia los mdulos exteriores con comandos de o comportamiento. Las acciones estn predenidas ante un cambio en cualquier a estructura, es decir, el Rabbit conoce el destinatario (tipo de mdulo y n mero o u serial) y el contenido del mensaje a enviar, pero no el ID correspondiente. Para entregar el mensaje al mdulo correspondiente, recorre los buers de manejo o y establece la ubicacin del mismo dentro del sistema. De esta forma, se loo gra la universalidad de IDs, siendo el ID una variable independiente de la programacin del Rabbit. o

4.7.2.

Procedimiento

La programacin del modulo central se realizo en Dynamic C segn el o u siguiente procedimiento: 1. Realizar todas las conguraciones y seteos. 2. Preguntar por el ID 00.
o o

A. Esperar un determinado tiempo para preguntar otra vez B. Contar las veces que pregunt. o

3. Si el mdulo contesta, establecer que existe el ID 00 o 4. Repetir la secuencia quince veces ms, con los restantes IDs. a 5. De acuerdo a la accin que le solicite el servidor web, enviar el mensaje o por mdulos. o
o o

A. Ver si el mdulo responde por timeout. o B. Si no responde el mensaje empezar a contar la regla de los tres intentos y retransmitir el mensaje. Si viola la regla prender el led correspondiente a ese mdulo. o 100

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR


o

C. Si el mdulo respondi armativamente, seguir enviando meno o sajes de accin a los distintos mdulos siguiendo el mismo proceso. o o

a o Actualmente, el punto No 5 est en etapa de testeo y maduracin, ya que la programacin mediante estructuras .CGI es tediosa. Se est buscando la simo a plicacin de esta parte del cdigo para su mayor legibilidad, lo cual permitir o o a seguir escalando en la implementacin. o

4.8.

Implementacin en los mdulos exteriores o o

La solucin se implement programando en lenguaje Assembler en el PIC, o o utilizando el programa MPLAB IDE. La primer consideracin se apoy en la realizacin de una plataforma com n o o o u para todos los mdulos, sin excepcin. Debe existir un mecanismo general o o que permita el dilogo entre entidades sin importar el tipo de mdulo, la a o programacin no es particular, es global. o

4.8.1.

Procedimiento

La programacin de la plataforma general se realiz de acuerdo al siguiente o o procedimiento: 1. Realizar todas las conguraciones y seteos (consumar un manejador de interrupciones). 2. Determinar el ID del mdulo y guardar dicho valor en memoria. o 3. Habilitar interrupciones. 4. Aguardar un mensaje del Rabbit. 5. Procesar la informacin o 6. Responder el mensaje. 7. Ejecutar la accin si fuese necesario. o 8. Esperar para recibir otro mensaje 1. Realizar todas las conguraciones y seteos Primariamente, se limpian las variables a utilizar (bytes reservados en la memoria RAM). Luego, se setean los distintos bloques del PIC que forman parte de la implementacin del protocolo a controlar. Estos pueden ser: o

101

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR Lectura de la EEPROM y guardado en la RAM Mdulo PWM o Perifrico USART e Puertos de E/S Seguidamente, se establece el tipo de mdulo exterior y el n mero de serie o u que lo identica. El manejador de interrupciones dene la accin a tomar ante la ocurrencia o de una determinada interrupcin. La unica interrupcin com n a todos los o o u mdulos es la interrupcin de recepcin de la USART. o o o 2. Determinar el ID del mdulo y guardar dicho valor en memoria o Se busca el valor de los primeros bits del puerto A y se realiza la conversin o ASCII correspondiente, guardando las decenas y las unidades del ID en forma separada. 3. Habilitar interrupciones De acuerdo al tipo de mdulo se habilitan las interrupciones pertinentes. o Es obligacin habilitar la interrupcin GIE para disponer del resto. La intero o rupcin de recepcin de la USART es com n a todos los mdulos. o o u o 4. Aguardar un mensaje del Rabbit A medida que se genera una interrupcin de recepcin de la USART, se o o guarda cada byte en un variable distinta. Este mecanismo se detiene ante la llegada de un caracter ASCII 10. 5. Procesar la informacin o Aqu se realiza otro nuevo procedimiento a saber: Deshabilitar la interrupcin de recepcin de la USART. o o Fijarse si el mensaje corresponde a ese mdulo, de lo contrario vuelve a o esperar por un nuevo mensaje. Determinar si el comando recibido es correcto, si es errneo vuelve a o esperar por un nuevo mensaje.

102

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR Vericar violacin de intentos, si se supera la cantidad de intentos (obsero vando el campo intentos del mensaje) se activa la alarma correspondiente. Cotejar y calcular la paridad, si existe una diferencia, se vuelve a esperar por un nuevo mensaje. Decidir Respuesta, de acuerdo al comando recibido se decide la noticacin. o 6. Responder el mensaje Se env la noticacin correspondiente. a o 7. Ejecutar la accin si fuese necesario o Se verica el campo parmetro del mensaje y de acuerdo a su valor, se a realiza la accin correspondiente. Al nalizar la accin, se vuelve a habilitar la o o interrupcin de recepcin de la USART. o o 8. Esperar para recibir otro mensaje Aguarda un nuevo mensaje del Rabbit y reitera el proceso.

4.8.2.

Aspectos a considerar

La sincronizacin entre el Rabbit y el mdulo exterior se realiza por medio o o del caracter ASCII 10. Se habilita la recepcin interruptiva de la USART cada vez que se termina o de ejecutar una accin o bien un mdulo exterior de entradas digitales notica o o un evento espordico. Puede ocurrir, que al estar ejecutando una determinada a accin, un mdulo pierda parte del mensaje que envi el Rabbit o un mensaje o o o entero. No resulta un inconveniente, ya que Rabbit retransmite hasta un mxia mo de 3 intentos. El Tac asegura que no se perdern tramas entre mensajes a consecutivos a un mismo mdulo exterior. o

4.8.3.

Pines de utilizacin genrica o e

La utilizacin de esta plataforma genrica deriv en la utilizacin de pines o e o o comunes en los PIC, permitiendo que todas las subrutinas generales controlen las mismas consideraciones en cada puerto. Estos pines, estn especicados a claramente en la seccin 5.4. o

103

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR

4.8.4.

Archivos base

Los siguientes, son los archivos espec cos de cada mdulo. La plataforma o general est programada dentro de cada uno: a mod ir.asm - programa para el mdulo exterior Ir. o mod rs232.asm - programa para el mdulo exterior RS232. o mod in.asm - programa para el mdulo exterior de entradas digitales. o mod out.asm - programa para el mdulo exterior de salidas digitales. o El cdigo fuente de cada archivo se encuentra publicado en el Anexo C o

4.8.5.

Programacin en el PIC o

La herramienta de programacin utilizada fue el Easy ICD2. Es un hardo ware compatible con el MPLAB IDE que consta de dos partes: La primera provee la interfaz hacia el PC, permitiendo la comunicacin o y programacin. o La segunda es la interfaz de conexin con el PIC. o La gura 4.13 es una fotograf de sta herramienta de hardware. a e

Figura 4.13: Easy ICD2

4.9.

Solucin no implementada o

Tomando las mismas consideraciones de capa f sica y capa de acciones, primariamente, se consider la implementacin de una solucin basada en mulo o o timasters (un mdulo exterior de entradas digitales pudiendo funcionar como o un cuasi-maestro). El Rabbit ociar de maestro para el resto de los mdulos a o y un cuasi-esclavo, en determinados momentos, para los mdulos de entradas o 104

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR digitales. El prejo cuasi, reere que no se cumplir la totalidad de la funcin, a o sino la gran mayor los mdulos interrumpir la actividad del Rabbit para a: o an noticarle de un evento espordico, pero no comandar otros mdulos. Estos, a an o volver a su funcin de esclavo cuando el Rabbit les conrmara la recepcin an o o de dicho evento. Dise ando de sta forma, se producir colisiones. El manejo de las misn e an mas estar resuelto en la capa de conexin. Estas colisiones se dar en los a o an siguientes casos: El Rabbit enviase un mensaje y un mdulo exterior de entradas noticase o un evento espordico. a Un mdulo exterior cualquiera transmitiese una noticacin de preseno o cia o respuesta, y un mdulo exterior de entradas noticase un evento o espordico. a El Rabbit enviase un mensaje y un mdulo exterior remitiese una notio cacin de presencia. o Para resolver las colisiones se pens una solucin basada en intentos con o o probabilidad. Obteniendo n meros randmicos, se determinar el permiso de u o a transmisin para cada entidad seg n una probabilidad que variar en cada o u a intento: 1er intento - probabilidad 100 % 2do intento - probabilidad 50 % 3er intento - probabilidad 25 % 4to intento - probabilidad 12,5 % 5to intento - probabilidad 6,25 % Esta medida eliminar las temporizaciones jas y solucionar la transa a misin de mensajes y noticaciones, de una manera estad o stica. Se pasar de intento a intento cada vez que: a El Rabbit no recibiese una noticacin de respuesta o presencia. o El mdulo exterior de entradas digitales no recogiese una conrmacin o o del Rabbit. Un mdulo exterior cualquiera recibiese un mensaje con el n mero de o u intento mayor al anterior. Un mdulo exterior cualquiera no recibiese una conrmacin del Rabbit o o ante un envi de noticacin de presencia. o o 105

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR

4.9.1.

Principio de funcionamiento

El principio de funcionamiento ahondar en lo siguiente: a Inicializacin del bus o Mediante consulta del Rabbit: El Rabbit preguntar por el ID1 hasta el ID16. a Cada mdulo exterior aguardar que le consulten por su ID. o a Si cumplida la regla de los cinco intentos ningn mdulo exterior hubiese u o respondido, el Rabbit pasar a buscar el siguiente ID. a Cada mdulo exterior responder con una noticacin de presencia. o a o El Rabbit raticar la presencia del mdulo exterior con un mensaje de a o conrmacin. o Mediante identicacin propia de los mdulos exteriores: o o Cada mdulo exterior env a una noticacin de presencia al inicializar. o ar o El Rabbit certicar la presencia del mdulo exterior por medio de un a o mensaje de conrmacin. o Si cumplida la regla de los cinco intentos el mdulo exterior no recibiese o conrmacin, permanecer en espera hasta que el Rabbit consultase por o a su ID. Acciones del Rabbit El Rabbit enviar mensajes con una determinada ID para un mdulo exa o terior espec co: Si el mensaje recibido tuviese un error de paridad (habiendo comparado la paridad enviada con la calculada) o el comando recibido fuese desconocido, los mdulos exteriores no transmitir una noticacin de o an o respuesta. Si luego de 5 intentos, el mensaje continuase siendo errneo, o el mdulo exterior encender una se al de alarma diagnosticando una o a n falla (prender un led). a Si el mensaje recibido fuese correcto, el mdulo exterior cursar una o a noticacin de respuesta. o
o

Si el mdulo exterior volviese a recibir el mismo mensaje del Rabbit o con n mero de intento mayor, despachar nuevamente una notiu a cacin de respuesta. o 106

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR Si cumplida la regla de los cinco intentos el mdulo no hubiese respono dido, el Rabbit prender una se al de alarma diagnosticando la dea n sconexin de un mdulo. o o Eventos espordicos a Un mdulo exterior de entradas advierte al Rabbit de la aparicin de un o o evento espordico mediante una noticacin. a o El Rabbit responde con un mensaje de conrmacin. o El Rabbit env un mensaje de accin para el mdulo exterior espec a o o co y continua con el proceso de acciones del Rabbit. Si cumplida la regla de los cinco intentos con el mdulo exterior de eno tradas no ha recibido un mensaje de conrmacin, enciende una se al de o n alarma diagnosticando que no pudo noticar del evento espordico. a Observaciones Los env de mensajes y noticaciones se efectuar bajo la regla de os an los cinco intentos con probabilidad. Las acciones de los mdulos exteriores se realizar una vez que stos o an e hubiesen enviado la respuesta correspondiente.

4.9.2.

Clculo de probabilidad a

Se implementar el calculo de probabilidad en el Rabbit mediante la funa cin random() del lenguaje C. Establecindole condiciones de desigualdades a o e ese n mero randmico, se podr dirigir la transmisin entre intento e intento. u o a o La implementacin en el PIC consistir en lo siguiente: o a Se deber congurar el Timer 1 para su constante ejecucin, el n mero a o u randmico se obtendr mediante una muestra de su valor. o a Realizando una simple regla de tres, se convertir ese valor hexadecimal a en un n mero proporcional a 100 (considerando 100 como probabilidad u 1). Hacer todas las conguraciones y seteos. Fijarse que ID son y guardarlo en memoria. Habilitar interrupciones (recepcin de la USART). o Enviar una noticacin de presencia al rabbit. o 107

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR Esperar a recibir el mensaje de conrmacin del Rabbit. o Aplicar la probabilidad Esperar a recibir un mensaje del rabbit. Fijarse si el mensaje corresponde a ese mdulo exterior. o Fijarse si el comando que lleg es correcto. o Calcular la paridad del mensaje y vericar intento Responder el mensaje. 2 opciones:
o o

Ejecutar la accin si fuese necesario. o Prender led si se viol la regla de los cinco intentos. o

Esperar para recibir otro mensaje.

4.9.3.

Inconveniente

A pesar que el protocolo RS485 permite una comunicacin full duplex, el o bus formado por el MAX485 no puede implementarla. Solo funciona en modo half - duplex, por lo cual las colisiones no solo afectaran la capa de conexin, o sino tambin, la capa f e sica - pudindose generar cortocircuitos en los pines de e transmisin y recepcin del MAX485 -. o o La solucin al inconveniente ser desplegar una lgica de hardware cao a o paz de establecer la conexin en modo full - duplex. Se necesitar emplear 2 o a l neas de transmisin, una para el env de mensajes y otra para el env de o o o noticaciones. Siempre, se tom como requisito de dise o el empleo del chip o n MAX485, por lo cual emular la l nea de transmisin para las noticaciones o llevar a la misma deciencia descrita anteriormente. Tener mltiples transa u misores resultar imposible, razn atribuida a las limitaciones del MAX485. a o Ergo, se decidi rehacer la solucin por medio de una arquitectura maestro o o esclavo ja. El Rabbit cede el privilegio de transmisin cada vez que env un o a mensaje. De este modo, la transmisin se hace ms eciente y no se necesitan o a 5 intentos para transmitir. Cabe destacar que existen implementaciones con chips MAX1480, que solu cionan este inconveniente, como se puede ver en [AN2116, 1983]. Estos no estn a disponibles en la plaza uruguaya.

108

CAP ITULO 4. ARQUITECTURA MULTIPROTOCOLAR

4.10.

Referencias

[AN723, 1983] MAXIM, Dallas Semiconductor. 1997.Selecting and Using RS-232, RS-422, and RS-485 Serial Data Standards. Application Note AN723 [online] [citado 29 Diciembre 2000]. Disponible en Internet: <http://pdfserv.maxim-ic.com/en/an/AN723.pdf> [AN2116, 1983] MAXIM, Dallas Semiconductor. 1997.RS-485 Data Interface Gives Isolated, Full-Duplex Operation. Application Note AN723 [online] [citado 9 Julio 1998]. Disponible en Internet: <http://pdfserv.maximic.com/en/an/AN2116.pdf> [ESAcademy1, 2000] ESAcademy. 2000.The I2C Bus Hardware Structure .[online] Disponible en Internet: <http://www.esacademy.com/faq/i2c/ general/i2chardw.htm> [ESAcademy2, 2000] ESAcademy. 2000.The I2C Bus Protocol .[online] Disponible en Internet: <http://www.esacademy.com/faq/i2c/general/ i2cproto.htm> [ICS, 2007] Interfacebus. 1978.GPIB 101 - A TUTORIAL ABOUT THE GPIB BUS .[online] Disponible en Internet: <http://www.icselect.com/ pdfs/ab48 11.pdf> [Interfacebus, 2006] Interfacebus. 1998.GPIB Bus .[online] Disponible en Internet: <http://www.interfacebus.com/Design Connector GPIB.html> [Monograas, 2007] Sinexi S.A. 1997.Normas ANSI. ISO. IEEE para cableado UTP .[online] Disponible en Internet: <http://www.monograas.com/trabajos11/utp/utp.shtml> [RS485, 2007] RS485.com. 2007. QUICK REFERENCE FOR RS485, RS422, RS232 AND RS423 .[online] Disponible en Internet: <http://www.rs485.com/rs485spec.html> [Tech Soft, 2007] Tech Soft. 1997.HTBasic GPIB Tutorial .[online] Disponible en Internet: <http://www.techsoft.de/htbasic/tutgpibm.htm?tutgpib.htm> [tyco Electronics, 2002] Crompton. 2002.RS485 & Modbus Protocol Guide .[online] Disponible en Internet: <http://www.crompton-instruments.com/ rs485.pdf> [Wikipedia6, 2007] WIKIPEDIA. 2007.Daisy chain .[online] Disponible en Internet: <http://en.wikipedia.org/wiki/Daisy chain> [Wikipedia7, 2007] WIKIPEDIA. 2007.Category 5 cable .[online] Disponible en Internet: <http://en.wikipedia.org/wiki/Category 5 cable>

109

Cap tulo 5 Mdulos exteriores o


5.1. Introduccin o

Dise ar hardware es ms restrictivo que hacerlo en software, solamente, n a puede utilizarse una combinacin de componentes ya desarrollados: circuitos o integrados, microcontroladores, resistencias, etc. Un componente no disponible en las cantidades necesarias, puede arruinar la solucin. La comunidad del o software (acostumbrada a una mayor exibilidad y habilidad para modicar dise os y producir innitas copias), encuentra este concepto dif de asimilar. n cil Como contrapartida, los componentes electrnicos han evolucionando a travs o e del tiempo. D a d son mas peque os y complejos. Los circuitos integrados a a, n ofrecen cada vez mayor velocidad y conabilidad. Las pautas de dise o deben estar bien denidas, ya que constantemente n pueden agregarse nuevas funcionalidades a un sistema, controlando su implementacin para no entorpecer los objetivos iniciales. o Los mdulos exteriores manejan, controlan y permiten el funcionamiento o de un unico protocolo. Este cap tulo, ahonda sobre el dise o del hardware utin lizado - indicando conexiones y se ales necesarias para el funcionamiento de n los mismos - y la programacin del microcontrolador elegido para convertirse o en el erebrode los diversos mdulos. c o El marco terico establece las restricciones necesarias para la implementacin o o de la solucin y el manejo de cada protocolo. o

110

CAP ITULO 5. MODULOS EXTERIORES

5.2.
5.2.1.

Marco terico o
Protocolo Ir

Por muchos a os, la industria del consumidor de la electrnica ha estan o do desarrollando controles remotos infrarrojos para el manejo de televisores, videograbadores, etc. Si bien, el protocolo IrDA fue estandarizado en 1993 y - seg n [Millar, 1998] - se aplica para comunicaciones infrarrojas de corto alu cance (hasta 1.5 metros), el protocolo empleado por controles remotos no es genrico ni est estandarizado. e a Las siguientes escrituras fueron realizadas en base a [Davshomepage, 2006], [Tonks, 2007], [UST, 2006] y [UCAR, 2005]. Teor de la luz infrarroja a El infrarrojo es una radiacin de energ con una frecuencia por debajo de o a la sensibilidad de nuestros ojos. La luz infrarroja es un tipo de radiacin eleco tromagntica con mayor longitud de onda que la luz visible y menor que la de e las microondas. Su longitud de onda, entre 0,75 micrmetros y un mil o metro, es la siguiente en longitud al rojo. El espectro infrarrojo se puede subdividir en infrarrojo lejano (1 mm a 10 m longitud de onda), infrarrojo medio (10 a 2.5 m longitud de onda), e infrarrojo cercano (2,5 a 0,75 m longitud de onda). La gura 5.1 muestra sta aseveracin. e o

Figura 5.1: Espectro electromagntico e

Infrarrojo en electrnica o El infrarrojo, al ser fcil y barato de generar - y no sufrir interferencia eleca tromagntica -, se utiliza para comunicacin y control. No es perfecto ya que e o 111

CAP ITULO 5. MODULOS EXTERIORES otras luces pueden contener emisiones infrarrojas e interferir con la comunicacin. Para permitir una buena comunicacin y evitar esas se ales falsas, o o n es imprescindible utilizar una clave mediante la cual el receptor reconozca los verdaderos datos transmitidos. Esta, es la modulacin. Se hace parpadear o la luz infrarroja a una determinada frecuencia, coherentemente con el receptor infrarrojo, para que ste ignore los datos falsos. e Caracter sticas La t pica se al infrarroja utilizada por controles remotos est formada por n a tres capas: el infrarrojo, la modulacin y los datos. o La capa infrarroja es el medio de transmisin, la luz infrarroja. o Generalmente, la capa de modulacin modula la luz infrarroja a una freo cuencia entre 32,5 KHz y 56,8 KHz. Esta capa es opcional porque algunos controles remotos no modulan la salida con el objetivo de ampliar la duracin o de la bater del control y disminuir su costo. a La capa de datos lleva la informacin conteniendo el comando. o Para incrementar la distancia entre el emisor y el receptor, la corriente que circula por el led emisor debe ser lo ms alta posible. Debe existir una relacin a o de equilibrio entre las propiedades del led, la duracin de la bater - si es que o a hubiese - y la distancia mxima del control remoto. a Propiedades de la codicacin o Por el hecho de no ser un protocolo estandarizado, varias compa dise aron nas n su propia codicacin para sus equipos. Debajo se detallan las especicaciones o de las codicaciones estudiadas. 1. Cdigo Philips RC-5 o El cdigo utiliza modulacin Manchester con una frecuencia portadora de o o 36 KHz. Todos los bits tienen el mismo largo: 1,778 mseg, donde la mitad del tiempo de bit se llena con la portadora y la otra mitad no se env datos. Se an denominan marca espacio, respectivamente. Un 1lgico se representa con la segunda mitad del tiempo de bit con o marca y un 0lgico con la primer mitad del tiempo de bit con marca. Esto o se expresa grcamente en la gura 5.2. a Como se ve en la gura 5.3, se emplean 14 bits para el mensaje con una 112
2

CAP ITULO 5. MODULOS EXTERIORES

Figura 5.2: Representacion 1lgico en cdigo Philips RC-5 o o duracin de 25 mseg. Estos son: o los primeros 2 bits corresponden a los bits de comienzo. el tercer bit es un bit de toggle, se invierte cada vez que se suelta y se vuelve a presionar un botn. o los siguientes 5 bits corresponden a la direccin del equipo infrarrojo. o los ultimos 6 bits brindan informacin del comando en s o . Para los campos direccin y comando se env primero el MSB y al nal el o a LSB.

Figura 5.3: Cdigo Philips RC-5 o Philips confeccion una lista estndar que mapea equipos con direcciones o a y comandos para asegurar la compatibilidad entre equipos de la misma marca. Ver Anexo D. 2. Cdigo Philips RC-6 o Es el sucesor del RC-5. Se modula igual que el cdigo RC-5, pero el ciclo de o trabajo debe estar comprendido entre 25 % y 50 %. La unidad de sincronizacin o 113

CAP ITULO 5. MODULOS EXTERIORES es 1t, que es 16 veces el per odo de la portadora: ( 1 ) 16 = 444seg. 36Khz

La gura 5.4 muestra la duracin del pulso inicial, el cual tiene un tiempo o de marca de 6t (2,666 mseg.) y un tiempo de espacio de 2t (0,889 mseg.).

Figura 5.4: Pulso inicial cdigo Philips RC-6 o La gura 5.5 denota la duracin del pulso de cola, un tiempo de marca de o 2t (0,889 mseg.) y un tiempo de espacio de 2t (0,889 mseg.)

Figura 5.5: Pulso de cola cdigo Philips RC-6 o El comando es una concatenacin de informaciones dispares como se ve en o la gura 5.6

Figura 5.6: Comando RC-6 La cabecera tiene tres componentes distintos: El pulso inicial (LS) se utiliza normalmente para setear la ganancia del equipo receptor. El bit de inicio (SB) debe ser 1 se emplea para sincronizar al receptor. Los bits mb2..mb0 transmiten el modo de operacin. o
2

114

CAP ITULO 5. MODULOS EXTERIORES TR es el bit de cola y le permite distinguir al receptor entre un nuevo comando o un comando repetido. El campo Control est formado por 8 bits que se utilizan como direccin. a o Pueden controlarse hasta 256 equipos utilizando sta codicacin. e o El byte de Informacin representa al comando. Cada equipo puede tener o asignado un mximo de 256 comandos. a El tiempo sin se al es un per n odo donde no deben transmitirse datos y se utiliza para noticarle al receptor la terminacin del ultimo mensaje. Evita o repeticiones incorrectas. Esta duracin es de 6t (2,666 mseg.). o 3. Cdigo JVC o Utiliza la modulacin por largo de pulso a una frecuencia portadora de o 38 KHz. Cada pulso tiene una duracin de 256 seg. Como muestra la gura o 5.6, Un 1lgico demora 2,10 mseg. en transmitirse, un 0lgico tiene una o o duracin de 1,05 mseg. o

Figura 5.7: Comando RC-6 Como se ve en la gura 5.8, el mensaje comienza con una cabecera de 9,5 mseg y luego un espacio de 4,0 mseg. Luego se env la direccin y el comando. a o Para este cdigo el LSB se transmite antes que el MSB. Cuando se mantiene o apretado un botn, slo en el primer comando se transmite la cabecera. Las o o repeticiones se realizan cada 50-60 mseg.

Figura 5.8: Codigo JVC 4. Cdigo NEC o Utiliza la modulacin por largo de pulso a una frecuencia portadora de 40 o KHz. Cada pulso tiene una duracin de 550 seg. Como se observa en la gura o 115

CAP ITULO 5. MODULOS EXTERIORES

Figura 5.9: Codigo NEC 5.9, un 1lgico demora 2,25 mseg. en transmitirse y un 0lgico tiene una o o duracin de 1,12 mseg. o Como se divisa en la gura 5.10, el mensaje comienza con una cabecera de 9 mseg. (para setear la ganancia del receptor), seguido por un espacio de 4,5 mseg. Luego se env 32 bits divididos en 4 grupos de 8 bits que representan an direccin, complemento de la direccin, comando y complemento del mismo, o o respectivamente. Se utiliza el complemento para comprobar la integridad del mensaje. En todos los casos el LSB se env antes que el MSB. Cuando se a mantiene apretado un botn, slo se env el comando la primera vez. A su o o a vez, se transmite un cdigo de repeticin cada 110 mseg. que est formado por o o a una cabecera de 9 mseg. y un espacio de 2,25 mseg.

Figura 5.10: Codigo NEC 5. Cdigo RCA o Utiliza la modulacin por largo de pulso a una frecuencia portadora de 56 o KHz. Cada pulso tiene una duracin de 500 seg. Como se vislumbra en la o gura 5.11, un 1lgico demora 2,5 mseg. en transmitirse, un 0lgico tiene o o una duracin de 1,5 mseg. o Como se contempla en la gura 5.12, el mensaje comienza con una cabecera de 4 mseg., seguido por un espacio de 4 mseg. Luego se env 24 bits divididos an en 4 grupos, siendo el primero y el tercero de 4 bits y los restantes de 8 bits. Representan direccin, comando, complemento de la direccin y complemento o o del comando, respectivamente. Se utiliza el complemento para comprobar la integridad del mensaje. En todos los casos el MSB se env antes que el LSB. a Cuando se mantiene apretado un botn, se repite el mensaje cada 64 mseg. o

116

CAP ITULO 5. MODULOS EXTERIORES

Figura 5.11: Codigo RCA

Figura 5.12: Codigo RCA 6. Cdigo Daewoo o Utiliza la modulacin por largo de pulso a una frecuencia portadora de 38 o KHz. Cada pulso tiene una duracin de 550 seg. Un 1lgico demora 2 mseg. o o en transmitirse, un 0lgico tiene una duracin de 1 mseg. o o Como se ve en la gura 5.13, el mensaje comienza con una cabecera de 8 mseg., seguido por un espacio de 4 mseg. Luego, se transmiten 7 bits correspondientes a la direccin. A continuacin le sigue una cabecera de 550 seg. o o seguida por un espacio de 4 mseg. Despus, se env 7 bits del comando y e an como stop bit, una nueva cabecera igual a la cabecera que separa la direccin o del comando. En todos los casos el LSB se env antes que el MSB. Cuando se a mantiene apretado un botn, se repite el mensaje cada 60 mseg. o

Figura 5.13: Codigo Daewoo 7. Cdigo Panasonic o Utiliza la modulacin por largo de pulso a una frecuencia portadora de 38 o KHz. Un 1lgico demora 3,7 mseg. en transmitirse, un 0lgico tiene una o o duracin de 1,8 mseg. o 117

CAP ITULO 5. MODULOS EXTERIORES Como se muestra en la gura 5.14, el mensaje comienza con una cabecera y un espacio. Luego se env 5 bits correspondientes a la direccin y 6 bits an o correspondientes al comando. A continuacin le sigue el complemento de la o direccin y del comando. El stop bit es un 1lgico. o o

Figura 5.14: Codigo Panasonic 8. Cdigo Sony o Utiliza la modulacin por largo de pulso a una frecuencia portadora de 40 o KHz. Como se observa en la gura 5.15, un 1lgico demora 1,2 mseg. en o transmitirse, un 0lgico tiene una duracin de 0,6 mseg. o o

Figura 5.15: Codigo Sony Como se percibe en la gura 5.16, el mensaje comienza con una cabecera de 2,4 mseg., seguido por 7 bits del comando y 5 bits de la direccin. En todos o los casos el LSB se env antes que el MSB. Cuando se mantiene apretado un a botn, se repite el mensaje cada 45 mseg. o

Figura 5.16: Codigo Sony

5.2.2.

Protocolo RS232

Es un estndar desarrollado en los a os 60 por la EIA, conjuntamente con a n los laboratorios Bell y los fabricantes de equipos, con la nalidad inicial de 118

CAP ITULO 5. MODULOS EXTERIORES intercomunicar un equipo terminal de datos (DTE) y un equipo de comunicacin de datos (DCE), empleando un intercambio de datos binarios en forma o serial. Desde su incursin, se introdujeron tres modicaciones, la ms reciente la o a EIA-RS232-F en 1997. El estndar dene caracter a sticas de la se al elctrica, caracter n e sticas mecnicas a de la conexin, descripcin funcional de los circuitos de intercambio y secuencia o o de procedimientos. Esta investigacin se realiz en base a [UAB, 2005],[Strangio, 2006] o o y [ZyTrax, 2007]. Caracter sticas de la seal elctrica n e La interfaz emplea conexiones elctricas no balanceadas - el nivel de se al e n es relativo a la tierra de se al -, son ms susceptibles al ruido y emplean n a velocidades menores a las conexiones balanceadas - un par de hilos por se al, n no referido a tierra - (Ver 4.2.1). Es una interfaz de bajo voltaje que opera entre -15 V. y +15 V. donde: Voltajes entre - 3 V. y - 15 V. corresponden a un 1lgico. o Voltajes entre + 3 V. y + 15 V. corresponden a un 0lgico. o Voltajes entre - 3 V. y + 3 V. corresponden a una regin de transicin o o o seguridad. La regin de transicin funciona como un margen donde no se dene un o o estado lgico ya que los cables pueden estar sometidos a ruidos e interferencias o elctricas. Pueden llevar a transiciones de estado no deseadas, y si aumenta la e velocidad de transmisin la se al se vuelve susceptible a prdidas de voltaje o n e por efecto de las altas frecuencias - motivadas por la resistencia, inductancia y capacidad del cable como l nea de transmisin -. Estas, aumentan con la o longitud del cable. El ancho de la regin de seguridad determina el margen de o ruidos y limita directamente la velocidad mxima de transmisin de datos sin a o prdidas. e Caracter sticas mecnicas de la conexin a o Establece que el DCE dispondr de un conector hembra y el DTE de un a conector macho donde se especican n meros de identicacin para cada pin. u o El tipo y medidas de los conectores son establecidos por la ISO (International Standars Organization). Los conectores ms utilizados son los de nueve pines a (DB-9) y veinticinco pines (DB-25) - ver gura 5.17-.

119

CAP ITULO 5. MODULOS EXTERIORES

Figura 5.17: Conectores DB9 y DB25 DB-25 2 3 4 5 6 7 8 20 22 24 DB-9 RJ-45 3 6 2 5 7 8 8 7 6 1 5 4 1 2 4 3 9 1 Nombre TxD RxD RTS CTS DSR GND CD DTR RI RTxC Funcin o Transmisin de datos (out) o Recepcin de datos (in) o Pedido de env (out) o Dispuesto a enviar (in) Dispositivo de datos listo (in) Com n (ground) u Deteccin de portadora (in) o Terminal de datos lista (out) Indicador de llamada (in) Reloj de transmisin/recepcin (out) o o

Tabla 5.1: Funciones de los pines de los distintos conectores

Caracter sticas funcionales de la conexin o El RS232 es una interfaz serie, lo que implica entrega de informacin en o forma secuencial, bit por bit. En la Tabla 5.1 se especica la funcin de cada o pin en los distintos conectores. Existe un juego secundario de se ales que incluyen las se ales de control. n n Son utilizadas para enviar informacin de conguracin al extremo remoto, o o solicitar retransmisiones y funciones de control. Con el n de asegurar la abilidad del medio, t picamente trabajan a velocidades muy bajas. Pin 13 - Secondary Clear to Send (SCTS) Pin 14 - Secondary Transmitted Data (STxD) Pin 16 - Secondary Received Data (SRxD) Pin 19 - Secondary Request to Send (SRTS) 120

CAP ITULO 5. MODULOS EXTERIORES Las se ales en un DTE y un DCE deben tener el mismo nombre, aunque n el pin 2 del DTE transmita y el pin 2 del DCE reciba, ambas se ales son n Transmit Data. Secuencia de procedimientos Su funcionamiento puede ser sincrnico como as o ncrono. Transmisin s o ncrona Se requieren se ales de timming. Los pines 15, 17 y 24 se utilizan unican mente en modo sincrnico. o Transmisin as o ncrona

No Parity (sin paridad) - No se transmite bit de paridad. Even Parity (paridad par) - El bit de paridad es uno (1) si el caracter lleva un cantidad par de unos. Odd Parity (paridad impar) - El bit de paridad es uno (1) si el caracter lleva una cantidad impar de unos. Mark Parity (paridad de marca) - El bit de paridad siempre es uno. Space Parity (paridad de espacio) - El bit de paridad siempre es cero. El estndar no establece como representar caracteres (7 u 8 bits es la forma a ms com n, pero podr ser 5 o 6). Cuando no se env datos la se al se a u an an n debe mantener en estado de marca. La siguiente gura 5.18 la transmisin asincnica de un s o o mbolo correspondiente al caracter ASCII A. El control de ujo puede realizarse por hardware (RTS/CTS) o sofware (Xon/Xo). Por Software: El caracter Xo (ASCII 19) es utilizado por el receptor para indicar que su buer est lleno y el emisor debe esperar. Cuando vuelva a tener espacio en a el buer, enviar el caracter Xon (ASCII 17), informando que puede volver a a trasmitir. Esto economiza cables en la interconexin, pero ocupa espacio en el o canal. En la gura 5.19 se muestra el mtodo de funcionamiento. e

121

CAP ITULO 5. MODULOS EXTERIORES

Figura 5.18: Transmisin asincnica de un s o o mbolo correspondiente al caracter ASCII A Por Hardware: Requiere la conexin de dos hilos entre dispositivos: RTS y CTS. Cuando o el buer del receptor se llena le avisa al transmisor que espere, desactivando la se al CTS. Cuando vuelva a tener espacio en el buer, activar nuevamente n a el CTS para decir que est listo. a Tiempos Para las se ales de control el tiempo de transicin por la regin de seguridad n o o debe ser menor a 1 mseg. Para las se ales de datos y reloj, el tiempo de n transicin por la regin de seguridad deben ser: o o menores a 1 mseg. para seales con per n odos mayores a 25 mseg. 4 % del per odo para se ales con per n odo entre 125 microseg. y 25 mseg. menores a 5 seg. para se ales con per n odo menor a 125 seg. Inconvenientes y problemas Funcionamiento incorrecto de comunicacin (DTE-DCE) para el cable o en uso, dado por la inversin de las l o neas de transmisin, recepcin y o o handshaking. Tipo de conexin incorrecta por error de gnero o por conguracin de o e o pines. No se pueden lograr velocidades de transmisin mayores a 64 kbps por o la modalidad de trabajo no balanceada. 122

CAP ITULO 5. MODULOS EXTERIORES

Figura 5.19: Control de ujo Puede comunicarse con un solo dispositivo por conexin. o

5.2.3.

Amplicacin en clase A o

En esta operacin, el amplicador reproduce totalmente la se al de entrada. o n La corriente de colector es distinta de cero todo el tiempo, y en general el transistor de salida se polariza en el punto central de la recta de carga, de forma tal de obtener la mxima excursin simtrica. En la gura 5.20 se ilustran las a o e curvas caracter sticas t picas de esta operacin ante una se al senoidal. o n

Figura 5.20: Amplicador clase A La corriente de polarizacin ICQ est dada por la ecuacin: o a o ICQ = ( 1 Vcc ) Vce + Rc Rc 123

CAP ITULO 5. MODULOS EXTERIORES Si en la base del transistor se aplica una entra de peque a se al, la alteracin n n o de la corriente de base producir una variacin en la corriente de colector. a o Polarizando el transistor en la zona activa, la variacin del punto de operacin o o sobre la recta de carga al variar IC , produce una tensin de salida amplicada. o La corriente de colector est dada por la ecuacin: IC = Ib. a o

5.3.

El PIC 16F628A

El PIC 16F628A es un microprocesador de propsito general verstil y o a econmico. Pertenece a la popular familia de microprocesadores PICmicro de o la empresa norteamericana Microchip cuya sede se ubica en Chandler, Arizona (Estados Unidos). Sus tres caracter sticas ms importantes son: a Procesador tipo RISC Procesador segmentado Arquitectura HARVARD Es capaz de ejecutar instrucciones en un ciclo de instruccin. Con la eso tructura segmentada se puede ejecutar una instruccin y buscar las siguiente. o La separacin de los dos tipos de memoria (datos e instrucciones) es la o base de la arquitectura Harvard, esto permite acceder en forma simultnea e a independiente a ambos tipos. El tama o de los datos es de un byte, mientras n que el de las instrucciones es de 14 bits.

5.3.1.

Propiedades

Conjunto reducido de 35 instrucciones RISC. Oscilador interno de 4 MHz (si se utiliza este clock, el ciclo de mquina a es de 1 seg.). Frecuencia mxima de reloj externo de 20 MHz (ciclo de mquina de 200 a a ns). Las instrucciones se ejecutan en un slo ciclo de mquina (goto y call o a requieren 2 ciclos). Memoria de programa: 2048 palabras.

124

CAP ITULO 5. MODULOS EXTERIORES Memoria RAM: 224 bytes. Memoria EEPROM: 128 bytes. 16 terminales de E/S que soportan corrientes de hasta 25 mA. 3 Temporizadores Mdulos de comunicacin serie, comparadores y PWM. o o Maneja bancos de registros, que se clasican como de uso general (GPR) y de uso espec co (FSR).Los de uso general pueden ser utilizados directamente por el programador, sin restricciones. Los de uso espec cos no pueden ser usados directamente por el usuario ya que controlan todo el funcionamiento del microcontrolador. Ms informacin se encuentra disponible en la hoja de datos correspondia o ente. Ver Anexo D.

5.3.2.

Pinout

La gura 5.21 muestra el pinout del PIC en empaquetado DIP-18.

Figura 5.21: PIC 16F628A

5.4.

Fundamentos comunes

Para el dise o de los mdulos exteriores, se tom como primer medida, n o o establecer las consideraciones generales que deb cumplir todos ellos - sin an excepcin -. Esto llev a diagramar la solucin de manera global, y luego ateno o o erse a las caracter sticas particulares de cada mdulo. o

125

CAP ITULO 5. MODULOS EXTERIORES


Pin RA0 RA1 RA2 RA3 RA4 RA5 RA6 RA7 RB1 RB2 E/S E E E E S E S S E S Mdulo Ir o ADDR0 ADDR1 ADDR2 ADDR3 Alarma RESET SOFT RESET DE MAX485 USART RX USART TX Mdulo RS232 o ADDR0 ADDR1 ADDR2 ADDR3 Alarma RESET SOFT RESET DE MAX485 USART RX USART TX Mdulo Salidas o ADDR0 ADDR1 ADDR2 ADDR3 Alarma RESET SOFT RESET DE MAX485 USART RX USART TX Mdulo entradas o ADDR0 ADDR1 ADDR2 ADDR3 Alarma RESET SOFT RESET DE MAX485 USART RX USART TX

Tabla 5.2: Pines Comunes

Las siguientes propiedades y circuitos, fueron implementadas para cumplir con el funcionamiento de la arquitectura multiprotocolar.

5.4.1.

Pines de utilizacin genrica o e

En la Tabla 5.2 se especican los pines de utilizacin genrica. o e Los primeros cuatro pines se utilizan para la funcion de direccionamiento. RA4 es el pin de alarma(prende un led). RA5 y RA6 corresponden a la funcin o circuito de Reset. RA7 controla la tarnsmisin half-duplex. RB1 es el pin de o recepcin de la USART y RB2 el de transmisin. o o

5.4.2.

Direccionamiento

Los puertos RA0, RA1, RA2 y RA3 son los encargados de establecer el ID del mdulo exterior. Dicho ID, se establece a travs del manejo de un o e dip-switch de 4 contactos. El circuito encargado de generar los distintos direccionamientos puede verse en la gura 5.22. Cuando el contacto est abierto, a circula corriente hacia el puerto RAx, instaurndose un estado lgico 1. Al a o encontrarse cerrado, genera un estado lgico 0en el pin. o Se referencia Jx como el contacto asociado al pin RAx. La Tabla 5.3 muestra las posibles direcciones del mdulo seg n el estado lgico de cada pin. o u o

5.4.3.

Circuito de reset

Los puertos RA5 y RA6 toman parte en la funcin reset del mdulo. Cada o o mdulo puede reseterse por hardware (por medio de un pulsador) o por softo ware (a travs de una orden del rabbit). El pin RA5 (pin negado) es el Master e Clear del PIC, y el RA6 act a ante un llamado del Rabbit. La siguiente gura u muestra el circuito empleado para dicha funcin. o

126

CAP ITULO 5. MODULOS EXTERIORES

Figura 5.22: Circuito direccionamiento

Figura 5.23: Circuito Reset Como la integracin en el circuito de una compuerta OR y una compuerta o NOT requiere el uso de dos integrados, se decidi la utilizacin del integrado o o MC14001. Este, est formado por cuatro compuertas NOR de dos entradas. a Las razones que llevaron a su empleo fueron las siguientes: con 2 compuertas NOR es posible emular una compuerta OR. con 1 compuerta NOR es posible emular una compuerta NOT. solo se utiliza un integrado, ya que cada MC14001 posee 4 compuertas NOR de dos entradas. El delay de propagacin por la acumulacin de compuertas no es signio o cativo para la funcin reset. o El circuito nal se observa en la gura 5.24. Por ms especicaciones del MC14001 ver Anexo D a 127

CAP ITULO 5. MODULOS EXTERIORES RA3 RA2 RA1 RA0 ID 0 0 0 0 00 0 0 0 1 01 0 0 1 0 02 0 0 1 1 03 0 1 0 0 04 0 1 0 1 05 0 1 1 0 06 0 1 1 1 07 1 0 0 0 08 1 0 0 1 09 1 0 1 0 10 1 0 1 1 11 1 1 0 0 12 1 1 0 1 13 1 1 1 0 14 1 1 1 1 15 Tabla 5.3: Direcciones del mdulo seg n el estado lgico de cada pin o u o

5.5.
5.5.1.

Modulo exterior Ir
Proceso de implementacin o

Primariamente, se dise una interfaz RS232 > Ir para el manejo (desno de una PC), de un radiograbador con lector de cd, marca Aiwa, siendo el PIC 16F628A el cerebrode la misma. Se consider como pauta principal de o dise o, la implementacin de la mayor funcionalidad del sistema por medio de n o la programacin; menos hardware se traduce en menor probabilidad de error o y menor costo. Anlisis de la trama infrarroja a Mediante el circuito de la gura 5.25, se pudo analizar la trama infrarroja. Colocando el control remoto del radiograbador muy prximo al fototransistor o L51P3C, se decodic la trama de cada comando. El instrumento que permio ti dicho estudio fue un osciloscopio digital. o El control remoto utiliza modulacin por largo de pulso. Cada trama est foro a mada por cuatro campos: una secuencia inicial, un encabezado, un cdigo y o una secuencia nal. La gura 5.26 muestra su composicin. La secuencia inicial o se decodica como un tiempo alto de larga duracin ms un tiempo bajo de o a mediana duracin. El encabezado es com n a todos los comandos y tiene un o u

128

CAP ITULO 5. MODULOS EXTERIORES

Figura 5.24: Circuito Reset nal Especicacin o Tiempo alto de secuencia inicial Tiempo bajo de secuencia inicial Tiempo alto de bit Tiempo bajo 1 lgico o Tiempo bajo 0lgico o Tiempo (mseg.) 9,00 4,50 0.55 0.55 1.65

Tabla 5.4: Tiempos de la trama IR

largo de 26 bits. El cdigo es particular de cada uno y est constituido por 16 o a bits. La secuencia nal est formada por un bit de stop. Los adjetivos larga a medianase aplicaron considerando un sistema de referencia temporal de 50 seg. Cada bit se traduce como un tiempo alto ms un tiempo bajo. Tiene la a misma duracin un tiempo alto de bit, en un 1 un 0lgico, pero el tiempo o o bajo del 0 es ms prolongado que el del 1. La frecuencia de la portadora a es de 38 KHz. En la Tabla 5.4 aparecen los tiempos implicados, obtenidos por medio de la observacin en el osciloscopio. o La decodicacin de cada uno de los comandos y su correspondiente forma o de onda se encuentra explicitada en el Anexo E. Concepcin de la solucin - Hardware o o La implementacin del hardware se dividi en cuatro bloques: bloque trao o ductor, bloque conexin serial, bloque del PIC y bloque amplicacin. o o 129
2 2

CAP ITULO 5. MODULOS EXTERIORES

Figura 5.25: Circuito para analizar la trama infrarroja

Figura 5.26: Trama IR genrica e

Bloque traductor Bloque encargado de traducir los niveles de tensin del puerto serie RS232 o (-12V/+12V) a los niveles de tensin TTL/CMOS del PIC (0V/5V). Se utio liz el integrado MAX232, segn la recomendacin de su hoja de datos. Ver o u o Anexo D. Este, se conecta al PIC por los pines T 1in (pin 11) y R1out (pin 12), y al puerto serie a travs de los pines T 1out (pin 14) y R1in (pin 13). e Bloque conexin serial o Por intermedio de este bloque el PC se comunica con la interfaz. Consta de un conector serial hembra. Bloque del PIC Bloque principal del circuito. En el PIC, se traducen los caracteres ASCII 130

CAP ITULO 5. MODULOS EXTERIORES que llegan por el puerto serie RS232 a comandos IR que sern enviados al raa diograbador por medio del emisor. Por otra parte, tambin posee un pulsador, e conectado a uno de los pines del PIC, para resetear el sistema. Bloque amplicacin o Es el encargado de lograr una correcta amplicacin de la se al infrarroja. o n Como amplicador se utiliz un transistor NPN BC546 polarizado en la zona o activa. La salida PWM del PIC se conect a la base del transistor mediano te una resistencia de 4K7 . Para transmitir la se al infrarroja se utiliz un n o emisor infrarrojo L53SF4BT. La gura 5.27 muestra los componentes de este bloque. En la modulacin PWM se utilizan pulsos de igual amplitud - cuya o duracin depende de la amplitud de la se al de entrada -, en este caso, el bit o n de la se al infrarroja. n

Figura 5.27: Amplicacin Infraroja o Haciendo referencia del marco terico, se eligieron los valores de las reo sistencias R1 y R2 seg n las siguientes consideraciones: u R2 = Ic Ib , por lo que Ib Vcc 5V = 100 = Ic 50mA
Ic

50mA 100

= 500A

Rb = R1 <

5V = 10K 500A

Realizando las pruebas correspondientes, se constat que la distancia mxio a ma de separacin entre la Interfaz y el radiograbador fue de aproximadamente o 131

CAP ITULO 5. MODULOS EXTERIORES 7 metros. Circuito completo

Figura 5.28: Amplicacin Infraroja AIWA o Componentes utilizados:

1 x PIC 16F628A 1 x MAX232 1 x regulador de tensin 7805 o 1 x conector hembra DB9 1 x pulsador 1 x emisor IR L53SF4BT 5 x condensadores electrol ticos de 1 F 3 x condensadores cermicos de 0.1 F a 1 x LED rojo 5mm 1 x resistencia de 2k2 (1/4 W) 1 x resistencia de 10k (1/4 W) 1 x resistencia de 100 (1/4 W) 132

CAP ITULO 5. MODULOS EXTERIORES 1 x resistencia de 4k7 (1/4 W) 1 x transistor NPN BC546 Concepcin de la solucin - Programacin del PIC o o o La siguiente es una breve descripcin del mecanismo que realiza el PIC o cada vez que se resetea: Borra la memoria RAM (utilizada para guardar las variables del programa y los cdigos IR). o Lee la EEPROM y se guarda cada byte de cdigo IR en una variable o determinada de la RAM. Tanto para el borrado de la memoria como para la lectura de la EEPROM y el guardado de los cdigos se utiliz el o o direccionamiento indirecto como mtodo de programacin. e o Setea los mdulos del PIC, congura el bloque PWM, el Timer 0, los o puertos de entrada y salida, el perifrico RS232 y habilitacin las intere o rupciones correspondientes. Env un mensaje de bienvenida para indicarle al usuario que el disposa itivo est pronto para ser utilizado. a Se verica si se produjo una interrupcin de la USART y si no se produjo o se espera a que se produzca, quedndose el programa en un loop innito. a Consideraciones de diseo n Como los comandos Ir estn modulados por una portadora de 38KHz se a consider utilizar el mdulo PWM del PIC (puerto RB3), ya que despliega una o o onda cuadrada. Originariamente se hab considerado utilizar una compuerta NAND schma mit trigger y un transistor PNP para amplicar. La compuerta era alimentada por la salida PWM y por el bit espec co de cada comando Ir, pero se pudo programar el PIC para realizar sta operacin lgica. e o o Para implementar los tiempos de bit y de encabezado se consider tomar o el m nimo comn m ltiplo entre ellos: 0.5 mseg. Se trabaj con el Timer 0 u u o de forma interruptiva cada vez que ste produc un overow. Contando la e a cantidad de overows fue posible implementar los tiempos de bit. El mecanismo para cargar los comandos Ir dentro del programa es el siguiente: 133

CAP ITULO 5. MODULOS EXTERIORES Interrupcin o Uso Recepcin de la USART o Recibir el mensaje Overow del Timer 0 Temporizaciones para transmisiones Ir Tabla 5.5: Interrupciones utilizadas

se escribe una sola vez la memoria EEPROM con la informacin de los o comandos. cuando se resetea el PIC, se leen de la EEPROM y se almacenan en la memoria RAM. Durante el funcionamiento normal, los valores se leen de la RAM, ya que sta es ms rpida que la EEPROM, y adems, el e a a a tiempo de vida util de la EEPROM es menor al tiempo de vida util de la RAM. Se trabaj por medio de la recepcin interruptiva de la USART. o o Posteriormente, se decodicaron los comandos de un DVD (marca WNR, modelo KM-218), y se implement su funcionamiento en la interfaz. Ante su o correcto funcionamiento, se comprob que la interfaz dise ada tiene el funo n cionamiento de un control remoto universal. Es posible realizar esta aseveracin, ya que los tiempos de estado alto y bajo de cada bit, son generados o mediante una rutina genrica. No es relevante, el modo de modulacin de la e o se al infrarroja (largo de pulso o codicacin Manchester). n o

5.5.2.

Desarrollo nal

La interfaz desarrollada es el modelo del mdulo exterior Ir. Los mensajes o de accin del Rabbit, recibidos a travs del MAX485, son decodicados y o e convertidos en emisiones infrarrojas. El circuito nal del mdulo est detallado o a en el Anexo B.

5.5.3.

Puertos adicionales de I/O

Adicionalmente de los pines de utilizacin genrica, se utiliza el puerto RB3 o e para generar la se al PWM. n

5.5.4.

Interrupciones utilizadas

La Tabla 5.5 denota el manejo de las interrupciones del PIC para este mdulo. o

134

CAP ITULO 5. MODULOS EXTERIORES

5.6.
5.6.1.

Mdulo exterior RS232 o


Consideraciones

Para implementar el protocolo RS232, se necesita un transceiver que adapte los niveles de se al TTL a RS232 bidireccionalmente. Seg n [?], para elegir un n u buen transceiver se debe considerar: Requerimientos de la fuente de alimentacin o Consumo de potencia Velocidades que maneja Coherencia con los niveles estndar de la se al a n Aislamiento Proteccin contra descargas electrostticas o a Precio El MAX232 (empresa Maxim) es un integrado que reune las caracter sticas sucientes para satisfacer las necesidades descritas anteriormente. Es un transceiver de gran insercin dentro del mercado de la robtica. Permite el o o manejo de hasta dos conexiones bidireccionales. Como patrn de dise o se consider la implementacin de dos conexiones o n o o seriales por mdulo exterior, denindolas como puerto serial 1 y puerto serial o e 2. Se implement una solucin de hardware para suplir el siguiente inconveo o niente: El PIC est constituido solamente por una USART, por lo cual, exa iste un slo pin de recepcin y un solo pin de transmisin. Tal cual o o o denido, el protocolo RS232, no puede comunicar ms de un dispositivo a por conexin. Debe existir una lgica capaz de comunicar las siguientes o o conexiones:
o

el puerto RB2/Tx del PIC con: - pin Tx del puerto serial 1 - pin Tx del puerto serial 2 - pin Di del MAX485

el puerto RB1/Rx del PIC con: 135

CAP ITULO 5. MODULOS EXTERIORES Puerto Conexin o RB3 S1 MUX RB4 S0 MUX RB5 B DEMUX RB6 A DEMUX Tabla 5.6: Puertos adicionales

- pin Rx del puerto serial 1 - pin Rx del puerto serial 2 - pin Ro del MAX485 Para suplir el inconveniente de la transmisin, se utiliz un demultiplexor o o CD4555, y con nalidad de solucionar la recepcin, se emple un multiplexor o o 74HC153. Ambos integrados estn disponibles en plaza. La lgica implemena o tada, est controlada por medio del PIC (a travs de los puertos de I/O), a e quienes estn conectados a los pines de control de los integrados. El pinout de a los integrados implicados, puede verse en sus respectivas hojas de datos. Ver Anexo D. Una observacin a tener en cuenta es que la entrada de datos E del demultio plexor es negada, por lo cual hay que invertir la seal del pin RB2/TX para n que se transmita el s mbolo tal cual. Existen dos formas de llevarlo a cabo: A. Programar el PIC de forma tal de negar el bit a ser transmitido. B. Utilizar la compuerta NOR restante del integrado MC14001 para emular un inversor. Siguiendo el patrn de conducta - al aplicar los conocimientos relevantes o para resolver la mayor funcionalidad de un sistema por medio de la programacin -, se opt por la opcin A. o o o La solucin implementada permite la conguracin de cada puerto serial o o seg n las necesidades del usuario, pero no se resolvi el control de ujo. u o El circuito nal del mdulo exterior RS232 est detallado en el Anexo B. o a

5.6.2.

Puertos adicionales de I/O

Los puertos adicionales a los pines de utilizacin genricas estn publicados o e a en la Tabla 5.6.

136

CAP ITULO 5. MODULOS EXTERIORES Puerto Conexin o RB0 OUT RB4 OUT RB5 OUT RB6 OUT RB7 OUT Tabla 5.7: Puertos adicionales modulo exterior de entradas

5.6.3.

Interrupciones utilizadas

No se utilizan interrupciones adicionales a la interrupcin de recepcin de o o la USART.

5.7.
5.7.1.

Mdulo exterior de salidas digitales o


Consideraciones

El mdulo exterior de salidas digitales provee una interfaz paralela de salida o hacia otro sistema por medio de 5 l neas digitales. Se establece un estado lgico o alto a travs del env de un mensaje que contiene el comando A (Action). Si e o el Rabbit env el comando S (Stop), se establece el estado lgico bajo. Las a o acciones del mdulo estn determinadas por medio de la capa de acciones de o a la arquitectura multiprotocolar.

5.7.2.

Puertos adicionales de I/O

Los puertos adicionales a los pines de utilizacin genricas son los especio e cados en la Tabla 5.7.

5.7.3.

Interrupciones utilizadas

No se utilizan interrupciones adicionales a la interrupcin de recepcin de o o la USART.

5.8.
5.8.1.

Mdulo exterior de entradas digitales o


Consideraciones

El mdulo exterior de entradas digitales brinda una interfaz paralela de o entrada para permitir el dilogo entre el procesador multiprotocolar y otro sisa

137

CAP ITULO 5. MODULOS EXTERIORES Pin Accin solicitada o RB0 Accin no 1 o RB4 Accin no 2 o RB5 Accin no 3 o RB6 Accin no 4 o RB7 Accin no 5 o Tabla 5.8: Acciones

tema. Mapea el arribo de est mulos como una noticacin de evento espordico. o a Este mdulo, agrega exibilidad al procesador, ya que una seal proveo n niente de otro sistema permite la realizacin de una o ms acciones en los o a otros mdulos exteriores. Considrese el siguiente ejemplo: o e Un mdulo de entradas recibe un pulso en uno de sus puertos avisando o la activacin de cierta alarma (tomando como ejemplo una alarma de robo). o Cuando el Rabbit lo consulta, ste env una noticacin de evento espordico. e a o a La programacin del Rabbit puede determinar que ante la llegada de un evento o en ese puerto, active la salida de un pin de un mdulo exterior de salidas o digitales. Dicho pin, puede activar un candado digital y prohibir el acceso a determinado espacio. Los mdulos exteriores de entradas digitales denen una extensin para o o la capa de acciones de la arquitectura multiprotocolar. La accin generada, o identica un patrn de conducta a seguir por el Rabbit. La Tabla 5.8 muestra o la correspondencia entre los puertos de entrada y las acciones. Controlando los tiempos de instruccin correspondientes, la duracin m o o nima del est mulo (pulso) en cualquiera de los puertos deber ser de 68 seg. A a medida que se producen los eventos espordicos el PIC los latchea para luego a ser entregados al Rabbit.

5.8.2.

Puertos adicionales de I/O

Los puertos adicionales a los pines de utilizacin genricas son los concuro e rentes en la Tabla 5.9.

5.8.3.

Interrupciones utilizadas

La Tabla 5.10 muestra el manejo de las interrupciones del PIC para este mdulo. o

138

CAP ITULO 5. MODULOS EXTERIORES Puerto Conexin o RB0 IN RB4 IN RB5 IN RB6 IN RB7 IN Tabla 5.9: Puertos adicionales Interrupcin o Uso Recepcin de la USART o Recibir el mensaje Flanco positivo en RB0 Llegada de accin 1 o Cambio de estado en puertos RB4:RB7 Llegada de acciones 2 a 5 Tabla 5.10: Interrupciones utilizadas

5.9.

Referencias

[AN2020, 2003] MAXIM, Dallas Semiconductor. 1997.Choosing the Right RS-232 Transceiver. Application Note AN2020 [online] [citado 11 Mayo 2003]. Disponible en Internet: <http://www.maxim-ic.com/appnotes.cfm/ appnote number/2020/> [Davshomepage, 2006] Davshomepage. 2006.The IrDA Standards for HighSpeed Infrared Comunications. [online]. Disponible en Internet: <http://users.pandora.be/davshomepage/>

[Millar, 1998] Millar, Iain. 1994.The IrDA Standards for High-Speed Infrared Comunications. [online]. Disponible en Internet: <http://www.irda.org/associations/2494/le [Strangio, 2006] Strangio, Christopher E. 1993.The RS232 Standard. [online]. Disponible en Internet: <http://www.camiresearch.com/ Data Com Basics/RS232 standard.html> [Tonks, 2007] Tonks, Daniel. 1998.NEC IR Code Format. [online]. Disponible en Internet: <http://www.remotecentral.com/features/irdisp4.htm> [UAB, 2005] UAB. 2005.Comunicaciones. [online]. Disponible en Internet: <http://eq3.uab.es/personal/baeza/comunicaciones/comunica.htm> [UCAR, 2005] UCAR. 1995.Radiaccion Infrarroja. [online]. Disponible en Internet: <http://www.windows.ucar.edu/tour/link=/physical science/ magnetism/em infrared.sp.html>

139

CAP ITULO 5. MODULOS EXTERIORES [UST, 2006] UST Research, INC. 1993.InfraRed Remote Control. [online]. Disponible en Internet: <http://www.ustr.net/infrared/infrared1.shtml> [ZyTrax, 2007] ZyTrax, Inc., 1994.Serial Interface Primer. [online]. Disponible en Internet: <http://www.zytrax.com/tech/layer 1/cables/heavy.htm>

140

Parte III Conclusiones

Cap tulo 6 Mejoras pendientes


6.1. Introduccin o

En todo proyecto existe una etapa de mejoras. Estas, se realizan una vez cumplidos los objetivos de diseo iniciales. En este cap n tulo se especican las posibles mejoras relevantes al procesador para control multiprotocolar. Se divide el cap tulo en tres secciones: mejoras relativas al bloque central, mejoras en los mdulos exteriores y mejoras de fabricacin. Vale recalcar que no o o fue objetivo del proyecto la elaboracin de un producto, sino de un prototipo. o

6.2.
6.2.1.

Mejoras relativas al bloque central


Funcionalidad del reset por software

Tal cual est denido el protocolo, el Rabbit puede enviarle un mensaje a un a mdulo exterior solicitndole su respectivo reset. Esta funcin no est impleo a o a mentada por medio de una determinada aplicacin, solo se brinda la plataforma o para poder realizarla. Un ejemplo de utilizacin ser el siguiente caso: o a Si cumplido el ciclo de consulta el Rabbit detectase la aparicin de un o nuevo mdulo exterior, y se cumpliese el caso que al direccionarle una o orden espec ca, ste no enviase una noticacin de respuesta (luego e o de la regla de los tres intentos), el Rabbit avisar con una alarma la a desconexin del mdulo. Si en el siguiente ciclo de consulta no apareciese o o el mdulo en ninguna de las IDs, y el address ocupada anteriormente o por el mdulo se encontrase vac el Rabbit podr enviar un comando o a, a de reset a dicho ID. De esta forma, se intentar volver a establecer el a contacto con el mdulo sin la necesidad de molestar al usuario. o

142

CAP ITULO 6. MEJORAS PENDIENTES

6.2.2.

Universalidad de mdulos exteriores o

Los mdulos exteriores tienen asociadas tres variables para su debida ubio cacin dentro del sistema: ID, tipo de mdulo y n mero serial. o o u Actualmente, el ID es una variable independiente del sistema, el seteada por el usuario y puede variar segn su preferencia sin interferir con el funu cionamiento normal del procesador. Las restantes variables estn programadas en el Rabbit y en el PIC. Una a mejora sustancial ser manejar la variable tipo de mdulo en forma indepena o diente. Para determinar el tipo de mdulo podr implementarse una lgica de o a o hardware que conectada al PIC interpretara dicho valor. El nmero serial es u caracter stico de cada mdulo y no necesita ser independiente, realizando un o paralelismo con las tarjetas de red, el n mero serial ser una direccin MAC. u a o

6.2.3.

Aplicacin del protocolo Telnet o

Un sistema integrado, que corra una aplicacin mejor desarrollada, hace o crecer el valor de la solucin. Un producto completo puede considerarse como o un prototipo acompa ado de un software que act e sobre el mismo. n u Por ejemplo: un desarrollador de software realiza una implementacin en o .NET, capaz de conectarse con el procesador y solicitarle la realizacin de aco ciones mediante comandos Telnet. La librer Telnet del Rabbit es la puerta de acceso hacia la interaccin a o entre el prototipo y una plataforma de software determinada.

6.2.4.

Software de conguracin y rmware o

El producto podr pasar por varias etapas antes de llegar al usuario nal. a Una entidad intermediaria entre el fabricante y el usuario nal podr ser una a empresa que brinda soluciones de automatizacin. o Como la universalidad de mdulos exteriores viene acompa ada de una vero n satilidad mayor en el momento de la conguracin del sistema, ser necesario o a desarrollar un software capaz de congurar las preferencias del usuario nal: acciones que debe realizar cada mdulo ante el llamado de una determinada o estructura .CGI. Para la realizacin de un software, las herramientas a seleccionar para su o implementacin son el lenguaje de programacin y el toolkit grco. Este ultio o a mo es la API utilizada para el manejo, control y creacin de una aplicacin o o 143

CAP ITULO 6. MEJORAS PENDIENTES con interfaz grca. La principal consideracin de dise o, debe ser desarrollar a o n un entorno de trabajo amigable para que terceras personas puedan congurar el sistema. Seg n [Wikipedia8, 2007], el rmware es un bloque de instrucciones de prou grama para propsitos espec o cos, grabado en una memoria tipo EPROM, que establece la lgica de ms bajo nivel que controla el comportamiento de los ciro a cuitos integrados. Ser conveniente elaborar un rmware que pueda actualizar a las funcionalidades del sistema. En el mdulo exterior Ir, estos momentos, la o memoria EEPROM del PIC guarda las tramas Ir que sern transmitidas. a

6.2.5.

Utilizacin del servidor FTP o

El servidor FTP (Ver Seccin 3.3.4) puede ser utilizado para subir un nuevo o rmware al Rabbit, de esta forma se evitar la programacin en Dynamic C a o ante actualizaciones. Un aspecto a tener en cuenta ser el tama o del archivo a n del rmware, cabiendo la posibilidad de que pueda exceder la capacidad de memoria.

6.2.6.

Compresin de archivos en el servidor HTTP o

Considerando que el RCM3700 permite la carga de archivos comprimidos al servidor HTTP (Ver Seccin 3.3.4) se podr reducir el espacio ocupado de o a memoria dentro del mismo y as lograres prestaciones en cuanto a la visual izacin de la interfaz grca. o a

6.2.7.

Interfaz grca de manejo a

La interfaz grca que el usuario observa a travs de la web no es una a e caracter stica menor. Cuanto ms sosticada, ms funcionalidad permite; a a a pesar de que puede traer complicaciones a la hora de manejar las distintas estructuras .CGI. Se debe generar un equilibrio entre la complejidad de la interfaz y las funcionalidades espec camente requeridas.

6.2.8.

Aumento de la velocidad de transmisin o

En estos momentos, la velocidad del medio de transmisin es de 9600 bauo dios. Como el MAX485 permite velocidades de hasta 250 Kbps, ser cona veniente aprovechar dicha posibilidad y aumentar la velocidad del medio de transmisin a 19200 baudios, logrando as disminuir los tiempos relevantes en o el sistema: Ttm , Ttn , Te y Tcm . 144

CAP ITULO 6. MEJORAS PENDIENTES

6.2.9.

Escalabilidad de Rabbits y control central

El primer nivel de escalabilidad del sistema consiste en la inclusin de haso ta dicisesis mdulos exteriores dentro del sistema. Una segunda estraticacin o o podr resultar una topolog compuesta por dos o ms mdulos RCM3700 y a a a o un control central desde un servidor determinado. Dicha funcionalidad lograr conectar varias habitaciones o espacios entre a s controlado ms de un ambiente en forma conjunta. Implementando rutinas a de la librer Telnet se podr lograr dicha comunicacin. a a o

6.3.
6.3.1.

Mejoras en los mdulos exteriores o


Generacin de una base de datos infrarroja o

Existen, en el mercado nacional e internacional, muchos dispositivos que pueden controlarse por infrarrojo. Cada dispositivo tiene un control remoto asociado, donde los comandos son (generalmente) compatibles entre dispositivos de la misma marca. Esto genera que los comandos de los equipos, con funcionalidades dispares, sean decodicados de igual forma. El rmware podr resultar ser una herramienta capaz de actualizar una a base de datos con cdigos infrarrojos para su posible utilizacin a travs del o o e procesador. Un programa de conguracin, permitir mapearlos con las diso a tintas aplicaciones para que puedan ser utilizados.

6.3.2.

Fuente de corriente para mdulo exterior Ir o

Los distintos emisores Ir funcionan por corriente y no por voltaje. En estos momentos, el mdulo exterior Ir permite el manejo de un unico dispositivo. o As como el mdulo exterior RS232 brinda la posibilidad de utilizar dos co o nexiones seriales, ser una mejora apreciable conectar dos o ms emisores a a Ir en paralelo y ofrecer el control de varios dispositivos a travs del mismo e mdulo exterior Ir. Para dicha implementacin, deber utilizarse una fuente o o a de corriente.

6.3.3.

Alimentacin directa del bus o

Los elementos que forman parte del sistema deben alimentarse separadamente. El simple hecho de tener un bloque central y diecisis mdulos extee o riores funcionando en forma conjunta, lleva al empleo de diecisiete fuentes de alimentacin. o

145

CAP ITULO 6. MEJORAS PENDIENTES Al utilizar cable par trenzado es posible, cargar el bus y lograr que los mdulos infrarrojos se alimenten del mismo. La manera ms eciente de hao a cerlo ser alimentar el bloque central y modular esa alimentacin para poder a o trasladarla por el bus. Los mdulos exteriores deber tener una circuiter o an a capaz de demodular la se al. n

6.3.4.

Manejo de mayor cantidad de protocolos

Al lograr una plataforma general donde las acciones estn completamente a identicadas, ser posible controlar mayor cantidad de protocolos. Implemena tar el protocolo X10 ser de utilidad (se emplea para usos domticos). En estos a o momentos, estn surgiendo una gran cantidad de protocolos, para el manejo a digital del hogar, por ejemplo el protocolo DALI (DIgital Addressable Lighting Interface) para control de iluminacin. o Generalmente, stos protocolos, funcionan en base a comandos y respuestas, e por lo cual habr que establecer una comunicacin bidireccional entre los a o controladores y el PIC.

6.4.
6.4.1.

Mejoras de fabricacin o
Proteccin ante inclemencias del ambiente o

Considerando la aplicacin primordial del sistema en la domtica, no es de o o descartar su insercin dentro de ambientes industriales: las largas distancias o estn contempladas pero no as la proteccin del bloque central ni los mdulos a o o exteriores. Para el trabajo en dichas circunstancias, se requiere que el procesador sea un sistema robusto ante las inclemencias del ambiente de trabajo - capaz de operar en entornos h medos, polvorientos y corrosivos -, que est protegido u e bajo aislamiento y por ende sin posibilidades de ventilacin. Adems, debe o a contemplarse su ubicacin en espacios de dif acceso y sometido a vibrao cil ciones. Otro aspecto a considerar es la inclusin de repetidores RS485 para agrandar o las distancia entre el bloque central y los mdulos exteriores. o

6.4.2.

Fabricacin de un circuito impreso o

Cuando se cuenta con el dise o nal del producto, es conveniente realizar n un circuito impreso. El circuito impreso esta constituido por una placa aislante (en una o en sus dos caras) de conductores planos metalizados cuyo objeto es 146

CAP ITULO 6. MEJORAS PENDIENTES asegurar las correctas conexiones elctricas entre el conjunto de los compoe nentes electrnicos dispuestos en su supercie. De esta forma se podr obtener o a mejores desempe os en cuanto a velocidad y ruido, y reducir la probabilidad n de falla por mal conexionado.

6.4.3.

Proteccin ante interferencia electromagntica o e

Debido a la utilizacin de un bus de datos, se hace indispensable un estudio o pormenorizado de la interferencia electromagntica generada y recibida por los e componentes de forma de poder dise ar una distribucin optima para minin o mizar dichos problemas. Para atacar el problema de ra habr que fabricar z, a un circuito impreso teniendo en cuenta los siguiente puntos: evitar los loops en las pistas de alta frecuencia colocar los componentes de alta frecuencia lo ms prximos posible a o utilizar planos de tierra Otra consideracin de proteccin radica en la utilizacin de una carcasa o o o metlica que ocie como Jaula de Faraday. Segn [Wikipedia9, 2007], el a u efecto Jaula de Faraday provoca que el campo electromagntico en el interior de e un conductor en equilibrio sea nulo, anulando el efecto de los campos externos.

6.5.

Referencias

[Wikipedia8, 2007] WIKIPEDIA. 2007.Firmware .[online] Disponible en Internet: <http://en.wikipedia.org/wiki/Firmware> [Wikipedia9, 2007] WIKIPEDIA. 2007.Jaula de Faraday .[online] Disponible en Internet: <http://es.wikipedia.org/wiki/Jaula de Faraday>

147

Cap tulo 7 Cierre del proyecto


La autoevaluacin tiene tintes de subjetividad; pensar, elaborar y desarrolo lar un proyecto propio concluye, necesariamente, en una valoracin positiva. o Ms a n, si los objetivos trazados se cumplieron: a u La arquitectura multiprotocolar est compuesta por tres capas claraa mente denidas: capa f sica, capa de conexiones y capa de acciones. Esta solucin maestro - esclavo elimin las colisiones, establecindose el intero o e cambio de informacin por medio de mensajes y noticaciones. o Los mdulos exteriores pueden crecer hasta un mximo de diecisis por o a e sistema. El ID de cada mdulo es una variable independiente del sistema, o jada a travs del usuario. e Rabbit ocia como nexo entre el mundo exterior y los protocolos a controlar. El servidor HTTP es el desencadenante de las acciones solicitadas por medio de la web, y los mdulos exteriores de entradas digitales proveen o una interfaz de entrada. Conceptualizando el dise o por el estudio de un marco terico e implen o mentado la mayor funcionalidad del sistema, aprovechando al mximo a los recursos accesibles que brindan los microcontroladores (programacin o del PIC, desarrollo en Rabbit), se obtuvo un prototipo funcionando. Automatizando procesos, empleando herramientas espec cas y mediando entre los avances y las metas propuestas, se establece un mecanismo de gestin de proyecto capaz de dirigir el desarrollo y la implementacin, o o para que las soluciones lleguen a buen cauce. La domtica - como rama de la ingenier - tiende a ordenarse, estructurarse o a y estandarizarse mediante diversas iniciativas. Tanto las redes Ethernet como las inalmbricas, parecen haberse constituido en las plataformas mediante a

148

CAP ITULO 7. CIERRE DEL PROYECTO las cuales el entorno digital evolucionar, y sobre las cuales, la domtica dea o ber sustentarse para poder aumentar el uso de la tecnolog en los hogares. a a Como contrapartida, al usuario no le resulta atractivo conocer la tecnolog a existente detrs un producto, un sistema o una instalacin. Slo busca funcioa o o nalidad, facilidad de uso, abilidad y servicio. Por lo cual resulta cada vez ms a importante la convergencia entre servicios, infraestructuras y equipamientos. Luego de un a o de investigacin y trabajo, habiendo recorrido un abanico n o de soluciones posibles, se encontr la respuesta a la siguiente pregunta: o Podr desarrollarse una arquitectura multiprotocolar, innitaa mente escalable y exible, capaz de ajustarse a la invencin de nuevos o protocolos y ser sostn de los actuales? e El futuro lo dir. a

149

Bibliograf a
- Casadomo Soluciones S.L. 1999.Pasarela Residenical.[online] Disponible en Internet: <http://www.casadomo.com/ noticiasDetalle.aspx?c=49&m=15&idm=60&pat=14&n2=14> - CopyLeft. 2003.El protocolo SMTP .[online] Disponible en Internet: <http://www.programacionweb.net/ articulos/articulo/?num=412> - CopyLeft. 2003.El protocolo HTTP .[online] Disponible en Internet: <http://www.programacionweb.net/ articulos/articulo/?num=409> - Crompton. 2002.RS485 & Modbus Protocol Guide .[online] Disponible en Internet: <http://www.cromptoninstruments.com/ rs485.pdf> - Davshomepage. 2006.The IrDA Standards for High-Speed Infrared Comunications. [online]. Disponible en Internet: <http://users.pandora.be/davshomepage/> - Del Castillo San Flix, Alvaro. 1999.1.3. El proe tocolo HTTP .[online] Disponible en Internet: <http://acs.barrapunto.org/ articulos/trunk/LinuxActual/Apache/html/x49.html> - Digi. 1996 .ConnectCore 7U.[online] Disponible en Internet: <http://www.digi.com/products/embeddedsolutions/devkits/ connectcore7udevkit.jsp> - DOMODESK SL. 1998.Domtica o La L nea Violeta.[online] Disponible en Internet: <http://www.domodesk.com/ content.aspx?co=51&t=21&c=43> 150

BIBLIOGRAF IA - DOMOTICAVIVA. 2002.Qu e domtica.[online] o Disponible en <http://www.domoticaviva.com/portada/ quesdomotica.htm> - ESAcademy. 2000.The I2C Bus Structure .[online] Disponible en <http://www.esacademy.com/faq/i2c/ general/i2chardw.htm> es la Internet:

Hardware Internet:

- ESAcademy. 2000.The I2C Bus Protocol .[online] Disponible en Internet: <http://www.esacademy.com/faq/ i2c/general/i2cproto.htm> - GETEC. 2005.Etapas de un proyecto .[online] Disponible en Internet: <http://www.getec.etsit.upm.es/docencia/gproyectos/ planicacion/etapas.htm> - HTML. 2007.Investigacin del protocolo HTML .[online] o Disponible en Internet: <http://z0.saladeteletipos.com/ twiki/bin/view/ProcesadorMultiprotocolar/ProtocoloHTML> - IBM. Managed mobile clients with OSGi: Managed smart clients.[online] Disponible en Internet: <http://www-128.ibm.com/developerworks/library/wiosgi/index.html> - Interfacebus. 1978.GPIB 101 - A TUTORIAL ABOUT THE GPIB BUS .[online] Disponible en Internet: <http://www.icselect.com/ pdfs/ab48 11.pdf> - Interfacebus. 1998.GPIB Bus .[online] Disponible en Internet: <http://www.interfacebus.com/ Design Connector GPIB.html> - MAXIM, Dallas Semiconductor. 1997.Selecting and Using RS-232, RS-422, and RS-485 Serial Data Standards. Application Note AN723 [online] [citado 29 Diciembre 2000]. Disponible en Internet: <http://pdfserv.maxim-ic.com/en/an/AN723.pdf> - MAXIM, Dallas Semiconductor. 1997.RS-485 Data Interface Gives Isolated, Full-Duplex Operation. Application Note AN723 [online] [citado 9 Julio 151

BIBLIOGRAF IA 1998]. Disponible en Internet: <http://pdfserv.maximic.com/en/an/AN2116.pdf> - MAXIM, Dallas Semiconductor. 1997.Choosing the Right RS-232 Transceiver. Application Note AN2020 [online] [citado 11 Mayo 2003]. Disponible en Internet: <http://www.maximic.com/appnotes.cfm/appnote number/2020/> - Millar, Iain. 1994.The IrDA Standards for High-Speed Infrared Comunications. [online]. Disponible en Internet: <http://www.irda.org/associations/2494/les/ Publications/high speed.pdf> - Mouser Electronics. 1996 .Digi International.[online] Disponible en Internet: <http://www.mouser.com/digi/> - OShonSoft. 2001.Pic Simulator IDE .[online] Disponible en Internet: <http://www.oshonsoft.com/pic.html> - PC/104 Embedded PC Modules. Consortium.[online] Disponible <http://www.pc104.org/> 1992 . PC/104 en Internet:

- Postel, Jonathan B. 1982. SIMPLE MAIL TRANSFER PROTOCOL. RFC 821 [online]. Disponible en Internet: <http://www.ietf.org/rfc/ rfc0821.txt> - Postel, J. 1983.Especicacin del protocolo TELo NET . RFC 854 [online] Disponible en Internet: <http://www.rfc-es.org/rfc/rfc0854-es.txt> - Programacin. o 1999.Protocolo HTML .[online] Disponible en Internet: <http://www.programacion.com/html/foros/2/> - Rabbit Semiconductir. 1999 .RCM3700 Core.[online] Disponible en Internet: <http://www.rabbitsemiconductor.com/ products/rcm3700/> Rabbit-

- Rabbit Semiconductor. 1999 .Dynamic C: Users Manual.[online] Disponible en Internet: <http://www.rabbitsemiconductor.com/ documentation/docs/manuals/DC/DCUserManual/ DCPUM.pdf> 152

BIBLIOGRAF IA - Rabbit Semiconductor. 1999 .Dynamic C TCP/IP Volume 1.[online] Disponible en Internet: <http://www.rabbitsemiconductor.com/ documentation/docs/manuals/TCPIP/UsersManualV1/ tcpV1.pdf> - Rabbit Semiconductor. 1999 .Dynamic C TCP/IP Volume 2.[online] Disponible en Internet: <http://www.rabbitsemiconductor.com/ documentation/docs/manuals/TCPIP/UsersManualV1/ tcpV2.pdf> - Rabbit Semiconductor. 1999 RCM3700.[online] Disponible en <http://www.rabbitsemiconductor.com/ documentation/docs/manuals/RCM3700/ RC3700UM.pdf> .RabbitCore Internet:

- Rabbit Semiconductor. 1999 .Rabbit 3000 User manual.[online] Disponible en Internet: <http://www.rabbitsemiconductor.com/ documentation/docs/manuals/Rabbit3000/UsersManual/ R3000UM.pdf> - RS485.com. 2007. QUICK REFERENCE FOR RS485, RS422, RS232 AND RS423 .[online] Disponible en Internet: <http://www.rs485.com/rs485spec.html> - Sinexi S.A. 1997.Normas ANSI. ISO. IEEE para cableado UTP .[online] Disponible en Internet: <http://www.monograas.com/trabajos11/utp/utp.shtml> - Strangio, Christopher E. 1993.The RS232 Standard. [online]. Disponible en Internet: <http://www.camiresearch.com/Data Com Basics/ RS232 standard.html> - Tech Soft. 1997.HTBasic rial .[online] Disponible <http://www.techsoft.de/htbasic/ tutgpibm.htm?tutgpib.htm> GPIB Tutoen Internet:

- Technologic Systems. 1984 .TS-7200.[online] Disponible en Internet: <http://www.embeddedarm.com/epc/ ts7200-spec-p.php#7200pricing> 153

BIBLIOGRAF IA - The OSGI Alliance. 2000 .OSGi Service Platform Core Specication.[online] Disponible en Internet: <http://www.osgi.org> - The OSGI Alliance. 2000 .About the OSGi Service Platform.[online] Disponible en Internet: <http://www.osgi.org> - Tigris.org. 2006.Subversion .[online] Disponible en Internet: <http://subversion.tigris.org/> - Tigris.org. 2006.TortoiseSVN .[online] Disponible en Internet: <http://tortoisesvn.tigris.org/> - TWiki.org. 1999.TWiki .[online] Disponible en Internet: <http://www.twiki.org> - Tonks, Daniel. 1998.NEC IR Code Format. [online]. Disponible en Internet: <http://www.remotecentral.com/features/irdisp4.htm> - UAB. 2005.Comunicaciones. [online]. Disponible en Internet: <http://eq3.uab.es/personal/baeza/comunicaciones/ comunica.htm> - UCAR. 1995.Radiaccion Infrarroja. [online]. Disponible en Internet: <http://www.windows.ucar.edu/tour/link=/ physical science/magnetism/em infrared.sp.html> - UltraVNC. 2006.UltraVNC .[online] Disponible en Internet: <http://www.uvnc.com/> - UST Research, INC. 1993.InfraRed Remote Control. [online]. Disponible en Internet: <http://www.ustr.net/infrared/infrared1.shtml> - UTEM. 1994.Manual HTML .[online] Disponible en Internet: <hhttp://www.utem.cl/web/form.htm> - Webopedia. 2007.SMTP .[online] Disponible en Internet: <http://www.webopedia.com/TERM/S/SMTP.html> - Webopedia. 2007.HTTP .[online] Disponible en Internet: <http://www.webopedia.com/TERM/H/HTTP.html> - WIKIPEDIA. 2007.Domtica o .[online] Disponible en Internet: <http://es.wikipedia.org/wiki/Dom %C3 %B3tica> 154

BIBLIOGRAF IA - WIKIPEDIA. 2007.Protocolo de red .[online] Disponible en Internet: <http://es.wikipedia.org/wiki/Protocolo de red> - WIKIPEDIA. 2007.Proyecto .[online] Disponible en Internet: <http://es.wikipedia.org/wiki/Proyecto> - Wikipedia. 2007.Microprocesadores y sistemas embebidos .[online] Disponible en Internet: <http://es.wikipedia.org/wiki/ Sistema integrado#Microprocesadores y sistemas embebidos> - WIKIPEDIA. 2007.HTML .[online] Disponible en Internet: <http://es.wikipedia.org/wiki/HTML> - WIKIPEDIA. 2007.Daisy chain .[online] Disponible en Internet: <http://en.wikipedia.org/wiki/Daisy chain> - WIKIPEDIA. 2007.Category 5 cable .[online] Disponible en Internet: <http://en.wikipedia.org/wiki/Category 5 cable> - ZyTrax, Inc., 1994.Serial Interface Primer. [online]. Disponible en Internet: <http://www.zytrax.com/tech/layer 1/cables/heavy.htm>

155

Parte IV Anexos

Anexo A Herramientas de gestin de o proyecto


A.1. Introduccin o

Con el avance de la tecnolog y la implementacin de nuevas herramientas a o informticas de software libre, es imprescindible la utilizacin de las mismas, a o ya que brindan facilidades que con lpiz y papelson imposibles de sobrellea var. Como agregado, permiten una versatilidad superior a la hora de gestionar un proyecto (documentacin, tareas pendientes, seguimiento del proyecto, vero sionado de archivos guardados, acceso remoto, simulaciones, etc).

A.2.

TWiki

Con la nalidad de gestionar el seguimiento del proyecto se eligi una heo rramienta capaz de cumplir con las siguientes condiciones: guardar un registro de cambios: almacenamiento de distintas versiones con los cambios hechos. trabajar simultaneamente: permitir la edicin del contenido a varias o personas en forma conjunta. env de avisos instantneos: noticacin via E-mail cuando se moo a o dica algn contenido. u acceso en forma remota: autorizar la edicin desde cualquier plataforo ma - Windows, Linux o Mac - o desde Internet. documentar cada vez que se necesite: servir como herramienta para escribir la documentacin a medida que se avanza con el proyecto. o

157

ANEXO A. HERRAMIENTAS DE GESTION DE PROYECTO gestionar el seguimiento del proyecto: tener una lista con tareas pendientes y resposabilidades, como tambin un registro con tareas tere minadas. tener reglas de escritura fciles y simples: documentar en el mismo a lenguaje que se habla y no implementar reglas con nuevos formatos. almacenar archivos: guardar archivos de distinto tipo administrndoa los ordenadamente. jerarquizar y ordenar la informacin: estructurar la informacin de o o forma legible y entendible. poder insertar imgenes en los documentos: documentar utilizando a imgenes a Tomando como base estas armaciones se decidi usar TWiki, una herramieno ta de la familia Wiki. Esta aplicacin permite tener un sitio web cuyas pginas o a son editables y accesibles por los usuarios que poseen el permiso para hacerlo. En este caso, el sitio es una web p blica (accesible para cualquier persona), u pero la edicin est limitada a los usuarios con clave de acceso. o a Con esta aplicacin es posible editar los distintos topics de forma conjunta o sin que aparezcan conictos, ya que los cambios quedan registrados y se posibilita la consulta a versiones anteriores, brindando as una gran exibilidad de trabajo. El TWiki est publicado en http://z0.saladeteletipos.com/twiki/bin/view/ a ProcesadorMultiprotocolar/WebHome La gura A.1 muestra la pgina principal del twiki: a TWiki es una herramienta de software libre, escrita en Perl y distribuida con licencia GPL. Ver [TWiki, 2002]. Ejemplo de utilizacin : o http://z0.saladeteletipos.com/twiki/bin/view/ ProcesadorMultiprotocolar/DocumentacionMarzo - espacio donde se escribi sta documentacin. oe o http://z0.saladeteletipos.com/twiki/bin/view/ ProcesadorMultiprotocolar/ReunionesTutor - registro de las reuniones con el tutor. http://z0.saladeteletipos.com/twiki/bin/view/ ProcesadorMultiprotocolar/TareasPendientes - divisin de tareas geneo rales y por persona. 158

ANEXO A. HERRAMIENTAS DE GESTION DE PROYECTO

Figura A.1: Pgina Principal TWiki a http://z0.saladeteletipos.com/twiki/bin/view/ ProcesadorMultiprotocolar/DecisionSistemasEmbebidos - bitcora con a argumentos de la razn de utilizar Rabbit. o http://z0.saladeteletipos.com/twiki/bin/view/ ProcesadorMultiprotocolar/ArqMultiBitacora - bitcora que denota el a dise o de la arquitectura multiprotocolar. n

A.3.

Subversion TortoiseSVN

Con el objetivo de disponer de un sistema de control de versiones se opt por o una herramienta que deb cumplir las siguientes condiciones: a versionado de archivos: un mismo archivo, con varias versiones, bajo el mismo nombre. historial con cambios: registro de los cambios realizados en cada archivo. versatilidad en la aplicacin: posibilidad de modicar, mover, borrar o cada uno de los elementos fcilmente. a mecanismos para el almacenamiento: contener funciones que permitan especicar y detallar cambios.

159

ANEXO A. HERRAMIENTAS DE GESTION DE PROYECTO herramientas de comparacin: desplegar sencillamente cambios en o las versiones de archivos. Tomando como base stos conceptos se decidi emplear Subversion como e o sistema de control de versiones y TortoiseSVN como interface de acceso a Subversion. Subversion se basa en la implementacin de un Repositorio: un sistema ceno tralizado donde se guarda informacin jerrquicamente en forma de rbol, o a a implementando directorios y archivos. Cada usuario puede crearse una copia del Repositorio en su computadora y mediante las operaciones adecuadas tener siempre un historial con las distintas versiones de los archivos modicados. Existen 2 operaciones bsicas: svn commit y update. Svn commit se utia liza para conrmar los cambios y subirlos al repositorio, generando una nueva revisin de los archivos. Update se emplea para mantener una versin actualio o zada del Repositorio. Esta herramienta permite mantener un orden de los archivos empleados - tanto para el desarrollo como para el producto nal -, de forma tal de no disponer de archivos innecesarios, en los cuales el avance de versiones realizadas est especicado con un cambio de nombre con la mera nalidad de poder a indenticarlo. TortoiseSVN es la interfaz para Windows que permite realizar las siguientes aplicaciones: Subir archivos al Repositorio. Permitir notaciones adjuntas a la revisin cada vez que se realiza un o commit. Actualizar el Repositorio local de cada computadora. Buscar diferencias entre versiones y sealarlas. n Gracar utilizacin del Repositorio central por usuario y fecha. o El Respositorio se encuentra publicado en http://z0.saladeteletipos.com/svn /proyecto pero no es de acceso pblico por razones de privacidad; es necesario u la autenticacin correspondiente. o

160

ANEXO A. HERRAMIENTAS DE GESTION DE PROYECTO Subversion es una herramienta de software libre distribuida con licencia Apache/BSD. Ver [SUBVERSION, 2006] TortoiseSVN es una herramienta de software libre distribuida con licencia GPL. Ver [TortoiseSVN, 2006] La gura A.2 muestra las funcionalidades de Subversion mediante TortoiseSVN.

Figura A.2: TortoiseSVN

A.4.
de:

UltraVNC

Siguiendo la meta de trabajar remotamente se eligi un herramienta capaz o Desplegar el monitor de una computadora: controlar una computadora por internet o red local. Trabajar remotamente con todas las herramientas: utilizar teclado y mouse para comandar la computadora como si se tratase de una propia. UltraVNC es una herramienta para Windows por la cual es posible comandar una computadora por internet, visualizando el monitor.

161

ANEXO A. HERRAMIENTAS DE GESTION DE PROYECTO Consta de varias aplicaciones, pero se emplearon las aplicaciones Server(ejecutada en la computadora a controlar) y Viewer(ejecutada en la computadora en la cual se quiere visualizar la otra). Es necesario tener un router que ocie de Gateway, el cual debe congurarse apropiadamente para que fowardee determinados puertos (en este caso el 5899 y 5999) con el objetivo de establecer la conectividad mediante el UltraVNC. Se creo un usuario y un nombre DNSen el sitio http://www.dyndns.org con el propsito de proporcionar un hostname esttico a un IP dinmico. o a a Se conect la placa Rabbit a una computadora espec o ca y ejecutando el UltraVNC Server mediante el hostname rossanitahome.dyndns.org se tuvo acceso a la programacin y desarrollo del proyecto en forma remota. o Se conect, tambin, una cmara web a la computadora, y apuntando hacia o e a la placa de desarrollo se tuvieron imgenes real-time dedignas de los leds de a estado que posee la placa, utilizados para debugear. UltraVNC es una herramienta de software libre distribuida con licencia GNU. Ver [UVNC, 2006]

A.5.

Pic Simulator IDE

La nalidad de esta herramienta fue la simulacin completa del uso del o PIC 16F628A. Este software posee la cantidad necesaria de aplicaciones para generar toda interaccin virtual con el PIC, brinda un ambiente grco de o a desarrollo de fcil manejo para Windows. a El programa tiene las siguientes propiedades: La interfaz principal demuestra la estructura interna del microcontrolador. Editor de la memoria ash del programa. Editor de la memoria eeprom. Interfaz del pinout del microcontrolador para simular entradas y salidas digitales. Velocidad variable de simulacin. o Administrador de breakpoints para debugear el cdigo. o 162

ANEXO A. HERRAMIENTAS DE GESTION DE PROYECTO Interfaz de simulacin de un mdulo LCD. o o Interfaz de simulacin de motores de paso. o Interfaz de simulacin de la UART de hardware. o Osciloscopio para la visualizacin de se ales generadas. o n La guta A.3 muestra la pantalla principal del programa:

Figura A.3: PIC Simulator IDE Ver [PIC, 2001]

163

ANEXO A. HERRAMIENTAS DE GESTION DE PROYECTO

A.6.

Referencias

[PIC, 2001] OShonSoft. 2001.Pic Simulator IDE .[online] Disponible en Internet: <http://www.oshonsoft.com/pic.html> [SUBVERSION, 2006] Tigris.org. 2006.Subversion .[online] Disponible en Internet: <http://subversion.tigris.org/> [TortoiseSVN, 2006] Tigris.org. 2006.TortoiseSVN .[online] Disponible en Internet: <http://tortoisesvn.tigris.org/> [TWiki, 2002] TWiki.org. 1999.TWiki .[online] Disponible en Internet: <http://www.twiki.org> [UVNC, 2006] UltraVNC. 2006.UltraVNC .[online] Disponible en Internet: <http://www.uvnc.com/>

164

Anexo B Esquemticos a
En este anexo se muestran los circuitos correspondientes a cada modulo y al blo1que central. La gura B.1 muestra el esquemtico correspondiente al modulo exterior a de entradas.

Figura B.1: Modulo exterior de entradas La gura B.2 muestra el esquemtico correspondiente al modulo exterior a de salidas. La gura B.3 muestra el esquemtico correspondiente al modulo exterior a IR. 165

ANEXO B. ESQUEMATICOS

Figura B.2: Modulo exterior de salidas La gura B.4 muestra el esquemtico correspondiente al modulo exterior a RS232. La gura B.5 muestra el esquemtico correspondiente al modulo exterior a RS232.

166

ANEXO B. ESQUEMATICOS

Figura B.3: Modulo exterior IR

Figura B.4: Modulo exterior RS232 167

ANEXO B. ESQUEMATICOS

Figura B.5: Modulo Bloque Central

168

Anexo C Cdigos Fuentes o


C.1. Introduccin o

En esta seccin se describen con diagramas de bloque las prestaciones de o la placa RCM3700 y se documentan los distintos cdigos utilizados para la o programacin de las distintas pruebas. o

C.2.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

Cdigo ModRs232.asm o

; ; ; O MDULO EXTERIOR RS232 ; ; ; ; ; ; ALAN COHN ( 1 3 7 0 3 3 ) ROSSANA MORALES ( 6 7 7 5 6 ) ; ; UNIVERSIDAD ORT URUGUAY ; ; NAO 2 0 0 7 ; ; ; list p=16f628A #i n c l u d e <p16F628A . i n c > errorlevel 302 ; ; ; l i s t d i r e c t i v e to d e f i n e p r oc e ss o r processor s p e c i f i c variable d ef i ni t io n s suppress m essage 3 0 2 fr om list file

CONFIG CP OFF & DATA CP OFF & LVP OFF & BOREN OFF & MCLRE ON & WDT OFF & PWRTE ON & INTOSC OSC NOCLKOUT ; VARIABLE DEFINITIONS w temp EQU 0 x71 status temp EQU 0 x72 contador EQU 0 x21 aux EQU 0 x22 dato rs232 EQU 0 x23 p or l a UART EQU 0 x24 flag rs232 address EQU 0 x25 exteriores address dec EQU 0 x26 address uni EQU 0 x27 address EQU 0 x28 direccion rs2321 llega EQU 0 x29 direccion rs2322 que l l e g a EQU 0x2A intento rs232 comando rs232 EQU 0x2B parametro rs2321 EQU 0x2C llega EQU 0x2D parametro rs2322 llega paridad rs232 EQU 0x2E 0x2F p a r i d a d c a l c u l a d a EQU d e l m en saje

; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

v a r i a b l e u sed f o r c o n t e x t s a v i n g v a r i a b l e u sed f o r c o n t e x t s a v i n g v a r i a b l e que c u e n t a l a s v e c e s que s e r o t a un b y t e v a r i a b l e que gu ar d a e l b y t e IR a t r a s m i t i r v a r i a b l e u sad a p a r a g u a r d a r e l d a t o r s 2 3 2 r e c i b i d o v a r i a b l e que a v i s a cuando s e p r o d u c e una i n t de Rx v a r i a b l e que gu ar d a l a d i r e c c i n de l o s mdulos o o v a r i a b l e que gu ar d a en ASCII l a s v a r i a b l e que gu ar d a en ASCII l a s v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a el el la el el el el el decenas d e l address unidades d e l address address que

p r i m e r b y t e de l a segu n d o b y t e de l a

e l b y t e de i n t e n t o que l l e g a b y t e d e l comando que l l e g a p r i m e r b y t e d e l p ar m et r o que a p r i m e r b y t e d e l p ar m et r o que a b y t e de p a r i d a d que l l e g a v a l o r de l a p a r i d a d c a l c u l a d a

169

ANEXO C. CODIGOS FUENTES


35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 contador errores EQU mismo m en saje EQU tipo modulo EQU numero serie o mdulo e x t e r i o r 0 x30 0 x31 0 x32 ; ; ; v a r i a b l e que c u e n t a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a los e r r o r e s de p a r i d a d de un

e l t i p o d e l mdulo e x t e r i o r o e l u nmero de s e r i e p r o p i o d e l

; ; ; COMIENZO DEL PROGRAMA ; ORG goto ORG 0 x000 main 0 x004 ; processor reset ; go t o b e g i n n i n g ; interrupt vector vector o f program location

; ; MANEJADOR DE INTERRUPCIONES ; movwf w temp ; save o f f c u r r e n t W re g i ste r c o n t e n t s movf STATUS, w ; move s t a t u s r e g i s t e r i n t o W r e g i s t e r ; s a v e o f f c o n t e n t s o f STATUS r e g i s t e r movwf s t a t u s t e m p b t f s c PIR1 , RCIF goto Isr T0 Fin isr movf status temp ,w movwf STATUS swap f w temp , f swap f w temp , w retfie ; ISR o r e c e p c i n USART Isr T0 bsf flag rs232 ,0 movf RCREG,W ; movwf d a t o r s 2 3 2 goto Fin isr ; RX i n t e r r u m p i o ?

; ;

r e t r i e v e cop y o f STATUS r e g i s t e r r e s t o r e p r e i s r STATUS r e g i s t e r c o n t e n t s contents

; r e s t o r e p r e i s r W r e g i s t e r ; return from i n t e r r u p t

; s e t e a e l b i t 0 en 1 l e e l o que l l e g a y l o gu ar d a en W

; ; PROGRAMA PRINCIPAL ; main ; I n i c i a l i z a c i o n movlw 0 x21 movwf FSR otro clrf INDF incf FSR, 1 movlw 0 x32 x o r w f FSR, 0 memoria b t f s s STATUS, 2 goto otro ; S e t e o s Seteos de v a r i a b l e s ; e s c r i b e 2 1 h en W

borra

l a d i r e c c i n de memoria que e s t en INDF o a

; e s c r i b e 3 2 h en W ; compara que s e hayan b o r r a d o t o d a s

las

d i r e c c i o n e s de

c o r r e s p o n d i e n t e s

; S e t e o d e l p e r i f e r i c o RS232 bsf STATUS, RP0 ; i r a l b an co 1 movlw d 25 ; 9 6 0 0 b a u d i o s ( 4 MHz, BRGH=1) movwf SPBRG movlw b 00100100 movwf TXSTA bcf STATUS, RP0 ; i r a l b an co 0 movlw b 10010000 ; SPEN= 1 , CREN=1 movwf RCSTA ; h a b i l i t a e l puerto s e r i e y la recepcion continua movf RCREG,W ; l e e 2 v e c e s e l RCREG p or s i h a b i a b a s u r a movf RCREG,W ; S e t e o s de p u e r t o s de I /O movlw 0x2F ; pone un 0 0 1 0 1 1 1 1 en W bsf STATUS, RP0 ; i r a l b an co 1 movwf TRISA ; RA0RA1RA2 RA3RA5 p i n e s de e n t r a d a , RA4 RA6 RA7 p i n e s de salida movlw 0 x02 ; pone un 0 0 0 0 0 0 1 0 en W movwf TRISB ; RB1/Rx p i n de e n t r a d a , RB0RB2RB3RB4RB5RB6RB7 p i n e s de s a l i d a bcf STATUS, RP0 ; i r a l b an co 0 movlw 0 x7 ; ap aga c o m p a r a d o r e s movwf CMCON ; D e c l a r a c i n d e l o movlw 0 x31 movwf t i p o m o d u l o t i p o de mdulo e x t e r i o r y u nmero de o ; mueve un 3 1 h ( 1 ) a W ; mueve W a t i p o m o d u l o s e r i e

170

ANEXO C. CODIGOS FUENTES


118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 movlw 0 x42 movwf n u m e r o s e r i e ; pone un 4 h (B) en W ; mueve W a n u m e r o s e r i e propio d e l mdulo e x t e r i o r y en vo de i d e n t i f i c a c i n o o al

; V e r i f i c a c i n d e l a d d r e s s o R ab b i t call Verificar address ; I n i c i a l i z a c i n o bcf PORTB, 3 bcf PORTB, 4 de p u e r t o s

para p r e p a r a r s e para l a r e c e p c i n o ; p o n e r a 0 e l RB3 ; p o n e r a 0 e l RB4

d e l m en saje

d e l R ab b i t

; H a b i l i t a c i o n de i n t e r r u p c i o n e s bsf INTCON, 7 ; h a b i l i t a l a s i n t e r r u p c i o n e s GIE bsf INTCON, PEIE ; h abil ita interrupcion pe r i f e ri c a bsf STATUS, RP0 ; i r a l b an co 1 bsf PIE1 , RCIE ; h a b i l i t a i n t e r r u p c i o n de r e c e p c i o n de USART bcf STATUS, RP0 ; i r a l b an co 0 Loop principal btfsc flag rs232 ,0 call Recibir goto Loop principal

; Rx i n t e r r u m p i o ? ; loop forever

; ; SUBRUTINAS PARA LA ORECEPCIN Y PROCESAMIENTO DEL MENSAJE ; ; S u b r u t i n a que r e c i b e Recibir clrf flag rs232 movlw 0xA xorwf d ato rs232 , 0 b t f s c STATUS, 2 goto Procesar movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto 0 x00 contador , 0 STATUS, 2 es direccion 0 x01 contador , 0 STATUS, 2 es direccion 0 x02 contador , 0 STATUS, 2 es intento 0 x03 contador , 0 STATUS, 2 es com an d o 0 x04 contador , 0 STATUS, 2 es parametro 0 x05 contador , 0 STATUS, 2 es parametro el m en saje y gu ar d a s u s p a r t e s en l o s campos correspondientes

; borrar f lag r s232 ; mueve un Ah a W ( f i n de l n e a ) ; l o compara con e l d a t o r s 2 3 2 ; Procesar l a trama r e c i b i d a

; mueve un 0 h a W ; l o compara con l a 1 ; mueve un 1 h a W ; l o compara con l a 2 ; mueve un 2 h a W ; l o compara con l a

variable

contador

variable

contador

variable

contador

; mueve un 3 h a W ; l o compara con l a

variable

contador

; mueve un 4 h a W ; l o compara con l a 1 ; mueve un 5 h a W ; l o compara con l a 2

variable

contador

variable

contador

; Guarda e l s p t i m o b y t e que l l e g a en l a v a r i a b l e p a r i d a d r s 2 3 2 e movf dato rs232 ,0 ; mueve d a t o r s 2 3 2 a W movwf p a r i d a d r s 2 3 2 ; mueve W a p a r i d a d r s 2 3 2 clrf contador ; l i m p i a v a r i a b l e contador return ; Guarda e l p r i m e r b y t e que es direccion 1 movf dato rs232 ,0 movwf d i r e c c i o n r s 2 3 2 1 incf contador , 1 return llega en l a variable direccion rs2321

; mueve d a t o r s 2 3 2 a W ; mueve W a d i r e c c i o n r s 2 3 2 1 ; incrementa l a v a r i a b l e contador

; Guarda e l segu n d o b y t e que l l e g a en l a v a r i a b l e d i r e c c i o n r s 2 3 2 2 es direccion 2 ; mueve d a t o r s 2 3 2 a W movf dato rs232 ,0 ; mueve W a d i r e c c i o n r s 2 3 2 2 movwf d i r e c c i o n r s 2 3 2 2 incf contador , 1 ; incrementa l a v a r i a b l e contador return ; Guarda e l t e r c e r es intento movf dato rs232 ,0 movwf i n t e n t o r s 2 3 2 incf contador , 1 return ; Guarda e l cuarto b y t e que llega en l a variable intento rs232

; mueve d a t o r s 2 3 2 a W ; mueve W a i n t e n t o ; incrementa l a v a r i a b l e

contador

b y t e que

llega

en l a

variable

comando rs232

171

ANEXO C. CODIGOS FUENTES


205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 es com an d o movf dato rs232 ,0 movwf c o m a n d o r s 2 3 2 incf contador , 1 return ; Guarda e l q u i n t o b y t e que es parametro 1 movf dato rs232 ,0 movwf p a r a m e t r o r s 2 3 2 1 incf contador , 1 return ; Guarda e l s e x t o b y t e que es parametro 2 movf dato rs232 ,0 movwf p a r a m e t r o r s 2 3 2 2 incf contador , 1 return ; Se f i j a s i e l m en saje Procesar bcf INTCON, PEIE clrf contador movf address dec ,0 xorwf d i r e c c i o n r s 2 3 2 1 , 0 b t f s s STATUS, 2 return movf address uni ,0 xorwf d i r e c c i o n r s 2 3 2 2 , 0 b t f s s STATUS, 2 return

; mueve d a t o r s 2 3 2 a W ; mueve W a c o m a n d o r s 2 3 2 ; incrementa l a v a r i a b l e contador

llega

en l a

variable

parametro rs2321

; mueve d a t o r s 2 3 2 a W ; mueve W a p a r a m e t r o r s 2 3 2 1 ; incrementa l a v a r i a b l e contador

llega

en l a

variable

parametro rs2322

; mueve d a t o r s 2 3 2 a W ; mueve W a p a r a m e t r o r s 2 3 2 2 ; incrementa l a v a r i a b l e contador

e s p a r a l comparando d i r e c c i o n e s e ; deshabilita interrupcion p e ri f e r i c a l i m p i a v a r i a b l e contador ; mueve a d d r e s s d e c a W ; l o compara con l a v a r i a b l e d i r e c c i o n r s 2 3 2 1

; mueve a d d r e s s u n i a W ; l o compara con l a v a r i a b l e

direccion rs2322

; Se f i j a s i e l comando e s c o n o c i d o Bu scar com an d o movlw 0 x41 ; mueve un 4 2 h ( A) ; l o compara x o r w f com an d o r s232 , 0 b t f s c STATUS, 2 goto Verificar paridad movlw 0 x52 ; mueve un 5 2 h ( R) x o r w f com an d o r s232 , 0 ; l o compara b t f s c STATUS, 2 goto Verificar paridad movlw 0 x53 ; mueve un 5 3 h ( S ) x o r w f com an d o r s232 , 0 ; l o compara b t f s c STATUS, 2 goto Verificar paridad movlw 0 x55 ; mueve un 5 5 h ( U) ; l o compara x o r w f com an d o r s232 , 0 b t f s c STATUS, 2 goto Verificar paridad

a W con l a

variable

comando rs232

a W con l a

variable

comando rs232

a W con l a

variable

comando rs232

a W con l a

variable

comando rs232

; V e r i f i c a s i e l campo i n t e n t o e s t d e n t r o de l o s p a r m e t r o s a a Desconocido error paridad movlw 0 x32 ; mover un 0 x32 ( 2 ) a W ; restar W a intento rs232 su b wf i n t e n t o r s 2 3 2 , 0 b t f s c STATUS, 1 ; v e r i f i c a r s i el resultado es p os it i v o goto Encender alarma clrf direccion rs2321 ; limpia variable direccion rs2321 clrf direccion rs2322 ; limpia variable direccion rs2322 ; limpia variable intento rs232 clrf intento rs232 clrf comando rs232 ; l i m p i a v a r i a b l e comando rs232 clrf parametro rs2321 ; limpia v a ri a bl e parametro rs2321 ; limpia v a ri a bl e parametro rs2322 clrf parametro rs2322 clrf paridad rs232 ; limpia variable paridad rs232 bsf INTCON, PEIE ; habilita ointerrupcin p eri f ri ca e return ; E n c i e n d e l a al ar m a de v i o l a c i n de l a r e g l a de l o s 3 i n t e n t o s ( l e d ) o Encender alarma bsf PORTA, 4 ; s e t a r RA4 en e s t a d o a l t o clrf direccion rs2321 ; limpia variable direccion rs2321 clrf direccion rs2322 ; limpia variable direccion rs2322 ; limpia variable intento rs232 clrf intento rs232 ; l i m p i a v a r i a b l e comando rs232 clrf comando rs232 clrf parametro rs2321 ; limpia v a ri a bl e parametro rs2321 clrf parametro rs2322 ; limpia v a ri a bl e parametro rs2322 ; limpia variable paridad rs232 clrf paridad rs232 bsf INTCON, PEIE ; habilita ointerrupcin p eri f ri ca e return ; C l c u l o de p a r i d a d a Verificar paridad movf direccion rs2321 ,0 xorwf d i r e c c i o n r s 2 3 2 2 , 0 xorwf i n t e n t o r s 2 3 2 , 0 x o r w f com an d o r s232 , 0 xorwf p arametro rs2321 , 0

; mueve d i r e c c i o n r s 2 3 2 1 a ; c a l c ul a l a paridad entre ; c alc ul a la paridad entre ; c alc ul a la paridad entre ; c a lc ul a la paridad entre

W W W W W

y e y y

direccion rs23222 intento rs232 comando rs232 parametro rs2321

172

ANEXO C. CODIGOS FUENTES


293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 xorwf p arametro rs2322 , 0 ; c a lc ul a la paridad entre W y parametro rs2322 movwf p a r i d a d c a l c u l a d a ; gu ar d a l a p a r i d a d c a l c u l a d a en l a v a r i a b l e paridad calculada ; compara p a r i d a d c a l c u l a d a con l a p a r i d a d que e n v i o xorwf p ari d ad rs232 , 0 el rabbit b t f s c STATUS, 2 goto Decidir respuesta goto Desconocido error paridad ; D i s t i n g u e e l t i p o de r e s p u e s t a a e n v i a r u s e g n e l comando que a r r i b o Decidir respuesta bcf PORTA, 4 ; s e t e a r RA4 en e s t a d o b a j o movlw 0 x41 ; mueve un 4 2 h ( A) a W ; l o compara con l a v a r i a b l e c o m a n d o r s 2 3 2 x o r w f com an d o r s232 , 0 b t f s c STATUS, 2 goto Definir accion movlw 0 x52 ; mueve un 5 2 h ( R) a W x o r w f com an d o r s232 , 0 ; l o compara con l a v a r i a b l e c o m a n d o r s 2 3 2 b t f s c STATUS, 2 goto Resetear modulo movlw 0 x55 ; mueve un 5 5 h ( U) a W x o r w f com an d o r s232 , 0 ; l o compara con l a v a r i a b l e c o m a n d o r s 2 3 2 b t f s c STATUS, 2 goto Enviar presencia ; H a b i l i t a l a o r e c e p c i n Fin decidir respuesta clrf direccion rs2321 clrf direccion rs2322 clrf intento rs232 clrf comando rs232 clrf parametro rs2321 clrf parametro rs2322 clrf paridad rs232 return d e l MAX485 y v u e l v e a e s p e r a r un m en saje ; ; ; ; ; ; ; limpia limpia limpia limpia limpia limpia limpia variable variable variable variable variable variable variable direccion rs2321 direccion rs2322 intento rs232 comando rs232 parametro rs2321 parametro rs2322 paridad rs232 d e l R ab b i t

; Enva l a r e s p u e s t a y r e s e t e a Resetear modulo call Enviar respuesta call Reseteo goto Fin decidir respuesta ; E n vi a l a r e s p u e s t a y d e f i n e Definir accion call Enviar respuesta call Ejecutar accion goto Fin decidir respuesta

e l mdulo e x t e r i o r o

la accin o

correspondiente

; ; SUBRUTINAS PARA EL IENVO DE NOTIFICACIONES ; ; S u b r u t i n a que e n v i a un b y t e p or l a USART E n vi o movwf TXREG ; c a r a c t e r en W bsf STATUS, RP0 ; i r a l b an co 1 testeo btfss TXSTA,TRMT ; e s p e r a h a s t a c o m p l e t a r Tx , goto testeo bcf STATUS, RP0 ; i r a l b an co 0 return

testea (1)

; S u b r u t i n a que e n v i a l a n o t i f i c a c i n de p r e s e n c i a a l R ab b i t o Enviar presencia bcf PORTB, 5 ; pone a 0 e l p i n B d e l d e m u l t i p l e x o r bcf PORTB, 6 ; pone a 0 e l p i n A d e l d e m u l t i p l e x o r bsf PORTA, 7 ; p o n e r en 1 e l MAX485 p a r a h a b i l i t a r l a t r a n s m i s i n ( o p i n DE) movlw P ; mueve P a W call E n vi o ; en va e l i d e n t i f i c a d o r de p r e s e n c i a movf tipo modulo , 0 ; mueve t i p o m o d u l o a W call E n vi o ; en va e l t i p o m o d u l o a l r a b b i t movf numero serie ,0 ; mueve n u m e r o s e r i e a W call E n vi o ; en va e l n u m e r o s e r i e a l r a b b i t movlw 0xA ; mueve e l c a r a c t e r ASCII 1 0 a W call E n vi o ; en va e l f i n de l n e a a l r a b b i t bcf PORTA, 7 ; p o n e r en 0 e l MAX485 p a r a h a b i l i t a r l a r e c e p c i n ( o p i n DE) bsf INTCON, PEIE ; habilita ointerrupcin p eri f ri ca e goto Fin decidir respuesta ; S u b r u t i n a que e n v i a Enviar respuesta bcf PORTB, 5 bcf PORTB, 6 bsf PORTA, 7 p i n DE) movlw R la notificacin o de r e s p u e s t a al R ab b i t

; pone a 0 e l p i n B d e l d e m u l t i p l e x o r ; pone a 0 e l p i n A d e l d e m u l t i p l e x o r ; p o n e r en 1 e l MAX485 p a r a h a b i l i t a r l a t r a n s m i s i n ( o ; mueve R a W

173

ANEXO C. CODIGOS FUENTES


376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 call E n vi o movlw 0xA call E n vi o bcf PORTA, 7 p i n DE) return ; en va e l i d e n t i f i c a d o r de r e s p u e s t a ; mueve e l c a r a c t e r ASCII 1 0 a W ; en va e l f i n de l n e a a l r a b b i t ; p o n e r en 0 e l MAX485 p a r a h a b i l i t a r

la recepcin o

; ; SUBRUTINAS QUE VERIFICAN EL ADDRESS DEL OMDULO ; ; S u b r u t i n a que v e r i f i c a Verificar address movlw 0 x30 addwf a d d r e s s d e c , 1 addwf a d d r e s s u n i , 1 movf PORTA, 0 andlw 0xF movwf a d d r e s s b t f s c address , 3 goto fijarse resto seguir verificando addwf a d d r e s s u n i , 1 return fijarse resto movlw 0 x08 xorwf address , 0 b t f s c STATUS, 2 goto seguir verificando movlw 0 x09 xorwf address , 0 b t f s c STATUS, 2 goto seguir verificando movlw 0x0A xorwf address , 0 b t f s c STATUS, 2 call address 10 movlw 0x0B xorwf address , 0 b t f s c STATUS, 2 call address 11 movlw 0x0C xorwf address , 0 b t f s c STATUS, 2 call address 12 movlw 0x0D xorwf address , 0 b t f s c STATUS, 2 call address 13 movlw 0x0E xorwf address , 0 b t f s c STATUS, 2 call address 14 movlw 0 x0F xorwf address , 0 b t f s c STATUS, 2 call address 15 return el address d e l mdulo e x t e r i o r o

; ; ; ; ; ;

suma 3 0 h a a d d r e s s d e c p a r a t r a n s f o r m a r l o en ASCII suma 3 0 h a a d d r e s s u n i p a r a t r a n s f o r m a r l o en ASCII s e f i j a e s t a d o de PORTA l i m p i a l o que no e s n e c e s a r i o mueve e l e s t a d o de l o s p r i m e r o s 4 p u e r t o s a a d d r e s s b u s c a s i e l a d d r e s s e s t e n t r e l o s p r i m e r o s 7 u nmeros a

; suma e l

v a l o r de W a l a s

unidades

e s c r i b e un 8 en W ; l o compara con a d d r e s s

e s c r i b e un 9 en W ; l o compara con a d d r e s s

e s c r i b e un 1 0 en W ; l o compara con a d d r e s s

e s c r i b e un 1 1 en W ; l o compara con a d d r e s s

e s c r i b e un 1 2 en W ; l o compara con a d d r e s s

e s c r i b e un 1 3 en W ; l o compara con a d d r e s s

e s c r i b e un 1 4 en W ; l o compara con a d d r e s s

e s c r i b e un 1 5 en W ; l o compara con a d d r e s s

; S u b r u t i n a que e s c r i b e un 1 0 en u nmeros ASCII address 10 ; i n c r e m e n t a en 1 a d d r e s s d e c incf address dec ,1 return ; S u b r u t i n a que e s c r i b e un 1 1 en u nmeros ASCII address 11 ; i n c r e m e n t a en 1 a d d r e s s d e c incf address dec ,1 incf address uni , 1 ; i n c r e m e n t a en 1 a d d r e s s u n i return ; S u b r u t i n a que e s c r i b e un 1 2 en u nmeros ASCII address 12 incf address dec ,1 ; i n c r e m e n t a en 1 a d d r e s s d e c movlw 0 x02 ; suma e l v a l o r de W a l a s u n i d a d e s addwf a d d r e s s u n i , 1 return ; S u b r u t i n a que e s c r i b e un 1 3 en u nmeros ASCII address 13 ; i n c r e m e n t a en 1 a d d r e s s d e c incf address dec ,1 movlw 0 x03 addwf a d d r e s s u n i , 1 ; suma e l v a l o r de W a l a s u n i d a d e s return ; S u b r u t i n a que address 14 e s c r i b e un 1 4 en u nmeros ASCII

174

ANEXO C. CODIGOS FUENTES


463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 incf address dec ,1 movlw 0 x04 addwf a d d r e s s u n i , 1 return ; incrementa en 1 a d d r e s s d e c unidades

; suma e l

v a l o r de W a l a s

; S u b r u t i n a que e s c r i b e un 1 5 en u nmeros ASCII address 15 incf address dec ,1 ; i n c r e m e n t a en 1 a d d r e s s d e c movlw 0 x05 ; suma e l v a l o r de W a l a s u n i d a d e s addwf a d d r e s s u n i , 1 return ; ; SUBRUTINAS CONCURRENTES CON LA OACCIN Y RESETEO DEL OMDULO ; ; S u b r u t i n a que r e s e t a Reseteo bsf PORTA, 6 return e l mdulo e x t e r i o r o ; s e t e a RA6 en 1

; S u b r u t i n a que e j e c u t a l a a c c i n d e l o mdulo e x t e r i o r o Ejecutar accion movlw 0 x30 ; mueve un 3 0 h ( 0 ) a W ; l o compara con l a v a r i a b l e xorwf p arametro rs2321 , 0 b t f s c STATUS, 2 goto comparar siguiente 0 movlw 0 x31 ; mueve un 3 1 h ( 1 ) a W xorwf p arametro rs2321 , 0 ; l o compara con l a v a r i a b l e b t f s c STATUS, 2 goto comparar siguiente 1 movlw 0 x32 ; mueve un 3 2 h ( 2 ) a W ; l o compara con l a v a r i a b l e xorwf p arametro rs2321 , 0 b t f s c STATUS, 2 goto comparar siguiente 2 ; Compara e l segu n d o comparar siguiente 3 movlw 0 x30 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 30 movlw 0 x31 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 31 movlw 0 x32 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 32 Terminar ejecutar bcf PORTB, 5 bcf PORTB, 6 bsf INTCON, PEIE return ; Compara e l segu n d o b y t e comparar siguiente 0 movlw 0 x30 xorwf p arametro rs2322 , 0 b t f s c STATUS, 2 goto Terminar ejecutar movlw 0 x31 xorwf p arametro rs2322 , 0 b t f s c STATUS, 2 goto Accion 1 movlw 0 x32 xorwf p arametro rs2322 , 0 b t f s c STATUS, 2 goto Accion 2 movlw 0 x33 xorwf p arametro rs2322 , 0 b t f s c STATUS, 2 goto Accion 3 movlw 0 x34 xorwf p arametro rs2322 , 0 b t f s c STATUS, 2 goto Accion 4 movlw 0 x35 xorwf p arametro rs2322 , 0 b t f s c STATUS, 2 goto Accion 5 movlw 0 x36 xorwf p arametro rs2322 , 0 b t f s c STATUS, 2 goto Accion 6 movlw 0 x37 b y t e d e l p ar m et r o a s a b i e n d o que e l

parametro rs2321

parametro rs2321

parametro rs2321

p r i m e r o f u e un t r e s

,0

; mueve un 3 0 h ( 0 ) a W ; l o compara con l a

variable

parametro rs2322

,0

; mueve un 3 1 h ( 1 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 2 h ( 2 ) a W ; l o compara con l a

variable

parametro rs2321

; pone a 0 e l p i n B d e l d e m u l t i p l e x o r ; pone a 0 e l p i n A d e l d e m u l t i p l e x o r ; habilita ointerrupcin p eri f ri ca e

d e l p ar m et r o a

s a b i e n d o que e l

p r i m e r o f u e un c e r o

; mueve un 3 0 h ( 0 ) a W ; l o compara con l a

variable

parametro rs2322

; no e j e c u t a r n i n gu n a a c c i n o ; mueve un 3 1 h ( 1 ) a W ; l o compara con l a v a r i a b l e

parametro rs2321

; mueve un 3 2 h ( 2 ) a W ; l o compara con l a

variable

parametro rs2321

; mueve un 3 3 h ( 3 ) a W ; l o compara con l a

variable

parametro rs2321

; mueve un 3 4 h ( 4 ) a W ; l o compara con l a

variable

parametro rs2321

; mueve un 3 5 h ( 5 ) a W ; l o compara con l a

variable

parametro rs2321

; mueve un 3 6 h ( 6 ) a W ; l o compara con l a

variable

parametro rs2321

; mueve un 3 7 h ( 7 ) a W

175

ANEXO C. CODIGOS FUENTES


551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto parametro rs2322 ,0 STATUS, 2 Accion 7 0 x38 parametro rs2322 ,0 STATUS, 2 Accion 8 0 x39 parametro rs2322 ,0 STATUS, 2 Accion 9 ; l o compara con l a variable parametro rs2321

; mueve un 3 8 h ( 8 ) a W ; l o compara con l a

variable

parametro rs2321

; mueve un 3 9 h ( 9 ) a W ; l o compara con l a

variable

parametro rs2321

; Compara e l segu n d o comparar siguiente 1 movlw 0 x30 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 10 movlw 0 x31 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 11 movlw 0 x32 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 12 movlw 0 x33 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 13 movlw 0 x34 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 14 movlw 0 x35 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 15 movlw 0 x36 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 16 movlw 0 x37 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 17 movlw 0 x38 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 18 movlw 0 x39 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 19 ; Compara e l segu n d o comparar siguiente 2 movlw 0 x30 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 20 movlw 0 x31 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 21 movlw 0 x32 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 22 movlw 0 x33 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 23 movlw 0 x34 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 24 movlw 0 x35 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 25 movlw 0 x36 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 26 movlw 0 x37 xorwf p arametro rs2322 b t f s c STATUS, 2

b y t e d e l p ar m et r o a

s a b i e n d o que e l

p r i m e r o f u e un uno

,0

; mueve un 3 0 h ( 0 ) a W ; l o compara con l a

variable

parametro rs2322

,0

; mueve un 3 1 h ( 1 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 2 h ( 2 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 3 h ( 3 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 4 h ( 4 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 5 h ( 5 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 6 h ( 6 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 7 h ( 7 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 8 h ( 8 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 9 h ( 9 ) a W ; l o compara con l a

variable

parametro rs2321

b y t e d e l p ar m et r o a

s a b i e n d o que e l

p r i m e r o f u e un d os

,0

; mueve un 3 0 h ( 0 ) a W ; l o compara con l a

variable

parametro rs2322

,0

; mueve un 3 1 h ( 1 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 2 h ( 2 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 3 h ( 3 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 4 h ( 4 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 5 h ( 5 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 6 h ( 6 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 7 h ( 7 ) a W ; l o compara con l a

variable

parametro rs2321

176

ANEXO C. CODIGOS FUENTES


639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 goto movlw xorwf btfsc goto movlw xorwf btfsc goto Accion 27 0 x38 parametro rs2322 ,0 STATUS, 2 Accion 28 0 x39 parametro rs2322 ,0 STATUS, 2 Accion 29

; mueve un 3 8 h ( 8 ) a W ; l o compara con l a

variable

parametro rs2321

; mueve un 3 9 h ( 9 ) a W ; l o compara con l a

variable

parametro rs2321

; E j e c u t a a c c i n o n1 ( P u e r t o o Accion 1 bsf PORTB, 6 goto Terminar ejecutar ; E j e c u t a a c c i n o n2 ( P u e r t o o Accion 2 bsf PORTB, 6 goto Terminar ejecutar ; E j e c u t a a c c i n o n3 ( P u e r t o o Accion 3 bsf PORTB, 6 goto Terminar ejecutar ; E j e c u t a a c c i n o n4 ( P u e r t o o Accion 4 bsf PORTB, 6 goto Terminar ejecutar ; E j e c u t a a c c i n o n5 ( P u e r t o o Accion 5 bsf PORTB, 6 goto Terminar ejecutar ; E j e c u t a a c c i n o n6 ( P u e r t o o Accion 6 bsf PORTB, 6 goto Terminar ejecutar ; E j e c u t a a c c i n o n7 ( P u e r t o o Accion 7 bsf PORTB, 6 goto Terminar ejecutar ; E j e c u t a a c c i n o n8 ( P u e r t o o Accion 8 bsf PORTB, 6 goto Terminar ejecutar ; E j e c u t a a c c i n o n9 ( P u e r t o o Accion 9 bsf PORTB, 6 goto Terminar ejecutar ; E j e c u t a a c c i n o n10 ( P u e r t o o Accion 10 bsf PORTB, 6 goto Terminar ejecutar ; E j e c u t a a c c i n o n11 ( P u e r t o o Accion 11 bsf PORTB, 6 goto Terminar ejecutar ; E j e c u t a a c c i n o n12 ( P u e r t o o Accion 12 bsf PORTB, 6 goto Terminar ejecutar ; E j e c u t a a c c i n o n13 ( P u e r t o o Accion 13 bsf PORTB, 6 goto Terminar ejecutar ; E j e c u t a a c c i n o n14 ( P u e r t o o Accion 14 bsf PORTB, 6 goto Terminar ejecutar ; E j e c u t a a c c i n o n15 ( P u e r t o o Accion 15 bsf PORTB, 6 goto Terminar ejecutar ; E j e c u t a a c c i n o n16 ( P u e r t o o Accion 16 bsf PORTB, 6

s eri a l 1) ; pone a 1 e l pin A d el demultiplexor

s eri a l 1) ; pone a 1 e l pin A d el demultiplexor

s eri a l 1) ; pone a 1 e l pin A d el demultiplexor

s eri a l 1) ; pone a 1 e l pin A d el demultiplexor

s eri a l 1) ; pone a 1 e l pin A d el demultiplexor

s eri a l 1) ; pone a 1 e l pin A d el demultiplexor

s eri a l 1) ; pone a 1 e l pin A d el demultiplexor

s eri a l 1) ; pone a 1 e l pin A d el demultiplexor

s eri a l 1) ; pone a 1 e l pin A d el demultiplexor

se ri al 1) ; pone a 1 e l pin A d el demultiplexor

se ri al 1) ; pone a 1 e l pin A d el demultiplexor

se ri al 1) ; pone a 1 e l pin A d el demultiplexor

se ri al 1) ; pone a 1 e l pin A d el demultiplexor

se ri al 1) ; pone a 1 e l pin A d el demultiplexor

se ri al 1) ; pone a 1 e l pin A d el demultiplexor

se ri al 1) ; pone a 1 e l pin A d el demultiplexor

177

ANEXO C. CODIGOS FUENTES


727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 goto Terminar ejecutar se ri al 2) ; pone a 1 e l pin B d el demultiplexor

; E j e c u t a a c c i n o n17 ( P u e r t o o Accion 17 bsf PORTB, 5 goto Terminar ejecutar ; E j e c u t a a c c i n o n18 ( P u e r t o o Accion 18 bsf PORTB, 5 goto Terminar ejecutar ; E j e c u t a a c c i n o n19 ( P u e r t o o Accion 19 bsf PORTB, 5 goto Terminar ejecutar ; E j e c u t a a c c i n o n20 ( P u e r t o o Accion 20 bsf PORTB, 5 goto Terminar ejecutar ; E j e c u t a a c c i n o n21 ( P u e r t o o Accion 21 bsf PORTB, 5 goto Terminar ejecutar ; E j e c u t a a c c i n o n22 ( P u e r t o o Accion 22 bsf PORTB, 5 goto Terminar ejecutar ; E j e c u t a a c c i n o n23 ( P u e r t o o Accion 23 bsf PORTB, 5 goto Terminar ejecutar ; E j e c u t a a c c i n o n24 ( P u e r t o o Accion 24 bsf PORTB, 5 goto Terminar ejecutar ; E j e c u t a a c c i n o n25 ( P u e r t o o Accion 25 bsf PORTB, 5 goto Terminar ejecutar ; E j e c u t a a c c i n o n26 ( P u e r t o o Accion 26 bsf PORTB, 5 goto Terminar ejecutar ; E j e c u t a a c c i n o n27 ( P u e r t o o Accion 27 bsf PORTB, 5 goto Terminar ejecutar ; E j e c u t a a c c i n o n28 ( P u e r t o o Accion 28 bsf PORTB, 5 goto Terminar ejecutar ; E j e c u t a a c c i n o n29 ( P u e r t o o Accion 29 bsf PORTB, 5 goto Terminar ejecutar ; E j e c u t a a c c i n o n30 ( P u e r t o o Accion 30 bsf PORTB, 5 goto Terminar ejecutar ; E j e c u t a a c c i n o n31 ( P u e r t o o Accion 31 bsf PORTB, 5 goto Terminar ejecutar ; E j e c u t a a c c i n o n32 ( P u e r t o o Accion 32 bsf PORTB, 5 goto Terminar ejecutar

se ri al 2) ; pone a 1 e l pin B d el demultiplexor

se ri al 2) ; pone a 1 e l pin B d el demultiplexor

se ri al 2) ; pone a 1 e l pin B d el demultiplexor

se ri al 2) ; pone a 1 e l pin B d el demultiplexor

se ri al 2) ; pone a 1 e l pin B d el demultiplexor

se ri al 2) ; pone a 1 e l pin B d el demultiplexor

se ri al 2) ; pone a 1 e l pin B d el demultiplexor

se ri al 2) ; pone a 1 e l pin B d el demultiplexor

se ri al 2) ; pone a 1 e l pin B d el demultiplexor

se ri al 2) ; pone a 1 e l pin B d el demultiplexor

se ri al 2) ; pone a 1 e l pin B d el demultiplexor

se ri al 2) ; pone a 1 e l pin B d el demultiplexor

se ri al 2) ; pone a 1 e l pin B d el demultiplexor

se ri al 2) ; pone a 1 e l pin B d el demultiplexor

se ri al 2) ; pone a 1 e l pin B d el demultiplexor

; ; INICIALIZACION DE LA EEPROM ; ORG DE 0 x2100 0 x00 , 0 x01 , 0 x02 , 0 x03

178

ANEXO C. CODIGOS FUENTES


815 816

END

; Fi n d e l programa

C.3.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

Cdigo ModIR.asm o

; ; ; O MDULO EXTERIOR IR ; ; ; ; ; ; ALAN COHN ( 1 3 7 0 3 3 ) ROSSANA MORALES ( 6 7 7 5 6 ) ; ; UNIVERSIDAD ORT URUGUAY ; ; NAO 2 0 0 7 ; ; ; list p=16 f 628A #i n c l u d e <p 16F628A . i n c > errorlevel 302 ; ; ; l i s t d i r e c t i v e to d e f i n e p r oc e ss o r processor s p e c i f i c variable d ef i ni t io n s suppress m essage 3 0 2 fr om list file WDT OFF &

CONFIG CP OFF & DATA CP OFF & LVP OFF & PWRTE ON & INTOSC OSC NOCLKOUT ; VARIABLE DEFINITIONS EQU w temp s t a t u s temp EQU veces EQU 0 x 21 en c 1 EQU 0 x 22 en c 2 EQU 0 x 23 powera EQU 0x 24 powerb EQU 0x 25 openclosea EQU 0x 26 opencloseb EQU 0x 27 playpausea EQU 0x 28 playpauseb EQU 0x 29 stopa EQU 0 x2A stopb EQU 0 x2B trackmasa EQU 0x 2C t r ackm asb EQU 0x 2D trackmenosa EQU 0x 2E t r ackm en osb EQU 0x 2F IR arribaa EQU 0x 30 arribab EQU 0x 31 abajoa EQU 0x 32 abajob EQU 0x 33 derechaa EQU 0 x 34 derechab EQU 0 x 35 izqa EQU 0 x 36 izqb EQU 0 x 37 entera EQU 0x 38 enterb EQU 0x 39 menua EQU 0 x3A menub EQU 0 x3B cleara EQU 0x 3C clearb EQU 0x 3D zooma EQU 0 x3E zoomb EQU 0 x3F contador aux dato r s 232 p or l a UART f l a g r s 232 address exteriores a d d r e s s d ec address uni address d i r e c c i o n r s 2321 que l l e g a d i r e c c i o n r s 2322 que l l e g a i n t e n t o r s 232 llega comando r s 232 p ar am e t r o r s 2321 que l l e g a p ar am e t r o r s 2322 que l l e g a p a r i d a d r s 232 paridad calculada calculada del contador e r r o r e s mismo m en saje EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU m en saje EQU 0x 40 0x 41 0x 42 0x 43 0x 44 0x 45 0x 46 0 x 47 0 x 48 0 x 49 0 x4A 0 x4B 0 x4C 0 x4D 0 x4E 0 x4F

BOREN OFF &

MCLRE ON &

0 x 71 ; v a r i a b l e u sed f o r c o n t e x t s a v i n g 0x 72 ; v a r i a b l e u sed f o r c o n t e x t s a v i n g ; v a r i a b l e que c u e n t a i n t e r r u p c i o n e s d e l TMR0 ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l e n c a b e z a d o IR ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l e n c a b e z a d o IR ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l power IR ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l power IR ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l o p e n c l o s e IR ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l o p e n c l o s e IR ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l p l a y p a u s e IR ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l p l a y p a u s e IR ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l s t o p IR ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l s t o p IR ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l t ackm as IR ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l t r a c k m a s IR ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l t r a c k m e n o s IR ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l t r a c k m e n o s ; v a r i a b l e que gu ar d a ; v a r i a b l e que gu ar d a ; v a r i a b l e que gu ar d a ; v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a e l v a r i a b l e que gu ar d a e l v a r i a b l e que gu ar d a e l v a r i a b l e que gu ar d a e l ; v a r i a b l e que gu ar d a ; v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a e l v a r i a b l e que gu ar d a e l ; v a r i a b l e que gu ar d a ; v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a e l v a r i a b l e que gu ar d a e l ; ; ; ; ; ; ; e l p r i m e r b y t e d e l a r r i b a IR e l segu n d o b y t e d e l a r r i b a IR e l p r i m e r b y t e d e l a b a j o IR e l segu n d o b y t e d e l a b a j o IR p r i m e r b y t e d e l d e r e c h a IR segu n d o b y t e d e l d e r e c h a IR p r i m e r b y t e d e l i z q IR segu n d o b y t e d e l i z q IR e l p r i m e r b y t e d e l e n t e r IR e l segu n d o b y t e d e l e n t e r IR p r i m e r b y t e d e l menu IR segu n d o b y t e d e l menu IR e l p r i m e r b y t e d e l c l e a r IR e l segu n d o b y t e d e l c l e a r IR p r i m e r b y t e d e l zoom IR segu n d o b y t e d e l zoom IR

; ; ; ;

; ;

; ;

v a r i a b l e que c u e n t a l a s v e c e s que s e r o t a un b y t e v a r i a b l e que gu ar d a e l b y t e IR a t r a s m i t i r v a r i a b l e u sad a p a r a g u a r d a r e l d a t o r s 2 3 2 r e c i b i d o v a r i a b l e que a v i s a cuando s e p r o d u c e una i n t de Rx v a r i a b l e que gu ar d a l a d i r e c c i n de l o s mdulos o o v a r i a b l e que gu ar d a en ASCII l a s v a r i a b l e que gu ar d a en ASCII l a s ; ; ; ; ; ; ; ; ; v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que c u e n t a el el la el el el el el los decenas d e l address unidades d e l address address

p r i m e r b y t e de l a segu n d o b y t e de l a el

b y t e de i n t e n t o que

b y t e d e l comando que l l e g a p r i m e r b y t e d e l p ar m et r o a p r i m e r b y t e d e l p ar m et r o a b y t e de p a r i d a d que v a l o r de l a p a r i d a d llega

e r r o r e s de p a r i d a d de un

179

ANEXO C. CODIGOS FUENTES


68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 t i p o modulo EQU numero s e r i e EQU o mdulo e x t e r i o r 0x 50 0 x 51 ; v a r i a b l e que gu ar d a e l ; v a r i a b l e que gu ar d a t i p o d e l mdulo e x t e r i o r o e l u nmero de s e r i e p r o p i o

del

; ; ; COMIENZO DEL PROGRAMA ; ORG goto ORG 0x 000 main 0x 004 ; processor reset ; go t o b e g i n n i n g ; interrupt vector vector o f program location

; ; MANEJADOR DE INTERRUPCIONES ; ; save o f f c u r r e n t W r e g i s t e r c o n t e n t s movwf w temp movf STATUS, w ; move s t a t u s r e g i s t e r i n t o W r e g i s t e r ; s a v e o f f c o n t e n t s o f STATUS r e g i s t e r movwf s t a t u s temp btfsc INTCON, 2 goto I s r T0 b t f s c PIR 1 , RCIF goto I s r T0 Fi n isr movf s t a t u s temp , w movwf STATUS swap f w temp , f swap f w temp , w retfie ; TMR0 i n t e r r u m p i o ? ; RX i n t e r r u m p i o ?

; ; ; ;

r e t r i e v e cop y o f STATUS r e g i s t e r r e s t o r e p r e i s r STATUS r e g i s t e r c o n t e n t s r e s t o r e p r e i s r W r e g i s t e r r e t u r n fr om i n t e r r u p t contents

; ISR t i m e r0 I s r T0 movlw d205 movwf TMR0 bcf INTCON, 2 incf veces , 1 goto Fi n i s r

; se ;

; cuenta 50 microseg s e e s c r i b e e l r e g i s t r o TMR0 b o r r a e l TOIF incrementa v a r i a b l e veces

; ISR o r e c e p c i n USART I s r T0 ; s e t e a e l b i t 0 en 1 bsf f l a g r s 232 ,0 movf RCREG,W ; l e e l o que l l e g a y l o gu ar d a en W movwf d a t o r s 232 goto Fi n i s r ; ; PROGRAMA PRINCIPAL ; main ; I n i c i a l i z a c i o n movlw 0 x 21 movwf FSR otro clrf INDF incf FSR, 1 movlw 0 x 51 x o r w f FSR, 0 b t f s s STATUS, 2 goto otro de v a r i a b l e s ; e s c r i b e 2 1 h en W

borra

la direccin o

de memoria que e s t en INDF a

; e s c r i b e 5 2 h en W ; compara que s e hayan b o r r a d o

todas

las

d i r e c c i o n e s de memoria

; L e c t u r a de l a EEPROM y gu ar d ad o en l a RAM movlw 0 x 04 ; e s c r i b e un 4 h en W movwf aux movlw 0x 22 ; e s c r i b e un 2 2 h en W movwf FSR otros movf aux , 0 ; mueve e l c o n t e n i d o de aux a W call eeprom r d movwf INDF incf FSR, 1 incf aux , 1 movlw 0 x 40 ; comprueba que s e hayan gu ar d ad o t o d o s x o r w f FSR, 0 b t f s s STATUS, 2 goto otros ; S e t e o s Seteos c o r r e s p o n d i e n t e s

los

datos

; S e t e o d e l modulo P M W clrf CCP1CON ; s e l i m p i a e l r e g i s t r o CCP1CON bsf STATUS, RP0 ; i r a l b an co 1 movlw d 26 ; s e t e a d e l p e r i o d o d e l P M a 3 8 KHz W

180

ANEXO C. CODIGOS FUENTES


155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 movwf bcf bcf movlw movwf movlw movwf PR2 TRISB , 3 STATUS, RP0 0xD CCPR1L b 00000100 T2CON ; s e e s c r i b e e l PR2 ; s e h a c e e l p i n CCP1 de s a l i d a l i m p i a n d o ; i r a l b an co 0 s e t e a d e l c i c l o de t r a b a j o d e l P M a l 5 0 % W ; s e e s c r i b e e l CCPR1L ; s e t e o s d e l TMR2 ON y l a p r e e s c a l a 1 : 1 s e e s c r i b e e l r e g i s t r o T2CON

e l TRISB<3>

; S e t e o d e l p e r i f e r i c o RS232 bsf STATUS, RP0 ; i r a l b an co 1 movlw d 2 5 ; 9 6 0 0 b a u d i o s ( 4MHz, BRGH=1) movwf SPBRG movlw b 0 0 1 0 0 1 0 0 movwf TXSTA bcf STATUS, RP0 ; i r a l b an co 0 movlw b 1 0 0 1 0 0 0 0 ; SPEN= 1 , CREN=1 movwf RCSTA ; h a b i l i t a e l puerto s e r i e y la recepcion continua movf RCREG,W ; l e e 2 v e c e s e l RCREG p or s i h a b i a b a s u r a movf RCREG,W ; S e t e o s de p u e r t o s de I /O movlw 0x 2F ; pone un 1 0 1 1 1 1 en W bsf STATUS, RP0 ; i r a l b an co 1 movwf TRISA ; RA0RA1RA2RA3RA5 p u e r t o s de e n t r a d a , RA4RA6RA7 p u e r t o s de s a l i d a bsf TRISB , 1 ; s e t e a RB1/Rx como p i n de e n t r a d a bcf STATUS, RP0 ; i r a l b an co 0 movlw 0 x7 ; ap aga c o m p a r a d o r e s movwf CMCON ; D e c l a r a c i n d e l o movlw 0 x 30 movwf t i p o modulo movlw 0 x 41 movwf numero s e r i e t i p o de mdulo e x t e r i o r y u nmero de o ; mueve un 3 0 h ( 0 ) a W ; mueve W a t i p o modulo ; pone un 4 1 h (A) en W ; mueve W a numero s e r i e propio s e r i e

; V e r i f i c a c i n d e l a d d r e s s o R ab b i t call V e r i f i c a r address

d e l mdulo e x t e r i o r y en vo de i d e n t i f i c a c i n o o

al

; H a b i l i t a c i o n de i n t e r r u p c i o n e s bsf INTCON, 7 ; h a b i l i t a l a s i n t e r r u p c i o n e s GIE bsf INTCON, PEIE ; ha bili ta interrupcion p e ri fe r i c a bsf STATUS, RP0 ; i r a l b an co 1 bsf PIE 1 , RCIE ; h a b i l i t a i n t e r r u p c i o n de r e c e p c i o n de USART bcf STATUS, RP0 ; i r a l b an co 0 Loop p r i n c i p a l b t f s c f l a g r s 232 ,0 call Recibir goto Loop p r i n c i p a l

; Rx i n t e r r u m p i o ? ; loop forever

; ; SUBRUTINAS PARA LA ORECEPCIN Y PROCESAMIENTO DEL MENSAJE ; ; S u b r u t i n a que r e c i b e e l m en saje y gu ar d a s u s p a r t e s en l o s campos Recibir clrf f l a g r s 232 ; b o r r a r f l a g r s 232 movlw 0xA ; mueve un Ah a W ( f i n de l n e a ) xorwf dato r s 232 ,0 ; l o compara con e l d a t o r s 232 b t f s c STATUS, 2 goto Procesar ; P r o c e s a r l a trama r e c i b i d a movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto 0 x 00 contador , 0 STATUS, 2 es di r e c c io n 0 x 01 contador , 0 STATUS, 2 es di r e c c io n 0 x 02 contador , 0 STATUS, 2 es intento 0 x 03 contador , 0 STATUS, 2 e s comando 0 x 04 contador , 0 STATUS, 2 e s p ar am e t r o 0 x 05 contador , 0 STATUS, 2 e s p ar am e t r o ; mueve un 0 h a W ; l o compara con l a 1 ; mueve un 1 h a W ; l o compara con l a 2 ; mueve un 2 h a W ; l o compara con l a variable contador variable contador correspondientes

variable

contador

; mueve un 3 h a W ; l o compara con l a

variable

contador

; mueve un 4 h a W ; l o compara con l a 1 ; mueve un 5 h a W ; l o compara con l a 2

variable

contador

variable

contador

181

ANEXO C. CODIGOS FUENTES


241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328

; Guarda e l s p t i m o b y t e que l l e g a en l a v a r i a b l e p a r i d a d r s 232 e ; mueve d a t o r s 2 3 2 a W movf dato r s 232 ,0 ; mueve W a p a r i d a d r s 232 movwf p a r i d a d r s 232 clrf contador ; l i m p i a v a r i a b l e contador return ; Guarda e l p r i m e r b y t e que es d ir ec ci on 1 movf dato r s 232 ,0 movwf d i r e c c i o n r s 2321 incf contador , 1 return llega en l a variable direccion r s 2321

; mueve d a t o r s 2 3 2 a W ; mueve W a d i r e c c i o n r s 2321 ; incrementa l a v a r i a b l e contador

; Guarda e l segu n d o b y t e que l l e g a en l a v a r i a b l e d i r e c c i o n r s 2322 es d ir ec ci on 2 movf dato r s 232 ,0 ; mueve d a t o r s 2 3 2 a W ; mueve W a d i r e c c i o n r s 2322 movwf d i r e c c i o n r s 2322 incf contador , 1 ; incrementa l a v a r i a b l e contador return ; Guarda e l t e r c e r es intento movf dato r s 232 ,0 movwf i n t e n t o r s 232 incf contador , 1 return ; Guarda e l c u a r t o e s comando movf dato r s 232 ,0 movwf comando r s 232 incf contador , 1 return b y t e que llega en l a variable intento r s 232

; mueve d a t o r s 2 3 2 a W ; mueve W a i n t e n t o ; incrementa l a v a r i a b l e

contador

b y t e que

llega

en l a

v a r i a b l e comando r s 232

; mueve d a t o r s 2 3 2 a W ; mueve W a comando r s 232 ; incrementa l a v a r i a b l e contador

; Guarda e l q u i n t o b y t e que e s p ar am e t r o 1 movf dato r s 232 ,0 movwf p ar am et r o r s 2321 incf contador , 1 return ; Guarda e l s e x t o b y t e que e s p ar am e t r o 2 movf dato r s 232 ,0 movwf p ar am et r o r s 2322 incf contador , 1 return ; Se f i j a s i e l m en saje Procesar bcf INTCON, PEIE clrf contador movf a d d r e s s dec , 0 xorwf d i r e c c i o n r s 2321 ,0 b t f s s STATUS, 2 return movf ad d r ess uni , 0 xorwf d i r e c c i o n r s 2322 ,0 b t f s s STATUS, 2 return

llega

en l a

variable

p ar am e t r o

r s 2321

; mueve d a t o r s 2 3 2 a W ; mueve W a p ar am et r o r s 2321 ; incrementa l a v a r i a b l e contador

llega

en l a

variable

p ar am et r o

r s 2322

; mueve d a t o r s 2 3 2 a W ; mueve W a p ar am et r o r s 2322 ; incrementa l a v a r i a b l e contador

e s p a r a l comparando d i r e c c i o n e s e ; deshabilita interrupcion p e ri f e r i c a l i m p i a v a r i a b l e contador ; mueve a d d r e s s d ec a W ; l o compara con l a v a r i a b l e d i r e c c i o n

r s 2321

; mueve a d d r e s s u n i a W ; l o compara con l a v a r i a b l e

direccion

r s 2322

; Se f i j a s i e l comando e s c o n o c i d o Bu scar comando movlw 0 x 41 ; mueve un 4 2 h ( A) x o r w f comando r s 2 3 2 , 0 ; l o compara b t f s c STATUS, 2 goto V e r i f i c a r paridad movlw 0 x 52 ; mueve un 5 2 h ( R) x o r w f comando r s 2 3 2 , 0 ; l o compara b t f s c STATUS, 2 goto V e r i f i c a r paridad movlw 0 x 53 ; mueve un 5 3 h ( S ) x o r w f comando r s 2 3 2 , 0 ; l o compara b t f s c STATUS, 2 goto V e r i f i c a r paridad movlw 0 x 55 ; mueve un 5 5 h ( U) ; l o compara x o r w f comando r s 2 3 2 , 0 b t f s c STATUS, 2 goto V e r i f i c a r paridad

a W con l a

v a r i a b l e comando r s 232

a W con l a

v a r i a b l e comando r s 232

a W con l a

v a r i a b l e comando r s 232

a W con l a

v a r i a b l e comando r s 232

; V e r i f i c a s i e l campo i n t e n t o e s t d e n t r o de l o s p a r m e t r o s a a Desconocido e r r o r pari dad movlw 0 x 32 ; mover un 0 x 3 2 ( 2 ) a W su b wf i n t e n t o r s 2 3 2 , 0 ; r e s t a r W a i n t e n t o r s 232 b t f s c STATUS, 1 ; v e r i f i c a r s i el resultado es p os it i v o goto E n cen d er al ar m a clrf d i r e c c i o n r s 2321 ; l i m p i a v a r i a b l e d i r e c c i o n r s 2321

182

ANEXO C. CODIGOS FUENTES


329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 clrf d i r e c c i o n r s 2322 clrf i n t e n t o r s 232 clrf comando r s 232 clrf p ar am e t r o r s 2321 clrf p ar am e t r o r s 2322 clrf p a r i d a d r s 232 bsf INTCON, PEIE return ; ; ; ; ; ; l i m p i a v a r i a b l e d i r e c c i o n r s 2322 l i m p i a v a r i a b l e i n t e n t o r s 232 l i m p i a v a r i a b l e comando r s 232 l i m p i a v a r i a b l e p ar am et r o r s 2321 l i m p i a v a r i a b l e p ar am et r o r s 2322 l i m p i a v a r i a b l e p a r i d a d r s 232 ; habilita ointerrupcin p eri f ri ca e

; E n c i e n d e l a al ar m a de v i o l a c i n de l a r e g l a de l o s 3 i n t e n t o s ( l e d ) o E n cen d er al ar m a bsf PORTA, 4 ; s e t a r RA4 en e s t a d o a l t o ; l i m p i a v a r i a b l e d i r e c c i o n r s 2321 clrf d i r e c c i o n r s 2321 clrf d i r e c c i o n r s 2322 ; l i m p i a v a r i a b l e d i r e c c i o n r s 2322 ; l i m p i a v a r i a b l e i n t e n t o r s 232 clrf i n t e n t o r s 232 clrf comando r s 232 ; l i m p i a v a r i a b l e comando r s 232 clrf p ar am e t r o r s 2321 ; l i m p i a v a r i a b l e p ar am et r o r s 2321 ; l i m p i a v a r i a b l e p ar am et r o r s 2322 clrf p ar am e t r o r s 2322 clrf p a r i d a d r s 232 ; l i m p i a v a r i a b l e p a r i d a d r s 232 bsf INTCON, PEIE ; habilita ointerrupcin p eri f ri ca e return ; C l c u l o de p a r i d a d a V e r i f i c a r paridad movf d i r e c c i o n r s 2321 ,0 ; mueve d i r e c c i o n r s 2 3 2 1 a W ; c a l c u l a l a p a r i d a d e n t r e W y d i r e c c i o n r s 23222 xorwf d i r e c c i o n r s 2322 ,0 xorwf i n t e n t o r s 232 ,0 ; c a l c u l a l a p a r i d a d e n t r e W e i n t e n t o r s 232 ; c a l c u l a l a p a r i d a d e n t r e W y comando r s 232 x o r w f comando r s 2 3 2 , 0 ; c a l c u l a l a p a r i d a d e n t r e W y p ar am et r o r s 2321 x o r w f p ar am et r o r s 2 3 2 1 , 0 x o r w f p ar am et r o r s 2 3 2 2 , 0 ; c a l c u l a l a p a r i d a d e n t r e W y p ar am et r o r s 2322 ; gu ar d a l a p a r i d a d c a l c u l a d a en l a v a r i a b l e p a r i d a d movwf p a r i d a d c a l c u l a d a calculada xorwf p ari d ad r s 232 ,0 ; compara p a r i d a d c a l c u l a d a con l a p a r i d a d que e n v i o el rabbit b t f s c STATUS, 2 goto Decidir respuesta goto Desconocido e r r o r p ari d ad ; D i s t i n g u e e l t i p o de r e s p u e s t a a e n v i a r u s e g n e l comando que a r r i b o Decidir respuesta bcf PORTA, 4 ; s e t e a r RA4 en e s t a d o b a j o movlw 0 x 41 ; mueve un 4 2 h ( A) a W ; l o compara con l a v a r i a b l e comando r s 232 x o r w f comando r s 2 3 2 , 0 b t f s c STATUS, 2 goto Definir accion movlw 0 x 52 ; mueve un 5 2 h ( R) a W ; l o compara con l a v a r i a b l e comando r s 232 x o r w f comando r s 2 3 2 , 0 b t f s c STATUS, 2 goto R e s e t e a r modulo movlw 0 x 55 ; mueve un 5 5 h ( U) a W x o r w f comando r s 2 3 2 , 0 ; l o compara con l a v a r i a b l e comando r s 232 b t f s c STATUS, 2 goto Enviar p r e s e n c i a ; H a b i l i t a l a o r e c e p c i n Fi n d e c i d i r r e s p u e s t a clrf d i r e c c i o n r s 2321 clrf d i r e c c i o n r s 2322 clrf i n t e n t o r s 232 clrf comando r s 232 clrf p ar am e t r o r s 2321 clrf p ar am e t r o r s 2322 clrf p a r i d a d r s 232 return d e l MAX4 8 5 y v u e l v e a e s p e r a r un m en saje ; ; ; ; ; ; ; limpia limpia limpia limpia limpia limpia limpia v a r i a b l e d i r e c c i o n r s 2321 v a r i a b l e d i r e c c i o n r s 2322 v a r i a b l e i n t e n t o r s 232 v a r i a b l e comando r s 232 v a r i a b l e p ar am et r o r s 2321 v a r i a b l e p ar am et r o r s 2322 v a r i a b l e p a r i d a d r s 232 d e l R ab b i t

; Enva l a r e s p u e s t a y r e s e t e a R e s e t e a r modulo call Enviar r e s p u e s t a call Reseteo goto Fi n d e c i d i r r e s p u e s t a ; E n vi a l a r e s p u e s t a y d e f i n e Definir accion call Enviar r e s p u e s t a call Ejecutar accion goto Fi n d e c i d i r r e s p u e s t a

e l mdulo e x t e r i o r o

la accin o

correspondiente

; ; SUBRUTINAS PARA EL IENVO DE NOTIFICACIONES ; ; S u b r u t i n a que e n v i a un b y t e p or l a USART E n vi o movwf TXREG ; c a r a c t e r en W bsf STATUS, RP0 ; i r a l b an co 1 testeo btfss TXSTA,TRMT ; e s p e r a h a s t a c o m p l e t a r Tx , goto testeo

testea (1)

183

ANEXO C. CODIGOS FUENTES


415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 bcf STATUS, RP0 return ; ir a l b an co 0

; S u b r u t i n a que e n v i a l a n o t i f i c a c i n de p r e s e n c i a a l R ab b i t o Enviar p r e s e n c i a bsf PORTA, 7 ; p o n e r en 1 e l MAX4 8 5 p a r a h a b i l i t a r l a t r a n s m i s i n ( o p i n DE) movlw P ; mueve P a W call E n vi o ; en va e l i d e n t i f i c a d o r de p r e s e n c i a movf t i p o modulo , 0 ; mueve t i p o modulo a W call E n vi o ; en va e l t i p o modulo a l r a b b i t ; mueve numero s e r i e a W movf numero s e r i e , 0 call E n vi o ; en va e l numero s e r i e a l r a b b i t movlw 0xA ; mueve e l c a r a c t e r ASCII 1 0 a W call E n vi o ; en va e l f i n de l n e a a l r a b b i t bcf PORTA, 7 ; p o n e r en 0 e l MAX4 8 5 p a r a h a b i l i t a r l a r e c e p c i n ( o p i n DE) bsf INTCON, PEIE ; habilita ointerrupcin p eri f ri ca e goto Fi n d e c i d i r r e s p u e s t a ; S u b r u t i n a que e n v i a Enviar r e s p u e s t a bsf PORTA, 7 p i n DE) movlw R call E n vi o movlw 0xA call E n vi o bcf PORTA, 7 p i n DE) return la notificacin o de r e s p u e s t a al R ab b i t habilitar la transmisin ( o

; p o n e r en 1 e l MAX4 8 5 p a r a

; mueve R a W ; en va e l i d e n t i f i c a d o r de r e s p u e s t a ; mueve e l c a r a c t e r ASCII 1 0 a W ; en va e l f i n de l n e a a l r a b b i t ; p o n e r en 0 e l MAX4 8 5 p a r a h a b i l i t a r

la recepcin o

; ; SUBRUTINAS QUE VERIFICAN EL ADDRESS DEL OMDULO ; ; S u b r u t i n a que v e r i f i c a V e r i f i c a r address movlw 0 x 30 addwf a d d r e s s dec , 1 addwf a d d r e s s u n i , 1 movf PORTA, 0 andlw 0xF movwf a d d r e s s b t f s c address , 3 goto f i j a r s e resto seguir verificando addwf a d d r e s s u n i , 1 return f i j a r s e resto movlw 0 x 08 xorwf address , 0 b t f s c STATUS, 2 goto seguir verificando movlw 0 x 09 xorwf address , 0 b t f s c STATUS, 2 goto seguir verificando movlw 0 x0A xorwf address , 0 b t f s c STATUS, 2 call address 10 movlw 0 x0B xorwf address , 0 b t f s c STATUS, 2 call address 11 movlw 0 x0C xorwf address , 0 b t f s c STATUS, 2 call address 12 movlw 0 x0D xorwf address , 0 b t f s c STATUS, 2 call address 13 movlw 0 x0E xorwf address , 0 b t f s c STATUS, 2 call address 14 movlw 0 x0F xorwf address , 0 b t f s c STATUS, 2 call address 15 return ; S u b r u t i n a que address 10 el address d e l mdulo e x t e r i o r o

; ; ; ; ; ;

suma 3 0 h a a d d r e s s d ec p a r a t r a n s f o r m a r l o en ASCII suma 3 0 h a a d d r e s s u n i p a r a t r a n s f o r m a r l o en ASCII s e f i j a e s t a d o de PORTA l i m p i a l o que no e s n e c e s a r i o mueve e l e s t a d o de l o s p r i m e r o s 4 p u e r t o s a a d d r e s s b u s c a s i e l a d d r e s s e s t e n t r e l o s p r i m e r o s 7 u nmeros a

; suma e l

v a l o r de W a l a s

unidades

e s c r i b e un 8 en W ; l o compara con a d d r e s s

e s c r i b e un 9 en W ; l o compara con a d d r e s s

e s c r i b e un 1 0 en W ; l o compara con a d d r e s s

e s c r i b e un 1 1 en W ; l o compara con a d d r e s s

e s c r i b e un 1 2 en W ; l o compara con a d d r e s s

e s c r i b e un 1 3 en W ; l o compara con a d d r e s s

e s c r i b e un 1 4 en W ; l o compara con a d d r e s s

e s c r i b e un 1 5 en W ; l o compara con a d d r e s s

e s c r i b e un 1 0 en u nmeros ASCII

184

ANEXO C. CODIGOS FUENTES


499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 incf address return dec , 1 ; incrementa en 1 a d d r e s s d ec

; S u b r u t i n a que e s c r i b e un 1 1 en u nmeros ASCII address 11 ; i n c r e m e n t a en 1 a d d r e s s incf a d d r e s s dec , 1 incf ad d r ess uni , 1 ; i n c r e m e n t a en 1 a d d r e s s return

d ec uni

; S u b r u t i n a que e s c r i b e un 1 2 en u nmeros ASCII address 12 ; i n c r e m e n t a en 1 a d d r e s s d ec incf a d d r e s s dec , 1 movlw 0 x 02 ; suma e l v a l o r de W a l a s u n i d a d e s addwf a d d r e s s u n i , 1 return ; S u b r u t i n a que e s c r i b e un 1 3 en u nmeros ASCII address 13 incf a d d r e s s dec , 1 ; i n c r e m e n t a en 1 a d d r e s s d ec movlw 0 x 03 ; suma e l v a l o r de W a l a s u n i d a d e s addwf a d d r e s s u n i , 1 return ; S u b r u t i n a que e s c r i b e un 1 4 en u nmeros ASCII address 14 ; i n c r e m e n t a en 1 a d d r e s s d ec incf a d d r e s s dec , 1 movlw 0 x 04 addwf a d d r e s s u n i , 1 ; suma e l v a l o r de W a l a s u n i d a d e s return ; S u b r u t i n a que e s c r i b e un 1 5 en u nmeros ASCII address 15 incf a d d r e s s dec , 1 ; i n c r e m e n t a en 1 a d d r e s s d ec movlw 0 x 05 ; suma e l v a l o r de W a l a s u n i d a d e s addwf a d d r e s s u n i , 1 return ; ; SUBRUTINAS CONCURRENTES CON LA OACCIN Y RESETEO DEL OMDULO ; ; S u b r u t i n a que r e s e t a Reseteo bsf PORTA, 6 return e l mdulo e x t e r i o r o ; s e t e a RA6 en 1

; S u b r u t i n a que e j e c u t a l a a c c i n d e l o mdulo e x t e r i o r o Ejecutar accion movlw 0 x 30 ; mueve un 3 0 h ( 0 ) a W ; l o compara con l a v a r i a b l e x o r w f p ar am et r o r s 2 3 2 1 , 0 b t f s c STATUS, 2 goto com p ar ar s i g u i e n t e 0 movlw 0 x 31 ; mueve un 3 1 h ( 1 ) a W x o r w f p ar am et r o r s 2 3 2 1 , 0 ; l o compara con l a v a r i a b l e b t f s c STATUS, 2 goto com p ar ar s i g u i e n t e 1 movlw 0 x 32 ; mueve un 3 2 h ( 2 ) a W ; l o compara con l a v a r i a b l e x o r w f p ar am et r o r s 2 3 2 1 , 0 b t f s c STATUS, 2 goto com p ar ar s i g u i e n t e 2 ; Compara e l segu n d o b y t e com p ar ar s i g u i e n t e 3 movlw 0 x 30 x o r w f p ar am et r o r s 2 3 2 2 , 0 b t f s c STATUS, 2 goto A cci on 3 0 movlw 0 x 31 x o r w f p ar am et r o r s 2 3 2 2 , 0 b t f s c STATUS, 2 goto A cci on 3 1 movlw 0 x 32 x o r w f p ar am et r o r s 2 3 2 2 , 0 b t f s c STATUS, 2 goto A cci on 3 2 Ter m i n ar e j e c u t a r bsf INTCON, PEIE return d e l p ar m et r o a s a b i e n d o que e l

p ar am et r o

r s 2321

p ar am et r o

r s 2321

p ar am et r o

r s 2321

p r i m e r o f u e un t r e s

; mueve un 3 0 h ( 0 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2322

; mueve un 3 1 h ( 1 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

; mueve un 3 2 h ( 2 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

habilita ointerrupcin p eri f ri ca e

; Compara e l segu n d o b y t e d e l p ar m et r o s a b i e n d o que e l p r i m e r o f u e un c e r o a com p ar ar s i g u i e n t e 0 movlw 0 x 30 ; mueve un 3 0 h ( 0 ) a W x o r w f p ar am et r o r s 2 3 2 2 , 0 ; l o compara con l a v a r i a b l e p ar am et r o r s 2322 b t f s c STATUS, 2 goto Ter m i n ar e j e c u t a r ; no e j e c u t a r n i n gu n a a c c i n o movlw 0 x 31 ; mueve un 3 1 h ( 1 ) a W x o r w f p ar am et r o r s 2 3 2 2 , 0 ; l o compara con l a v a r i a b l e p ar am et r o r s 2321

185

ANEXO C. CODIGOS FUENTES


587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto STATUS, 2 A cci on 1 0 x 32 p ar am et r o STATUS, 2 A cci on 2 0 x 33 p ar am et r o STATUS, 2 A cci on 3 0 x 34 p ar am et r o STATUS, 2 A cci on 4 0 x 35 p ar am et r o STATUS, 2 A cci on 5 0 x 36 p ar am et r o STATUS, 2 A cci on 6 0 x 37 p ar am et r o STATUS, 2 A cci on 7 0 x 38 p ar am et r o STATUS, 2 A cci on 8 0 x 39 p ar am et r o STATUS, 2 A cci on 9

r s 2322 ,0

; mueve un 3 2 h ( 2 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

r s 2322 ,0

; mueve un 3 3 h ( 3 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

r s 2322 ,0

; mueve un 3 4 h ( 4 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

r s 2322 ,0

; mueve un 3 5 h ( 5 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

r s 2322 ,0

; mueve un 3 6 h ( 6 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

r s 2322 ,0

; mueve un 3 7 h ( 7 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

r s 2322 ,0

; mueve un 3 8 h ( 8 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

r s 2322 ,0

; mueve un 3 9 h ( 9 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

; Compara e l segu n d o b y t e com p ar ar s i g u i e n t e 1 movlw 0 x 30 x o r w f p ar am et r o r s 2 3 2 2 , 0 b t f s c STATUS, 2 goto A cci on 1 0 movlw 0 x 31 x o r w f p ar am et r o r s 2 3 2 2 , 0 b t f s c STATUS, 2 goto A cci on 1 1 movlw 0 x 32 x o r w f p ar am et r o r s 2 3 2 2 , 0 b t f s c STATUS, 2 goto A cci on 1 2 movlw 0 x 33 x o r w f p ar am et r o r s 2 3 2 2 , 0 b t f s c STATUS, 2 goto A cci on 1 3 movlw 0 x 34 x o r w f p ar am et r o r s 2 3 2 2 , 0 b t f s c STATUS, 2 goto A cci on 1 4 movlw 0 x 35 x o r w f p ar am et r o r s 2 3 2 2 , 0 b t f s c STATUS, 2 goto A cci on 1 5 movlw 0 x 36 x o r w f p ar am et r o r s 2 3 2 2 , 0 b t f s c STATUS, 2 goto A cci on 1 6 movlw 0 x 37 x o r w f p ar am et r o r s 2 3 2 2 , 0 b t f s c STATUS, 2 goto A cci on 1 7 movlw 0 x 38 x o r w f p ar am et r o r s 2 3 2 2 , 0 b t f s c STATUS, 2 goto A cci on 1 8 movlw 0 x 39 x o r w f p ar am et r o r s 2 3 2 2 , 0 b t f s c STATUS, 2 goto A cci on 1 9

d e l p ar m et r o a

s a b i e n d o que e l

p r i m e r o f u e un uno

; mueve un 3 0 h ( 0 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2322

; mueve un 3 1 h ( 1 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

; mueve un 3 2 h ( 2 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

; mueve un 3 3 h ( 3 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

; mueve un 3 4 h ( 4 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

; mueve un 3 5 h ( 5 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

; mueve un 3 6 h ( 6 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

; mueve un 3 7 h ( 7 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

; mueve un 3 8 h ( 8 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

; mueve un 3 9 h ( 9 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

; Compara e l segu n d o b y t e d e l p ar m et r o s a b i e n d o que e l p r i m e r o f u e un d os a com p ar ar s i g u i e n t e 2 movlw 0 x 30 ; mueve un 3 0 h ( 0 ) a W x o r w f p ar am et r o r s 2 3 2 2 , 0 ; l o compara con l a v a r i a b l e p ar am et r o r s 2322 b t f s c STATUS, 2 goto A cci on 2 0 movlw 0 x 31 ; mueve un 3 1 h ( 1 ) a W x o r w f p ar am et r o r s 2 3 2 2 , 0 ; l o compara con l a v a r i a b l e p ar am et r o r s 2321 b t f s c STATUS, 2 goto A cci on 2 1

186

ANEXO C. CODIGOS FUENTES


675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto 0 x 32 p ar am et r o STATUS, 2 A cci on 2 2 0 x 33 p ar am et r o STATUS, 2 A cci on 2 3 0 x 34 p ar am et r o STATUS, 2 A cci on 2 4 0 x 35 p ar am et r o STATUS, 2 A cci on 2 5 0 x 36 p ar am et r o STATUS, 2 A cci on 2 6 0 x 37 p ar am et r o STATUS, 2 A cci on 2 7 0 x 38 p ar am et r o STATUS, 2 A cci on 2 8 0 x 39 p ar am et r o STATUS, 2 A cci on 2 9 ; mueve un 3 2 h ( 2 ) a W ; l o compara con l a

r s 2322 ,0

variable

p ar am et r o

r s 2321

r s 2322 ,0

; mueve un 3 3 h ( 3 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

r s 2322 ,0

; mueve un 3 4 h ( 4 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

r s 2322 ,0

; mueve un 3 5 h ( 5 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

r s 2322 ,0

; mueve un 3 6 h ( 6 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

r s 2322 ,0

; mueve un 3 7 h ( 7 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

r s 2322 ,0

; mueve un 3 8 h ( 8 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

r s 2322 ,0

; mueve un 3 9 h ( 9 ) a W ; l o compara con l a

variable

p ar am et r o

r s 2321

; E j e c u t a a c c i n o n 1 ( oN1 ) o A cci on 1 call Setear timer0 bsf INTCON, 5 ; bcf goto INTCON, 5 Ter m i n ar e j e c u t a r

habilita ;

la

interrupcion

d e l TMR0 d e l TMR0

deshabilita

la interrupcin o

; E j e c u t a a c c i n o n 2 ( oN2 ) o A cci on 2 call Setear timer0 bsf INTCON, 5 ; bcf goto INTCON, 5 Ter m i n ar e j e c u t a r

habilita ;

la

interrupcion

d e l TMR0 d e l TMR0

deshabilita

la interrupcin o

; E j e c u t a a c c i n o n 3 ( oN3 ) o A cci on 3 call Setear timer0 bsf INTCON, 5 ; bcf goto INTCON, 5 Ter m i n ar e j e c u t a r

habilita ;

la

interrupcion

d e l TMR0 d e l TMR0

deshabilita

la interrupcin o

; E j e c u t a a c c i n o n 4 ( oN4 ) o A cci on 4 call Setear timer0 bsf INTCON, 5 ; bcf goto INTCON, 5 Ter m i n ar e j e c u t a r

habilita ;

la

interrupcion

d e l TMR0 d e l TMR0

deshabilita

la interrupcin o

; E j e c u t a a c c i n o n 5 ( oN5 ) o A cci on 5 call Setear timer0 bsf INTCON, 5 ; bcf goto INTCON, 5 Ter m i n ar e j e c u t a r

habilita ;

la

interrupcion

d e l TMR0 d e l TMR0

deshabilita

la interrupcin o

; E j e c u t a a c c i n o n 6 ( oN6 ) o A cci on 6 call Setear timer0 bsf INTCON, 5 ; bcf goto INTCON, 5 Ter m i n ar e j e c u t a r

habilita ;

la

interrupcion

d e l TMR0 d e l TMR0

deshabilita

la interrupcin o

; E j e c u t a a c c i n o n 7 ( oN7 ) o A cci on 7 call Setear timer0 bsf INTCON, 5 ; bcf goto INTCON, 5 Ter m i n ar e j e c u t a r

habilita ;

la

interrupcion

d e l TMR0 d e l TMR0

deshabilita

la interrupcin o

187

ANEXO C. CODIGOS FUENTES


763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850

; E j e c u t a a c c i n o n 8 ( oN8 ) o A cci on 8 call Setear timer0 bsf INTCON, 5 ; bcf goto INTCON, 5 Ter m i n ar e j e c u t a r

habilita ;

la

interrupcion

d e l TMR0 d e l TMR0

deshabilita

la interrupcin o

; E j e c u t a a c c i n o n 9 ( oN9 ) o A cci on 9 call Setear timer0 bsf INTCON, 5 ; bcf goto INTCON, 5 Ter m i n ar e j e c u t a r

habilita ;

la

interrupcion

d e l TMR0 d e l TMR0

deshabilita

la interrupcin o

; E j e c u t a a c c i n o n 1 0 ( oN0 ) o A cci on 1 0 call Setear timer0 bsf INTCON, 5 ; habilita bcf goto INTCON, 5 Ter m i n ar e j e c u t a r ;

la

interrupcion

d e l TMR0 d e l TMR0

deshabilita

la interrupcin o

; E j e c u t a a c c i n o n 1 1 (POWER) o A cci on 1 1 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 call transmitir i n i c i a l movf powera , 0 ; mueve powera a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf powerb , 0 ; mueve powerb a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin bcf INTCON, 5 ; d e s h a b i l i t a l a i n t e r r u p c i n d e l TMR0 o goto Ter m i n ar e j e c u t a r ; E j e c u t a a c c i n o n 1 2 (TV/AV) o A cci on 1 2 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 bcf INTCON, 5 ; d e s h a b i l i t a l a i n t e r r u p c i n d e l TMR0 o goto Ter m i n ar e j e c u t a r ; E j e c u t a a c c i n o n 1 3 (CHANNEL + ) o A cci on 1 3 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 bcf INTCON, 5 ; d e s h a b i l i t a l a i n t e r r u p c i n d e l TMR0 o goto Ter m i n ar e j e c u t a r ; E j e c u t a a c c i n o n 1 4 (CHANNEL ) o A cci on 1 4 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 bcf INTCON, 5 ; d e s h a b i l i t a l a i n t e r r u p c i n d e l TMR0 o goto Ter m i n ar e j e c u t a r ; E j e c u t a a c c i n o n 1 5 (VOL + ) o A cci on 1 5 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 bcf INTCON, 5 ; d e s h a b i l i t a l a i n t e r r u p c i n d e l TMR0 o goto Ter m i n ar e j e c u t a r ; E j e c u t a a c c i n o n 1 6 (VOL ) o A cci on 1 6 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 bcf INTCON, 5 ; d e s h a b i l i t a l a i n t e r r u p c i n d e l TMR0 o goto Ter m i n ar e j e c u t a r ; E j e c u t a a c c i n o n 1 7 (OPEN/CLOSE) o A cci on 1 7 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 call transmitir i n i c i a l movf openclosea ,0 ; mueve o p e n c l o s e a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf opencloseb ,0 ; mueve o p e n c l o s e b a W movwf aux ; mueve e l c o n t e n i d o de W a aux

188

ANEXO C. CODIGOS FUENTES


851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 clrf call call bcf goto contador convertir ir convertir fin INTCON, 5 Ter m i n ar e j e c u t a r ; se limpia la variable contador

deshabilita

la interrupcin o

d e l TMR0

; E j e c u t a a c c i n o n 1 8 (PLAY/PAUSE) o A cci on 1 8 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 call transmitir i n i c i a l movf playpausea , 0 ; mueve p l a y p a u s e a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf playpauseb , 0 ; mueve p l a y p a u s e b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin bcf INTCON, 5 ; d e s h a b i l i t a l a i n t e r r u p c i n d e l TMR0 o goto Ter m i n ar e j e c u t a r ; E j e c u t a a c c i n o n 1 9 (STOP) o A cci on 1 9 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 call transmitir i n i c i a l movf stopa , 0 ; mueve s t o p a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf st op b , 0 ; mueve s t o p b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin bcf INTCON, 5 ; d e s h a b i l i t a l a i n t e r r u p c i n d e l TMR0 o goto Ter m i n ar e j e c u t a r ; E j e c u t a a c c i n o n 2 0 (TRACK + ) o A cci on 2 0 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 call transmitir i n i c i a l movf t r ackm asa , 0 ; mueve t r a c k m a s a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf t r ac k m asb , 0 ; mueve t r ac k m asb a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin bcf INTCON, 5 ; d e s h a b i l i t a l a i n t e r r u p c i n d e l TMR0 o goto Ter m i n ar e j e c u t a r ; E j e c u t a a c c i n o n 2 1 (TRACK ) o A cci on 2 1 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 call transmitir i n i c i a l movf t r ackm en osa , 0 ; mueve t r a c k m e n o s a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf trackmen osb , 0 ; mueve trackmen osb a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin bcf INTCON, 5 ; d e s h a b i l i t a l a i n t e r r u p c i n d e l TMR0 o goto Ter m i n ar e j e c u t a r ; E j e c u t a a c c i n o n 2 2 ( ARRIBA) o A cci on 2 2 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 call transmitir i n i c i a l movf arribaa ,0 ; mueve a r r i b a a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf arribab ,0 ; mueve a r r i b a b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin

189

ANEXO C. CODIGOS FUENTES


939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 bcf goto INTCON, 5 Ter m i n ar e j e c u t a r ; deshabilita la interrupcin o d e l TMR0

; E j e c u t a a c c i n o n 2 3 (ABAJO) o A cci on 2 3 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 call transmitir i n i c i a l movf abajoa , 0 ; mueve a b a j o a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf ab ajob , 0 ; mueve a b a j o b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin bcf INTCON, 5 ; d e s h a b i l i t a l a i n t e r r u p c i n d e l TMR0 o goto Ter m i n ar e j e c u t a r ; E j e c u t a a c c i n o n 2 4 (DERECHA) o A cci on 2 4 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 call transmitir i n i c i a l movf derechaa , 0 ; mueve d e r e c h a a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf derechab , 0 ; mueve d e r e c h a b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin bcf INTCON, 5 ; d e s h a b i l i t a l a i n t e r r u p c i n d e l TMR0 o goto Ter m i n ar e j e c u t a r ; E j e c u t a a c c i n o n 2 5 ( IZQUIERDA) o A cci on 2 5 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 call transmitir i n i c i a l movf izqa ,0 ; mueve i z q a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf izqb ,0 ; mueve i z q b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin bcf INTCON, 5 ; d e s h a b i l i t a l a i n t e r r u p c i n d e l TMR0 o goto Ter m i n ar e j e c u t a r ; E j e c u t a a c c i n o n 2 6 (ENTER) o A cci on 2 6 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 call transmitir i n i c i a l movf entera ,0 ; mueve e n t e r a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf enterb , 0 ; mueve e n t e r b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin bcf INTCON, 5 ; d e s h a b i l i t a l a i n t e r r u p c i n d e l TMR0 o goto Ter m i n ar e j e c u t a r ; E j e c u t a a c c i n o n 2 7 (MENU) o A cci on 2 7 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 call transmitir i n i c i a l movf menua , 0 ; mueve menua a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf menub , 0 ; mueve menub a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin bcf INTCON, 5 ; d e s h a b i l i t a l a i n t e r r u p c i n d e l TMR0 o goto Ter m i n ar e j e c u t a r

190

ANEXO C. CODIGOS FUENTES


1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 ; E j e c u t a a c c i n o n 2 8 (CLEAR) o A cci on 2 8 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 call transmitir i n i c i a l movf cleara ,0 ; mueve c l e a r a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf clearb ,0 ; mueve c l e a r b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin bcf INTCON, 5 ; d e s h a b i l i t a l a i n t e r r u p c i n d e l TMR0 o goto Ter m i n ar e j e c u t a r ; E j e c u t a a c c i n o n 2 9 (ZOOM) o A cci on 2 9 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 call transmitir i n i c i a l movf zooma , 0 ; mueve zooma a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf zoomb , 0 ; mueve zoomb a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin bcf INTCON, 5 ; d e s h a b i l i t a l a i n t e r r u p c i n d e l TMR0 o goto Ter m i n ar e j e c u t a r ; E j e c u t a a c c i n o n 3 0 (MUTE) o A cci on 3 0 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 bcf INTCON, 5 ; d e s h a b i l i t a l a i n t e r r u p c i n d e l TMR0 o goto Ter m i n ar e j e c u t a r ; E j e c u t a a c c i n o n 3 1 (REW) o A cci on 3 1 call Setear timer0 bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 bcf INTCON, 5 ; d e s h a b i l i t a l a i n t e r r u p c i n d e l TMR0 o goto Ter m i n ar e j e c u t a r ; E j e c u t a a c c i n o n 3 2 ( FF) o A cci on 3 2 call Setear timer0 bsf INTCON, 5 ; bcf INTCON, 5 goto Ter m i n ar e j e c u t a r

h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 ; d e s h a b i l i t a l a i n t e r r u p c i n d e l TMR0 o

; ; SUBRUTINAS PARA LA OTRANSMISIN INFRARROJA ; ; S u b r u t i n a que t r a n s m i t e e l e n c a b e z a d o ms e l i n i c i o d e l c d i g o IR a o transmitir i n i c i a l movlw 0 x 39 ; mueve un 3 9 h a W call convertir ini movf en c 1 , 0 ; mueve en c 1 a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf en c 2 , 0 ; mueve en c 2 a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir clrf contador return ; S u b r u t i n a que p r e n d e l a convertir ini clrf veces call pwm on call cuenta 180 call pwm o f f clrf veces call cuenta 90 return ; S u b r u t i n a que p r e n d e l a convertir ir clrf veces call pwm on s a l i d a P M para l a W ; s e c u e n c i a de e n c a b e z a d o

limpia v ar iab le veces ; enciende s al i d a P M W ; ap aga s a l i d a P M W limpia v ar iab le veces

s a l i d a P M usegn W ;

el

bit

d e l c d i g o IR o

limpia v ar iab le veces ; enciende s al i d a P M W

191

ANEXO C. CODIGOS FUENTES


1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 call cuenta 11 call pwm o f f clrf veces btfsc aux , 7 call cuenta 11 btfss aux , 7 call cuenta 33 rlf aux , 1 incf contador , 1 btfsc contador , 3 return goto convertir ir ; S u b r u t i n a que convertir fin clrf veces call pwm on call cuenta 11 call pwm o f f clrf veces call cuenta 11 return tira el

; ap aga s a l i d a P M W limpia v ar iab le veces ; s e f i j a s i e l b i t 7 e s un c e r o ; ; ; se fija si el b i t 7 e s un uno

r o t a a l a i z q u i e r d a l a v a r i a b l e aux incrementa contador ; s e f i j a s i c o n t a d o r e s t en 8 a

b i t de p ar ad a ; limpia v ar iab le veces ; enciende s al i d a P M W ; ap aga s a l i d a P M W limpia v ar iab le veces

; ; SUBRUTINAS PARA EL MANEJO DE LA SALIDA P M W ; ; S u b r u t i n a que pwm on movlw b 0 0 0 0 1 1 0 0 movwf CCP1CON return ; S u b r u t i n a que pwm o f f movlw b 0 0 0 0 0 0 0 0 movwf CCP1CON return habilita la s a l i d a CCP1

; s e l e c c i n d e l modo P M o W ; s e e s c r i b e e l r e g i s t r o CCP1CON

deshabilita ; ; se se

la

s a l i d a CCP1

d e s a c t i v a e l modo P M W e s c r i b e e l r e g i s t r o CCP1CON

; ; SUBRUTINAS QUE INSUMEN TIEMPOS ; ; S e t e o d e l TMR 0 Setear timer0 clrwdt ; clrf TMR0 ; se movlw d205 movwf TMR0 ; bsf STATUS, RP0 ; ; bsf OPTION REG, 3 bcf STATUS, RP0 ; return

s e l i m p i a e l WDT l i m p i a e l r e g i s t r o TMR0 ; cuenta 50 microseg s e e s c r i b e e l r e g i s t r o TMR0 i r a l b an co 1 s e e s c r i b e e l OPTION REG p a r a l a i r a l b an co 0

cuenta

d e l TMR0

; S u b r u t i n a que c u e n t a 1 1 i n t e r r u p c i o n e s d e l TMR0 ( 0 . 5 5 mseg ) cuenta 11 movlw 0xB ; e s c r i b e un 1 1 en W xorwf veces , 0 ; compara v e c e s con 1 1 b t f s c STATUS, 2 return goto cuenta 11 ; S u b r u t i n a que c u e n t a 3 3 i n t e r r u p c i o n e s d e l TMR0 ( 1 . 6 5 mseg ) cuenta 33 movlw 0 x 21 ; e s c r i b e un 3 3 en W xorwf veces , 0 ; compara v e c e s con 3 3 b t f s c STATUS, 2 return goto cuenta 33 ; S u b r u t i n a que c u e n t a 9 0 i n t e r r u p c i o n e s d e l TMR0 ( 4 . 5 mseg ) cuenta 90 movlw 0 x5A ; e s c r i b e un 9 0 en W xorwf veces , 0 ; compara v e c e s con 9 0 b t f s c STATUS, 2 return goto cuenta 90 ; S u b r u t i n a que c u e n t a 1 8 0 i n t e r r u p c i o n e s d e l TMR0 ( 9 . 0 mseg ) cuenta 180 movlw 0xB4 ; e s c r i b e un 1 8 0 en W xorwf veces , 0 ; compara v e c e s con 1 8 0 b t f s c STATUS, 2 return goto cuenta 180 ; ; SUBRUTINAS PARA EL TRABAJO EN LA MEMORIA

192

ANEXO C. CODIGOS FUENTES


1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 ; ; S u b r u t i n a que l e e d a t o s de l a EEPROM eeprom r d bsf STATUS, RP0 ; i r a l b an co 1 movwf EEADR ; s e e s c r i b e e l d a t o en l a bsf EECON1 , 0 ; s e pone a 1 e l RD nop movf EEDATA, 0 ; s e e s c r i b e e l d a t o en W bcf STATUS, RP0 ; i r a l b an co 0 return ; ; INICIALIZACION DE LA EEPROM ; ORG DE DE END 0 x 2100 0 x 0 0 , 0 x 0 1 , 0 x 0 2 , 0 x 0 3 , 0 xFF , 0 x 0 0 , 0 xD 5 , 0 x2A , 0 x 1 5 , 0 xEA , 0 xAF , 0 x 5 0 , 0 x2F , 0 xD 0 , 0 x 3D, 0 xC 2 , 0 xBD , 0 x 4 2 , 0 xBF , 0 x 40 0 x5F , 0 xA 0 , 0 xE 7 , 0 x 1 8 , 0 x7F , 0 x 8 0 , 0 x9F , 0 x 6 0 , 0 x 5D, 0 xA 2 , 0 x8D, 0 x 7 2 , 0X1F , 0 xE0 ; Fi n d e l programa

direccion 4h

C.4.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46

Cdigo ModIN.asm o

; ; ; O MDULO EXTERIOR RS232 ; ; ; ; ; ; ALAN COHN ( 1 3 7 0 3 3 ) ROSSANA MORALES ( 6 7 7 5 6 ) ; ; UNIVERSIDAD ORT URUGUAY ; ; NAO 2 0 0 7 ; ; ; list p=16f628A #i n c l u d e <p16F628A . i n c > errorlevel 302 ; ; ; l i s t d i r e c t i v e to d e f i n e p r oc e ss o r processor s p e c i f i c variable d ef i ni t io n s suppress m essage 3 0 2 fr om list file

CONFIG CP OFF & DATA CP OFF & LVP OFF & BOREN OFF & MCLRE ON & WDT OFF & PWRTE ON & INTOSC OSC NOCLKOUT ; VARIABLE DEFINITIONS w temp EQU 0 x71 EQU 0 x72 status temp contador EQU 0 x21 aux EQU 0 x22 dato rs232 EQU 0 x23 p or l a UART EQU 0 x24 flag rs232 address EQU 0 x25 exteriores address dec EQU 0 x26 address uni EQU 0 x27 address EQU 0 x28 direccion rs2321 llega direccion rs2322 EQU 0 x29 que l l e g a intento rs232 EQU 0x2A comando rs232 EQU 0x2B EQU 0x2C parametro rs2321 llega parametro rs2322 EQU 0x2D llega paridad rs232 EQU 0x2E 0x2F p a r i d a d c a l c u l a d a EQU d e l m en saje EQU 0 x30 contador errores mismo m en saje tipo modulo EQU 0 x31 numero serie EQU 0 x32 o mdulo e x t e r i o r EQU 0 x33 en trad as R B s e a c t i v una e n t r a d a o EQU 0 x34 dato RB RB 0 x35 p a r a m e t r o e n t r a d a EQU EQU 0 x36 flag RB0

; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

v a r i a b l e u sed f o r c o n t e x t s a v i n g v a r i a b l e u sed f o r c o n t e x t s a v i n g v a r i a b l e que c u e n t a l a s v e c e s que s e r o t a un b y t e v a r i a b l e que gu ar d a e l b y t e IR a t r a s m i t i r v a r i a b l e u sad a p a r a g u a r d a r e l d a t o r s 2 3 2 r e c i b i d o v a r i a b l e que a v i s a cuando s e p r o d u c e una i n t de Rx v a r i a b l e que gu ar d a l a d i r e c c i n de l o s mdulos o o v a r i a b l e que gu ar d a en ASCII l a s v a r i a b l e que gu ar d a en ASCII l a s v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que c u e n t a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a el el la el el el el el los decenas d e l address unidades d e l address address que

p r i m e r b y t e de l a segu n d o b y t e de l a

e l b y t e de i n t e n t o que l l e g a b y t e d e l comando que l l e g a p r i m e r b y t e d e l p ar m et r o que a p r i m e r b y t e d e l p ar m et r o que a b y t e de p a r i d a d que l l e g a v a l o r de l a p a r i d a d c a l c u l a d a e r r o r e s de p a r i d a d de un

e l t i p o d e l mdulo e x t e r i o r o e l u nmero de s e r i e p r o p i o d e l el el a v i s o para el r a b b i t cuando p or el puerto

d a t o que l l e g o

; v a r i a b l e que gu ar d a e l p ar m et r o a e n v i a r a l r a b b i t a v a r i a b l e que a v i s a cuando hubo una o i n t e r r u p c i n de RB0

; ; ; COMIENZO DEL PROGRAMA

193

ANEXO C. CODIGOS FUENTES


47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 ; ORG goto ORG 0 x000 main 0 x004 ; processor reset ; go t o b e g i n n i n g ; interrupt vector vector o f program location

; ; MANEJADOR DE INTERRUPCIONES ; movwf w temp ; save o f f c u r r e n t W re g i ste r c o n t e n t s movf STATUS, w ; move s t a t u s r e g i s t e r i n t o W r e g i s t e r ; s a v e o f f c o n t e n t s o f STATUS r e g i s t e r movwf s t a t u s t e m p btfsc goto btfsc goto btfsc goto PIR1 , RCIF Isr T0 INTCON, INTF ISR RB0 INTCON, RBIF ISR RBcambio ; RX i n t e r r u m p i o ? ; RB0 i n t e r r u m p i o ? ; RB<7:4 > cambi de e s t a d o ? o

Fin isr movf status temp ,w movwf STATUS swap f w temp , f swap f w temp , w retfie ; ISR o r e c e p c i n USART Isr T0 bsf flag rs232 ,0 movf RCREG,W ; movwf d a t o r s 2 3 2 goto Fin isr ; ISR RB0 ISR RB0 bcf INTCON, INTF bsf flag RB0 , 0 goto Fin isr

; ;

r e t r i e v e cop y o f STATUS r e g i s t e r r e s t o r e p r e i s r STATUS r e g i s t e r c o n t e n t s contents

; r e s t o r e p r e i s r W r e g i s t e r ; return from i n t e r r u p t

; s e t e a e l b i t 0 en 1 l e e l o que l l e g a y l o gu ar d a en W

; ;

s e l i m p i a e l INTF s e t e a e l b i t 0 en 1

; ISR cambio e s t a d o RB ISR RBcambio bcf INTCON, RBIF ; s e l i m p i a e l RBIF movf PORTB, 0 ; mueve PORTB a W movwf dato RB ; mueve W a dato RB movlw 0 xF0 ; mover un 11110000 a W andwf dato RB , 1 ; d e j a r a c t i v o s l o s 4 b i t s ms s i g n i f i c a t i v o s a movlw 0 x00 ; mover un 0 h a W ; com p ar ar dato RB con W x o r w f dato RB , 0 b t f s c STATUS, 2 goto Fin isr swap f dato RB , 1 ; intercambiar nibbles rlf dato RB , 1 ; r o t a r dato RB un b i t a l a i z q u i e r d a ; b o r r a r p r i m e r b i t p or s i e s un 1 bcf dato RB , 0 movf dato RB , 0 ; mover dato RB a W movwf en t r ad as RB ; mover W a en trad as R B goto Fin isr ; ; PROGRAMA PRINCIPAL ; main ; I n i c i a l i z a c i o n movlw 0 x21 movwf FSR otro clrf INDF incf FSR, 1 movlw 0 x36 x o r w f FSR, 0 memoria b t f s s STATUS, 2 goto otro ; S e t e o s Seteos de v a r i a b l e s ; e s c r i b e 2 1 h en W

borra

l a d i r e c c i n de memoria que e s t en INDF o a

; e s c r i b e 3 6 h en W ; compara que s e hayan b o r r a d o t o d a s

las

d i r e c c i o n e s de

c o r r e s p o n d i e n t e s

; S e t e o d e l p e r i f e r i c o RS232 bsf STATUS, RP0 ; i r a l b an co 1 movlw d 25 ; 9 6 0 0 b a u d i o s ( 4 MHz, BRGH=1) movwf SPBRG movlw b 00100100 movwf TXSTA bcf STATUS, RP0 ; i r a l b an co 0 movlw b 10010000 ; SPEN= 1 , CREN=1 movwf RCSTA ; h a b i l i t a e l puerto s e r i e y la

recepcion

continua

194

ANEXO C. CODIGOS FUENTES


134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 movf movf RCREG,W RCREG,W ; l e e 2 veces e l RCREG p or si habia basura

; S e t e o s de p u e r t o s de I /O movlw 0x2F ; pone un 0 0 1 0 1 1 1 1 en W bsf STATUS, RP0 ; i r a l b an co 1 movwf TRISA ; RA0RA1RA2 RA3RA5 p i n e s de e n t r a d a , RA4 RA6 RA7 p i n e s de salida movlw 0 xF3 ; pone un 1 1 1 1 0 0 1 1 en W movwf TRISB ; RB0RB1RB4RB5RB6RB7 p i n e s de e n t r a d a , RB2RB3 de salida bcf STATUS, RP0 ; i r a l b an co 0 movlw 0 x7 ; ap aga c o m p a r a d o r e s movwf CMCON ; bsf bsf bcf S e t e o d e l p i n RB0 STATUS, RP0 OPTION REG, 6 STATUS, RP0

; ; ;

i r a l b an co 1 h a b i l i t a RB0 como r a i s i n g i r a l b an co 0

edge

; D e c l a r a c i n d e l o movlw 0 x33 movwf t i p o m o d u l o movlw 0 x44 movwf n u m e r o s e r i e

t i p o de mdulo e x t e r i o r y u nmero de o ; mueve un 3 3 h ( 3 ) a W ; mueve W a t i p o m o d u l o ; pone un 4 4 h (D) en W ; mueve W a n u m e r o s e r i e propio

s e r i e

; V e r i f i c a c i n d e l a d d r e s s o R ab b i t call Verificar address

d e l mdulo e x t e r i o r y en vo de i d e n t i f i c a c i n o o

al

; H a b i l i t a c i o n de i n t e r r u p c i o n e s bsf INTCON, 7 ; h a b i l i t a l a s i n t e r r u p c i o n e s GIE bsf INTCON, PEIE ; h abil ita interrupcion pe r i f e ri c a bsf INTCON, INTE ; h a b i l i t a l a i n t e r r u p c i n de RB0 o bsf INTCON, RBIE ; h a b i l i t a l a i n t e r r u p c i n de cambio de RB o bsf STATUS, RP0 ; i r a l b an co 1 bsf PIE1 , RCIE ; h a b i l i t a i n t e r r u p c i o n de r e c e p c i o n de USART bcf STATUS, RP0 ; i r a l b an co 0 Loop principal btfsc flag rs232 ,0 call Recibir goto Loop principal

; Rx i n t e r r u m p i o ? ; loop forever

; ; SUBRUTINAS PARA LA ORECEPCIN Y PROCESAMIENTO DEL MENSAJE ; ; S u b r u t i n a que r e c i b e Recibir clrf flag rs232 movlw 0xA xorwf d ato rs232 , 0 b t f s c STATUS, 2 goto Procesar movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto 0 x00 contador , 0 STATUS, 2 es direccion 0 x01 contador , 0 STATUS, 2 es direccion 0 x02 contador , 0 STATUS, 2 es intento 0 x03 contador , 0 STATUS, 2 es com an d o 0 x04 contador , 0 STATUS, 2 es parametro 0 x05 contador , 0 STATUS, 2 es parametro el m en saje y gu ar d a s u s p a r t e s en l o s campos correspondientes

; borrar f lag r s232 ; mueve un Ah a W ( f i n de l n e a ) ; l o compara con e l d a t o r s 2 3 2 ; Procesar l a trama r e c i b i d a

; mueve un 0 h a W ; l o compara con l a 1 ; mueve un 1 h a W ; l o compara con l a 2 ; mueve un 2 h a W ; l o compara con l a

variable

contador

variable

contador

variable

contador

; mueve un 3 h a W ; l o compara con l a

variable

contador

; mueve un 4 h a W ; l o compara con l a 1 ; mueve un 5 h a W ; l o compara con l a 2

variable

contador

variable

contador

; Guarda e l s p t i m o b y t e que l l e g a en l a v a r i a b l e p a r i d a d r s 2 3 2 e movf dato rs232 ,0 ; mueve d a t o r s 2 3 2 a W ; mueve W a p a r i d a d r s 2 3 2 movwf p a r i d a d r s 2 3 2 clrf contador ; l i m p i a v a r i a b l e contador return ; Guarda e l p r i m e r b y t e que llega en l a variable direccion rs2321

195

ANEXO C. CODIGOS FUENTES


219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 es direccion 1 movf dato rs232 ,0 movwf d i r e c c i o n r s 2 3 2 1 incf contador , 1 return

; mueve d a t o r s 2 3 2 a W ; mueve W a d i r e c c i o n r s 2 3 2 1 ; incrementa l a v a r i a b l e contador

; Guarda e l segu n d o b y t e que l l e g a en l a v a r i a b l e d i r e c c i o n r s 2 3 2 2 es direccion 2 ; mueve d a t o r s 2 3 2 a W movf dato rs232 ,0 ; mueve W a d i r e c c i o n r s 2 3 2 2 movwf d i r e c c i o n r s 2 3 2 2 incf contador , 1 ; incrementa l a v a r i a b l e contador return ; Guarda e l t e r c e r es intento movf dato rs232 ,0 movwf i n t e n t o r s 2 3 2 incf contador , 1 return ; Guarda e l c u a r t o es com an d o movf dato rs232 ,0 movwf c o m a n d o r s 2 3 2 incf contador , 1 return b y t e que llega en l a variable intento rs232

; mueve d a t o r s 2 3 2 a W ; mueve W a i n t e n t o ; incrementa l a v a r i a b l e

contador

b y t e que

llega

en l a

variable

comando rs232

; mueve d a t o r s 2 3 2 a W ; mueve W a c o m a n d o r s 2 3 2 ; incrementa l a v a r i a b l e contador

; Guarda e l q u i n t o b y t e que es parametro 1 movf dato rs232 ,0 movwf p a r a m e t r o r s 2 3 2 1 incf contador , 1 return ; Guarda e l s e x t o b y t e que es parametro 2 movf dato rs232 ,0 movwf p a r a m e t r o r s 2 3 2 2 incf contador , 1 return ; Se f i j a s i e l m en saje Procesar bcf INTCON, PEIE clrf contador movf address dec ,0 xorwf d i r e c c i o n r s 2 3 2 1 , 0 b t f s s STATUS, 2 return movf address uni ,0 xorwf d i r e c c i o n r s 2 3 2 2 , 0 b t f s s STATUS, 2 return

llega

en l a

variable

parametro rs2321

; mueve d a t o r s 2 3 2 a W ; mueve W a p a r a m e t r o r s 2 3 2 1 ; incrementa l a v a r i a b l e contador

llega

en l a

variable

parametro rs2322

; mueve d a t o r s 2 3 2 a W ; mueve W a p a r a m e t r o r s 2 3 2 2 ; incrementa l a v a r i a b l e contador

e s p a r a l comparando d i r e c c i o n e s e ; deshabilita interrupcion p e ri f e r i c a l i m p i a v a r i a b l e contador ; mueve a d d r e s s d e c a W ; l o compara con l a v a r i a b l e d i r e c c i o n r s 2 3 2 1

; mueve a d d r e s s u n i a W ; l o compara con l a v a r i a b l e

direccion rs2322

; Se f i j a s i e l comando e s c o n o c i d o Bu scar com an d o movlw 0 x51 ; mueve un x o r w f com an d o r s232 , 0 ; lo b t f s c STATUS, 2 goto Verificar paridad movlw 0 x52 ; mueve un ; lo x o r w f com an d o r s232 , 0 b t f s c STATUS, 2 goto Verificar paridad movlw 0 x55 ; mueve un x o r w f com an d o r s232 , 0 ; lo b t f s c STATUS, 2 goto Verificar paridad

5 1 h ( Q) a W compara con l a

variable

comando rs232

5 2 h ( R) a W compara con l a

variable

comando rs232

5 5 h ( U) a W compara con l a

variable

comando rs232

; V e r i f i c a s i e l campo i n t e n t o e s t d e n t r o de l o s p a r m e t r o s a a Desconocido error paridad movlw 0 x32 ; mover un 0 x32 ( 2 ) a W su b wf i n t e n t o r s 2 3 2 , 0 ; restar W a intento rs232 b t f s c STATUS, 1 ; v e r i f i c a r s i el resultado es p os it i v o goto Encender alarma clrf direccion rs2321 ; limpia variable direccion rs2321 clrf direccion rs2322 ; limpia variable direccion rs2322 ; limpia variable intento rs232 clrf intento rs232 clrf comando rs232 ; l i m p i a v a r i a b l e comando rs232 ; limpia v a ri a bl e parametro rs2321 clrf parametro rs2321 clrf parametro rs2322 ; limpia v a ri a bl e parametro rs2322 ; limpia variable paridad rs232 clrf paridad rs232 bsf INTCON, PEIE ; habilita ointerrupcin p eri f ri ca e return ; E n c i e n d e l a al ar m a de v i o l a c i n de l a r e g l a de l o s 3 i n t e n t o s ( l e d ) o Encender alarma bsf PORTA, 4 ; s e t a r RA4 en e s t a d o a l t o

196

ANEXO C. CODIGOS FUENTES


307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 clrf direccion rs2321 clrf direccion rs2322 clrf intento rs232 clrf comando rs232 clrf parametro rs2321 clrf parametro rs2322 clrf paridad rs232 bsf INTCON, PEIE return ; ; ; ; ; ; ; limpia variable direccion rs2321 limpia variable direccion rs2322 limpia variable intento rs232 l i m p i a v a r i a b l e comando rs232 limpia v a ri a bl e parametro rs2321 limpia v a ri a bl e parametro rs2322 limpia variable paridad rs232 ; habilita ointerrupcin p eri f ri ca e

; C l c u l o de p a r i d a d a Verificar paridad ; mueve d i r e c c i o n r s 2 3 2 1 a W movf direccion rs2321 ,0 xorwf d i r e c c i o n r s 2 3 2 2 , 0 ; c a l c ul a l a paridad entre W y di r e c c i o n r s 2 3 2 2 2 ; c alc ul a la paridad entre W e int e n to r s 2 3 2 xorwf i n t e n t o r s 2 3 2 , 0 x o r w f com an d o r s232 , 0 ; c a l c u l a l a p ari d ad e n t r e W y comando rs232 xorwf p arametro rs2321 , 0 ; c a lc ul a la paridad entre W y parametro rs2321 ; c a lc ul a la paridad entre W y parametro rs2322 xorwf p arametro rs2322 , 0 movwf p a r i d a d c a l c u l a d a ; gu ar d a l a p a r i d a d c a l c u l a d a en l a v a r i a b l e paridad calculada xorwf p ari d ad rs232 , 0 ; compara p a r i d a d c a l c u l a d a con l a p a r i d a d que e n v i o el rabbit b t f s c STATUS, 2 goto Decidir respuesta goto Desconocido error paridad ; D i s t i n g u e e l t i p o de r e s p u e s t a a e n v i a r u s e g n e l comando que a r r i b o Decidir respuesta movlw 0 x51 ; mueve un 5 1 h ( Q) a W ; l o compara con l a v a r i a b l e c o m a n d o r s 2 3 2 x o r w f com an d o r s232 , 0 b t f s c STATUS, 2 goto Definir accion movlw 0 x52 ; mueve un 5 2 h ( R) a W ; l o compara con l a v a r i a b l e c o m a n d o r s 2 3 2 x o r w f com an d o r s232 , 0 b t f s c STATUS, 2 goto Resetear modulo movlw 0 x55 ; mueve un 5 5 h ( U) a W x o r w f com an d o r s232 , 0 ; l o compara con l a v a r i a b l e c o m a n d o r s 2 3 2 b t f s c STATUS, 2 goto Enviar presencia ; H a b i l i t a l a o r e c e p c i n Fin decidir respuesta clrf direccion rs2321 clrf direccion rs2322 clrf intento rs232 clrf comando rs232 clrf parametro rs2321 clrf parametro rs2322 clrf paridad rs232 bsf INTCON, PEIE return d e l MAX485 y v u e l v e a e s p e r a r un m en saje ; ; ; ; ; ; ; limpia variable direccion rs2321 limpia variable direccion rs2322 limpia variable intento rs232 l i m p i a v a r i a b l e comando rs232 limpia v a ri a bl e parametro rs2321 limpia v a ri a bl e parametro rs2322 limpia variable paridad rs232 ; h abil ita interrupcion pe r i f e ri c a d e l R ab b i t

; Enva l a r e s p u e s t a y r e s e t e a Resetear modulo call Enviar respuesta call Reseteo goto Fin decidir respuesta

e l mdulo e x t e r i o r o

; D e f i n e l a a c c i n c o r r e p o n d i e n t e y en va l a r e s p u e s t a o Definir accion b t f s c flag RB0 , 0 ; s e a c t i v RB0? o goto Accion 1 ; s e a c t i v RB4? o b t f s c en t r ad as R B , 1 goto Accion 2 b t f s c en t r ad as R B , 2 ; s e a c t i v RB5? o goto Accion 3 b t f s c en t r ad as R B , 3 ; s e a c t i v RB6? o goto Accion 4 ; s e a c t i v RB7? o b t f s c en t r ad as R B , 4 goto Accion 5 goto Fin decidir respuesta ; S e t e a que l a a c c i n a e j e c u t a r p or e l r a b b i t s e r l a u nmero 1 o a Accion 1 movlw 0 x30 ; mueve un 3 0 h ( 0 ) a W movwf p a r a m e t r o e n t r a d a ; mueve W a p a r a m e t r o e n t r a d a ; l i m p i a b i t de o a c c i n 1 clrf flag RB0 call Enviar evento goto Fin decidir respuesta ; S e t e a que l a a c c i n a e j e c u t a r p or e l r a b b i t s e r l a u nmero 2 o a Accion 2 movlw 0 x31 ; mueve un 3 1 h ( 1 ) a W movwf p a r a m e t r o e n t r a d a ; mueve W a p a r a m e t r o e n t r a d a bcf en t r ad as R B , 1 ; l i m p i a b i t de o a c c i n 2 call Enviar evento goto Fin decidir respuesta

197

ANEXO C. CODIGOS FUENTES


393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474

; S e t e a que l a a c c i n a e j e c u t a r p or e l r a b b i t s e r l a u nmero 3 o a Accion 3 movlw 0 x32 ; mueve un 3 2 h ( 2 ) a W ; mueve W a p a r a m e t r o e n t r a d a movwf p a r a m e t r o e n t r a d a ; l i m p i a b i t de o a c c i n 3 bcf en t r ad as R B , 2 call Enviar evento goto Fin decidir respuesta ; S e t e a que l a a c c i n a e j e c u t a r p or e l r a b b i t s e r l a u nmero 4 o a Accion 4 movlw 0 x33 ; mueve un 3 3 h ( 3 ) a W ; mueve W a p a r a m e t r o e n t r a d a movwf p a r a m e t r o e n t r a d a bcf en t r ad as R B , 3 ; l i m p i a b i t de o a c c i n 4 call Enviar evento goto Fin decidir respuesta ; S e t e a que l a a c c i n a e j e c u t a r p or e l r a b b i t s e r l a u nmero 5 o a Accion 5 movlw 0 x34 ; mueve un 3 4 h ( 4 ) a W ; mueve W a p a r a m e t r o e n t r a d a movwf p a r a m e t r o e n t r a d a ; l i m p i a b i t de o a c c i n 5 bcf en t r ad as R B , 4 call Enviar evento goto Fin decidir respuesta ; ; SUBRUTINAS PARA EL IENVO DE NOTIFICACIONES ; ; S u b r u t i n a que e n v i a un b y t e p or l a USART E n vi o movwf TXREG ; c a r a c t e r en W bsf STATUS, RP0 ; i r a l b an co 1 testeo btfss TXSTA,TRMT ; e s p e r a h a s t a c o m p l e t a r Tx , goto testeo bcf STATUS, RP0 ; i r a l b an co 0 return

testea (1)

; S u b r u t i n a que e n v i a l a n o t i f i c a c i n de p r e s e n c i a a l R ab b i t o Enviar presencia bsf PORTA, 7 ; p o n e r en 1 e l MAX485 p a r a h a b i l i t a r l a t r a n s m i s i n ( o p i n DE) movlw P ; mueve P a W call E n vi o ; en va e l i d e n t i f i c a d o r de p r e s e n c i a movf tipo modulo , 0 ; mueve t i p o m o d u l o a W call E n vi o ; en va e l t i p o m o d u l o a l r a b b i t movf numero serie ,0 ; mueve n u m e r o s e r i e a W call E n vi o ; en va e l n u m e r o s e r i e a l r a b b i t movlw 0xA ; mueve e l c a r a c t e r ASCII 1 0 a W call E n vi o ; en va e l f i n de l n e a a l r a b b i t bcf PORTA, 7 ; p o n e r en 0 e l MAX485 p a r a h a b i l i t a r l a r e c e p c i n ( o p i n DE) bsf INTCON, PEIE ; habilita ointerrupcin p eri f ri ca e goto Fin decidir respuesta ; S u b r u t i n a que e n v i a l a n o t i f i c a c i n de r e s p u e s t a a l R ab b i t o Enviar evento bsf PORTA, 7 ; p o n e r en 1 e l MAX485 p a r a h a b i l i t a r l a t r a n s m i s i n ( o p i n DE) movlw E ; mueve E a W call E n vi o ; en va e l i d e n t i f i c a d o r de r e s p u e s t a movf parametro entrada , 0 ; mueve p a r a m e t r o e n t r a d a a W call E n vi o ; en va e l a p a r m e t r o e n t r a d a a l r a b b i t movlw 0xA ; mueve e l c a r a c t e r ASCII 1 0 a W call E n vi o ; en va e l f i n de l n e a a l r a b b i t bcf PORTA, 7 ; p o n e r en 0 e l MAX485 p a r a h a b i l i t a r l a r e c e p c i n ( o p i n DE) return ; S u b r u t i n a que e n v i a Enviar respuesta bsf PORTA, 7 p i n DE) movlw R call E n vi o movlw 0xA call E n vi o bcf PORTA, 7 p i n DE) return la notificacin o de r e s p u e s t a al R ab b i t habilitar la transmisin ( o

; p o n e r en 1 e l MAX485 p a r a

; mueve R a W ; en va e l i d e n t i f i c a d o r de r e s p u e s t a ; mueve e l c a r a c t e r ASCII 1 0 a W ; en va e l f i n de l n e a a l r a b b i t ; p o n e r en 0 e l MAX485 p a r a h a b i l i t a r

la recepcin o

; ; SUBRUTINAS QUE VERIFICAN EL ADDRESS DEL OMDULO ; ; S u b r u t i n a que Verificar address verifica el address d e l mdulo e x t e r i o r o

198

ANEXO C. CODIGOS FUENTES


475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 movlw addwf addwf movf andlw movwf btfsc goto 0 x30 address address PORTA, 0 0xF address address fijarse

dec ,1 uni ,1

,3 resto

; ; ; ; ; ;

suma 3 0 h a a d d r e s s d e c p a r a t r a n s f o r m a r l o en ASCII suma 3 0 h a a d d r e s s u n i p a r a t r a n s f o r m a r l o en ASCII s e f i j a e s t a d o de PORTA l i m p i a l o que no e s n e c e s a r i o mueve e l e s t a d o de l o s p r i m e r o s 4 p u e r t o s a a d d r e s s b u s c a s i e l a d d r e s s e s t e n t r e l o s p r i m e r o s 7 u nmeros a

seguir verificando addwf a d d r e s s u n i , 1 return fijarse resto movlw 0 x08 xorwf address , 0 b t f s c STATUS, 2 goto seguir verificando movlw 0 x09 xorwf address , 0 b t f s c STATUS, 2 goto seguir verificando movlw 0x0A xorwf address , 0 b t f s c STATUS, 2 call address 10 movlw 0x0B xorwf address , 0 b t f s c STATUS, 2 call address 11 movlw 0x0C xorwf address , 0 b t f s c STATUS, 2 call address 12 movlw 0x0D xorwf address , 0 b t f s c STATUS, 2 call address 13 movlw 0x0E xorwf address , 0 b t f s c STATUS, 2 call address 14 movlw 0 x0F xorwf address , 0 b t f s c STATUS, 2 call address 15 return

; suma e l

v a l o r de W a l a s

unidades

e s c r i b e un 8 en W ; l o compara con a d d r e s s

e s c r i b e un 9 en W ; l o compara con a d d r e s s

e s c r i b e un 1 0 en W ; l o compara con a d d r e s s

e s c r i b e un 1 1 en W ; l o compara con a d d r e s s

e s c r i b e un 1 2 en W ; l o compara con a d d r e s s

e s c r i b e un 1 3 en W ; l o compara con a d d r e s s

e s c r i b e un 1 4 en W ; l o compara con a d d r e s s

e s c r i b e un 1 5 en W ; l o compara con a d d r e s s

; S u b r u t i n a que e s c r i b e un 1 0 en u nmeros ASCII address 10 incf address dec ,1 ; i n c r e m e n t a en 1 a d d r e s s d e c return ; S u b r u t i n a que e s c r i b e un 1 1 en u nmeros ASCII address 11 incf address dec ,1 ; i n c r e m e n t a en 1 a d d r e s s d e c incf address uni , 1 ; i n c r e m e n t a en 1 a d d r e s s u n i return ; S u b r u t i n a que e s c r i b e un 1 2 en u nmeros ASCII address 12 incf address dec ,1 ; i n c r e m e n t a en 1 a d d r e s s d e c movlw 0 x02 addwf a d d r e s s u n i , 1 ; suma e l v a l o r de W a l a s u n i d a d e s return ; S u b r u t i n a que e s c r i b e un 1 3 en u nmeros ASCII address 13 incf address dec ,1 ; i n c r e m e n t a en 1 a d d r e s s d e c movlw 0 x03 ; suma e l v a l o r de W a l a s u n i d a d e s addwf a d d r e s s u n i , 1 return ; S u b r u t i n a que e s c r i b e un 1 4 en u nmeros ASCII address 14 incf address dec ,1 ; i n c r e m e n t a en 1 a d d r e s s d e c movlw 0 x04 ; suma e l v a l o r de W a l a s u n i d a d e s addwf a d d r e s s u n i , 1 return ; S u b r u t i n a que e s c r i b e un 1 5 en u nmeros ASCII address 15 ; i n c r e m e n t a en 1 a d d r e s s d e c incf address dec ,1 movlw 0 x05 addwf a d d r e s s u n i , 1 ; suma e l v a l o r de W a l a s u n i d a d e s return ;

199

ANEXO C. CODIGOS FUENTES


563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 ; SUBRUTINAS CONCURRENTES CON EL RESETEO DEL OMDULO ; ; S u b r u t i n a que r e s e t a Reseteo bsf PORTA, 6 return e l mdulo e x t e r i o r o ; s e t e a RA6 en 1

; ; INICIALIZACION DE LA EEPROM ; ORG DE END 0 x2100 0 x00 , 0 x01 , 0 x02 , 0 x03 ; Fi n d e l programa

C.5.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54

Cdigo ModOUT.asm o

; ; ; O MDULO EXTERIOR DE SALIDA DIGITALES ; ; ; ; ; ; ALAN COHN ( 1 3 7 0 3 3 ) ROSSANA MORALES ( 6 7 7 5 6 ) ; ; UNIVERSIDAD ORT URUGUAY ; ; NAO 2 0 0 7 ; ; ; list p=16f628A #i n c l u d e <p16F628A . i n c > errorlevel 302 ; ; ; l i s t d i r e c t i v e to d e f i n e p r oc e ss o r processor s p e c i f i c variable d ef i ni t io n s suppress m essage 3 0 2 fr om list file

CONFIG CP OFF & DATA CP OFF & LVP OFF & BOREN OFF & MCLRE ON & WDT OFF & PWRTE ON & INTOSC OSC NOCLKOUT ; VARIABLE DEFINITIONS EQU 0 x71 w temp status temp EQU 0 x72 contador EQU 0 x21 aux EQU 0 x22 EQU 0 x23 dato rs232 p or l a UART EQU 0 x24 flag rs232 address EQU 0 x25 exteriores address dec EQU 0 x26 address uni EQU 0 x27 address EQU 0 x28 direccion rs2321 llega direccion rs2322 EQU 0 x29 que l l e g a EQU 0x2A intento rs232 comando rs232 EQU 0x2B EQU 0x2C parametro rs2321 llega parametro rs2322 EQU 0x2D llega paridad rs232 EQU 0x2E p a r i d a d c a l c u l a d a EQU 0x2F d e l m en saje EQU 0 x30 contador errores mismo m en saje tipo modulo EQU 0 x31 numero serie EQU 0 x32 o mdulo e x t e r i o r EQU 0 x33 stop salida

; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;

v a r i a b l e u sed f o r c o n t e x t s a v i n g v a r i a b l e u sed f o r c o n t e x t s a v i n g v a r i a b l e que c u e n t a l a s v e c e s que s e r o t a un b y t e v a r i a b l e que gu ar d a e l b y t e IR a t r a s m i t i r v a r i a b l e u sad a p a r a g u a r d a r e l d a t o r s 2 3 2 r e c i b i d o v a r i a b l e que a v i s a cuando s e p r o d u c e una i n t de Rx v a r i a b l e que gu ar d a l a d i r e c c i n de l o s mdulos o o v a r i a b l e que gu ar d a en ASCII l a s v a r i a b l e que gu ar d a en ASCII l a s v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que c u e n t a v a r i a b l e que gu ar d a v a r i a b l e que gu ar d a v a r i a b l e que a v i s a el el la el el el el el los decenas d e l address unidades d e l address address que

p r i m e r b y t e de l a segu n d o b y t e de l a

e l b y t e de i n t e n t o que l l e g a b y t e d e l comando que l l e g a p r i m e r b y t e d e l p ar m et r o que a p r i m e r b y t e d e l p ar m et r o que a b y t e de p a r i d a d que l l e g a v a l o r de l a p a r i d a d c a l c u l a d a e r r o r e s de p a r i d a d de un

e l t i p o d e l mdulo e x t e r i o r o e l u nmero de s e r i e p r o p i o d e l s i hay que a p a g a r salidas

; ; ; COMIENZO DEL PROGRAMA ; ORG goto ORG 0 x000 main 0 x004 ; processor reset ; go t o b e g i n n i n g ; interrupt vector vector o f program location

; ; MANEJADOR DE INTERRUPCIONES ; ; save o f f c u r r e n t W re g i ste r movwf w temp

contents

200

ANEXO C. CODIGOS FUENTES


55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 movf STATUS, w movwf s t a t u s t e m p b t f s c PIR1 , RCIF goto Isr T0 Fin isr movf status temp ,w movwf STATUS swap f w temp , f swap f w temp , w retfie ; ISR o r e c e p c i n USART Isr T0 bsf flag rs232 ,0 movf RCREG,W ; movwf d a t o r s 2 3 2 goto Fin isr ; move s t a t u s r e g i s t e r i n t o W r e g i s t e r ; s a v e o f f c o n t e n t s o f STATUS r e g i s t e r ; RX i n t e r r u m p i o ?

; ;

r e t r i e v e cop y o f STATUS r e g i s t e r r e s t o r e p r e i s r STATUS r e g i s t e r c o n t e n t s contents

; r e s t o r e p r e i s r W r e g i s t e r ; return from i n t e r r u p t

; s e t e a e l b i t 0 en 1 l e e l o que l l e g a y l o gu ar d a en W

; ; PROGRAMA PRINCIPAL ; main ; I n i c i a l i z a c i o n movlw 0 x21 movwf FSR otro clrf INDF incf FSR, 1 movlw 0 x33 x o r w f FSR, 0 memoria b t f s s STATUS, 2 goto otro ; S e t e o s Seteos de v a r i a b l e s ; e s c r i b e 2 1 h en W

borra

l a d i r e c c i n de memoria que e s t en INDF o a

; e s c r i b e 3 3 h en W ; compara que s e hayan b o r r a d o t o d a s

las

d i r e c c i o n e s de

c o r r e s p o n d i e n t e s

; S e t e o d e l p e r i f e r i c o RS232 bsf STATUS, RP0 ; i r a l b an co 1 movlw d 25 ; 9 6 0 0 b a u d i o s ( 4 MHz, BRGH=1) movwf SPBRG movlw b 00100100 movwf TXSTA bcf STATUS, RP0 ; i r a l b an co 0 movlw b 10010000 ; SPEN= 1 , CREN=1 movwf RCSTA ; h a b i l i t a e l puerto s e r i e y la recepcion continua movf RCREG,W ; l e e 2 v e c e s e l RCREG p or s i h a b i a b a s u r a movf RCREG,W ; S e t e o s de p u e r t o s de I /O movlw 0x2F ; pone un 0 0 1 0 1 1 1 1 en W bsf STATUS, RP0 ; i r a l b an co 1 movwf TRISA ; RA0RA1RA2 RA3RA5 p i n e s de e n t r a d a , RA4 RA6 RA7 p i n e s de salida movlw 0 x02 ; pone un 0 0 0 0 0 0 1 0 en W movwf TRISB ; RB1/Rx p i n de e n t r a d a , RB0RB2RB3RB4RB5RB6RB7 p i n e s de s a l i d a bcf STATUS, RP0 ; i r a l b an co 0 movlw 0 x7 ; ap aga c o m p a r a d o r e s movwf CMCON ; D e c l a r a c i n d e l o movlw 0 x32 movwf t i p o m o d u l o movlw 0 x43 movwf n u m e r o s e r i e t i p o de mdulo e x t e r i o r y u nmero de o ; mueve un 3 2 h ( 2 ) a W ; mueve W a t i p o m o d u l o ; pone un 4 3 h (C) en W ; mueve W a n u m e r o s e r i e propio s e r i e

; V e r i f i c a c i n d e l a d d r e s s o R ab b i t call Verificar address

d e l mdulo e x t e r i o r y en vo de i d e n t i f i c a c i n o o

al

; H a b i l i t a c i o n de i n t e r r u p c i o n e s bsf INTCON, 7 ; h a b i l i t a l a s i n t e r r u p c i o n e s GIE bsf INTCON, PEIE ; h abil ita interrupcion pe r i f e ri c a bsf STATUS, RP0 ; i r a l b an co 1 bsf PIE1 , RCIE ; h a b i l i t a i n t e r r u p c i o n de r e c e p c i o n de USART bcf STATUS, RP0 ; i r a l b an co 0 Loop principal btfsc flag rs232 ,0 call Recibir goto Loop principal

; Rx i n t e r r u m p i o ? ; loop forever

; ; SUBRUTINAS PARA LA ORECEPCIN Y PROCESAMIENTO DEL MENSAJE

201

ANEXO C. CODIGOS FUENTES


139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 ; ; S u b r u t i n a que r e c i b e Recibir clrf flag rs232 movlw 0xA xorwf d ato rs232 , 0 b t f s c STATUS, 2 goto Procesar movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto 0 x00 contador , 0 STATUS, 2 es direccion 0 x01 contador , 0 STATUS, 2 es direccion 0 x02 contador , 0 STATUS, 2 es intento 0 x03 contador , 0 STATUS, 2 es com an d o 0 x04 contador , 0 STATUS, 2 es parametro 0 x05 contador , 0 STATUS, 2 es parametro el m en saje y gu ar d a s u s p a r t e s en l o s campos correspondientes

; borrar f lag r s232 ; mueve un Ah a W ( f i n de l n e a ) ; l o compara con e l d a t o r s 2 3 2 ; Procesar l a trama r e c i b i d a

; mueve un 0 h a W ; l o compara con l a 1 ; mueve un 1 h a W ; l o compara con l a 2 ; mueve un 2 h a W ; l o compara con l a

variable

contador

variable

contador

variable

contador

; mueve un 3 h a W ; l o compara con l a

variable

contador

; mueve un 4 h a W ; l o compara con l a 1 ; mueve un 5 h a W ; l o compara con l a 2

variable

contador

variable

contador

; Guarda e l s p t i m o b y t e que l l e g a en l a v a r i a b l e p a r i d a d r s 2 3 2 e movf dato rs232 ,0 ; mueve d a t o r s 2 3 2 a W ; mueve W a p a r i d a d r s 2 3 2 movwf p a r i d a d r s 2 3 2 clrf contador ; l i m p i a v a r i a b l e contador return ; Guarda e l p r i m e r b y t e que es direccion 1 movf dato rs232 ,0 movwf d i r e c c i o n r s 2 3 2 1 incf contador , 1 return llega en l a variable direccion rs2321

; mueve d a t o r s 2 3 2 a W ; mueve W a d i r e c c i o n r s 2 3 2 1 ; incrementa l a v a r i a b l e contador

; Guarda e l segu n d o b y t e que l l e g a en l a v a r i a b l e d i r e c c i o n r s 2 3 2 2 es direccion 2 movf dato rs232 ,0 ; mueve d a t o r s 2 3 2 a W movwf d i r e c c i o n r s 2 3 2 2 ; mueve W a d i r e c c i o n r s 2 3 2 2 incf contador , 1 ; incrementa l a v a r i a b l e contador return ; Guarda e l t e r c e r es intento movf dato rs232 ,0 movwf i n t e n t o r s 2 3 2 incf contador , 1 return ; Guarda e l c u a r t o es com an d o movf dato rs232 ,0 movwf c o m a n d o r s 2 3 2 incf contador , 1 return b y t e que llega en l a variable intento rs232

; mueve d a t o r s 2 3 2 a W ; mueve W a i n t e n t o ; incrementa l a v a r i a b l e

contador

b y t e que

llega

en l a

variable

comando rs232

; mueve d a t o r s 2 3 2 a W ; mueve W a c o m a n d o r s 2 3 2 ; incrementa l a v a r i a b l e contador

; Guarda e l q u i n t o b y t e que es parametro 1 movf dato rs232 ,0 movwf p a r a m e t r o r s 2 3 2 1 incf contador , 1 return ; Guarda e l s e x t o b y t e que es parametro 2 movf dato rs232 ,0 movwf p a r a m e t r o r s 2 3 2 2 incf contador , 1 return ; Se f i j a s i e l m en saje Procesar bcf INTCON, PEIE clrf contador movf address dec ,0

llega

en l a

variable

parametro rs2321

; mueve d a t o r s 2 3 2 a W ; mueve W a p a r a m e t r o r s 2 3 2 1 ; incrementa l a v a r i a b l e contador

llega

en l a

variable

parametro rs2322

; mueve d a t o r s 2 3 2 a W ; mueve W a p a r a m e t r o r s 2 3 2 2 ; incrementa l a v a r i a b l e contador

e s p a r a l comparando d i r e c c i o n e s e ; deshabilita interrupcion l i m p i a v a r i a b l e contador ; mueve a d d r e s s d e c a W periferica

202

ANEXO C. CODIGOS FUENTES


227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 xorwf d i r e c c i o n r s 2 3 2 1 , 0 b t f s s STATUS, 2 return movf address uni ,0 xorwf d i r e c c i o n r s 2 3 2 2 , 0 b t f s s STATUS, 2 return ; l o compara con l a variable direccion rs2321

; mueve a d d r e s s u n i a W ; l o compara con l a v a r i a b l e

direccion rs2322

; Se f i j a s i e l comando e s c o n o c i d o Bu scar com an d o movlw 0 x41 ; mueve un 4 2 h ( A) x o r w f com an d o r s232 , 0 ; l o compara b t f s c STATUS, 2 goto Verificar paridad movlw 0 x52 ; mueve un 5 2 h ( R) ; l o compara x o r w f com an d o r s232 , 0 b t f s c STATUS, 2 goto Verificar paridad movlw 0 x53 ; mueve un 5 3 h ( S ) x o r w f com an d o r s232 , 0 ; l o compara b t f s c STATUS, 2 goto Verificar paridad movlw 0 x55 ; mueve un 5 5 h ( U) ; l o compara x o r w f com an d o r s232 , 0 b t f s c STATUS, 2 goto Verificar paridad

a W con l a

variable

comando rs232

a W con l a

variable

comando rs232

a W con l a

variable

comando rs232

a W con l a

variable

comando rs232

; V e r i f i c a s i e l campo i n t e n t o e s t d e n t r o de l o s p a r m e t r o s a a Desconocido error paridad movlw 0 x32 ; mover un 0 x32 ( 2 ) a W su b wf i n t e n t o r s 2 3 2 , 0 ; restar W a intento rs232 b t f s c STATUS, 1 ; v e r i f i c a r s i el resultado es p os it i v o goto Encender alarma ; limpia variable direccion rs2321 clrf direccion rs2321 ; limpia variable direccion rs2322 clrf direccion rs2322 ; limpia variable intento rs232 clrf intento rs232 clrf comando rs232 ; l i m p i a v a r i a b l e comando rs232 ; limpia v a ri a bl e parametro rs2321 clrf parametro rs2321 ; limpia v a ri a bl e parametro rs2322 clrf parametro rs2322 clrf paridad rs232 ; limpia variable paridad rs232 bsf INTCON, PEIE ; habilita ointerrupcin p eri f ri ca e return ; E n c i e n d e l a al ar m a de v i o l a c i n de l a r e g l a de l o s 3 i n t e n t o s ( l e d ) o Encender alarma bsf PORTA, 4 ; s e t a r RA4 en e s t a d o a l t o ; limpia variable direccion rs2321 clrf direccion rs2321 ; limpia variable direccion rs2322 clrf direccion rs2322 ; limpia variable intento rs232 clrf intento rs232 clrf comando rs232 ; l i m p i a v a r i a b l e comando rs232 clrf parametro rs2321 ; limpia v a ri a bl e parametro rs2321 clrf parametro rs2322 ; limpia v a ri a bl e parametro rs2322 clrf paridad rs232 ; limpia variable paridad rs232 bsf INTCON, PEIE ; habilita ointerrupcin p eri f ri ca e return ; C l c u l o de p a r i d a d a Verificar paridad movf direccion rs2321 ,0 ; mueve d i r e c c i o n r s 2 3 2 1 a W xorwf d i r e c c i o n r s 2 3 2 2 , 0 ; c a l c ul a l a paridad entre W y di r e c c i o n r s 2 3 2 2 2 ; c alc ul a la paridad entre W e int e n to r s 2 3 2 xorwf i n t e n t o r s 2 3 2 , 0 x o r w f com an d o r s232 , 0 ; c a l c u l a l a p ari d ad e n t r e W y comando rs232 xorwf p arametro rs2321 , 0 ; c a lc ul a la paridad entre W y parametro rs2321 ; c a lc ul a la paridad entre W y parametro rs2322 xorwf p arametro rs2322 , 0 movwf p a r i d a d c a l c u l a d a ; gu ar d a l a p a r i d a d c a l c u l a d a en l a v a r i a b l e paridad calculada ; compara p a r i d a d c a l c u l a d a con l a p a r i d a d que e n v i o xorwf p ari d ad rs232 , 0 el rabbit b t f s c STATUS, 2 goto Decidir respuesta goto Desconocido error paridad ; D i s t i n g u e e l t i p o de r e s p u e s t a a e n v i a r u s e g n e l comando que a r r i b o Decidir respuesta bcf PORTA, 4 ; s e t e a r RA4 en e s t a d o b a j o movlw 0 x41 ; mueve un 4 2 h ( A) a W ; l o compara con l a v a r i a b l e c o m a n d o r s 2 3 2 x o r w f com an d o r s232 , 0 b t f s c STATUS, 2 goto Activar accion movlw 0 x52 ; mueve un 5 2 h ( R) a W ; l o compara con l a v a r i a b l e c o m a n d o r s 2 3 2 x o r w f com an d o r s232 , 0 b t f s c STATUS, 2 goto Resetear modulo movlw 0 x53 ; mueve un 5 3 h ( S ) a W x o r w f com an d o r s232 , 0 ; l o compara con l a v a r i a b l e c o m a n d o r s 2 3 2 b t f s c STATUS, 2 goto Parar accion movlw 0 x55 ; mueve un 5 5 h ( U) a W

203

ANEXO C. CODIGOS FUENTES


313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 x o r w f com an d o r s232 , 0 b t f s c STATUS, 2 goto Enviar presencia ; H a b i l i t a l a o r e c e p c i n Fin decidir respuesta clrf direccion rs2321 clrf direccion rs2322 clrf intento rs232 clrf comando rs232 clrf parametro rs2321 clrf parametro rs2322 clrf paridad rs232 return ; l o compara con l a variable comando rs232

d e l MAX485 y v u e l v e a e s p e r a r un m en saje ; ; ; ; ; ; ; limpia limpia limpia limpia limpia limpia limpia variable variable variable variable variable variable variable direccion rs2321 direccion rs2322 intento rs232 comando rs232 parametro rs2321 parametro rs2322 paridad rs232

d e l R ab b i t

; Enva l a r e s p u e s t a y r e s e t e a Resetear modulo call Enviar respuesta call Reseteo goto Fin decidir respuesta ; S e t e a e l f l a g s t o p s a l i d a Parar accion bsf stop salida ,0 goto Definir accion ; S e t e a e l f l a g Activar accion clrf stop salida stop salida

e l mdulo e x t e r i o r o

en 1 ; setea primer bit de l a variable stop salida

en 0 ; limpia variable la accin o stop salida

; E n vi a l a r e s p u e s t a y d e f i n e Definir accion call Enviar respuesta call Ejecutar accion goto Fin decidir respuesta

correspondiente

; ; SUBRUTINAS PARA EL IENVO DE NOTIFICACIONES ; ; S u b r u t i n a que e n v i a un b y t e p or l a USART E n vi o movwf TXREG ; c a r a c t e r en W bsf STATUS, RP0 ; i r a l b an co 1 testeo btfss TXSTA,TRMT ; e s p e r a h a s t a c o m p l e t a r Tx , goto testeo bcf STATUS, RP0 ; i r a l b an co 0 return

testea (1)

; S u b r u t i n a que e n v i a l a n o t i f i c a c i n de p r e s e n c i a a l R ab b i t o Enviar presencia bsf PORTA, 7 ; p o n e r en 1 e l MAX485 p a r a h a b i l i t a r l a t r a n s m i s i n ( o p i n DE) movlw P ; mueve P a W call E n vi o ; en va e l i d e n t i f i c a d o r de p r e s e n c i a movf tipo modulo , 0 ; mueve t i p o m o d u l o a W call E n vi o ; en va e l t i p o m o d u l o a l r a b b i t movf numero serie ,0 ; mueve n u m e r o s e r i e a W call E n vi o ; en va e l n u m e r o s e r i e a l r a b b i t movlw 0xA ; mueve e l c a r a c t e r ASCII 1 0 a W call E n vi o ; en va e l f i n de l n e a a l r a b b i t bcf PORTA, 7 ; p o n e r en 0 e l MAX485 p a r a h a b i l i t a r l a r e c e p c i n ( o p i n DE) bsf INTCON, PEIE ; habilita ointerrupcin p eri f ri ca e goto Fin decidir respuesta ; S u b r u t i n a que e n v i a Enviar respuesta bsf PORTA, 7 p i n DE) movlw R call E n vi o movlw 0xA call E n vi o bcf PORTA, 7 p i n DE) return la notificacin o de r e s p u e s t a al R ab b i t habilitar la transmisin ( o

; p o n e r en 1 e l MAX485 p a r a

; mueve R a W ; en va e l i d e n t i f i c a d o r de r e s p u e s t a ; mueve e l c a r a c t e r ASCII 1 0 a W ; en va e l f i n de l n e a a l r a b b i t ; p o n e r en 0 e l MAX485 p a r a h a b i l i t a r

la recepcin o

; ; SUBRUTINAS QUE VERIFICAN EL ADDRESS DEL OMDULO ; ; S u b r u t i n a que v e r i f i c a Verificar address movlw 0 x30 addwf a d d r e s s d e c , 1 addwf a d d r e s s u n i , 1 el address d e l mdulo e x t e r i o r o

; suma 3 0 h a a d d r e s s d e c p a r a t r a n s f o r m a r l o en ASCII ; suma 3 0 h a a d d r e s s u n i p a r a t r a n s f o r m a r l o en ASCII

204

ANEXO C. CODIGOS FUENTES


397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 movf andlw movwf btfsc goto PORTA, 0 0xF address address , 3 fijarse resto ; s e f i j a e s t a d o de PORTA ; l i m p i a l o que no e s n e c e s a r i o ; mueve e l e s t a d o de l o s p r i m e r o s 4 p u e r t o s a a d d r e s s ; b u s c a s i e l a d d r e s s e s t e n t r e l o s p r i m e r o s 7 u nmeros a

seguir verificando addwf a d d r e s s u n i , 1 return fijarse resto movlw 0 x08 xorwf address , 0 b t f s c STATUS, 2 goto seguir verificando movlw 0 x09 xorwf address , 0 b t f s c STATUS, 2 goto seguir verificando movlw 0x0A xorwf address , 0 b t f s c STATUS, 2 call address 10 movlw 0x0B xorwf address , 0 b t f s c STATUS, 2 call address 11 movlw 0x0C xorwf address , 0 b t f s c STATUS, 2 call address 12 movlw 0x0D xorwf address , 0 b t f s c STATUS, 2 call address 13 movlw 0x0E xorwf address , 0 b t f s c STATUS, 2 call address 14 movlw 0 x0F xorwf address , 0 b t f s c STATUS, 2 call address 15 return

; suma e l

v a l o r de W a l a s

unidades

e s c r i b e un 8 en W ; l o compara con a d d r e s s

e s c r i b e un 9 en W ; l o compara con a d d r e s s

e s c r i b e un 1 0 en W ; l o compara con a d d r e s s

e s c r i b e un 1 1 en W ; l o compara con a d d r e s s

e s c r i b e un 1 2 en W ; l o compara con a d d r e s s

e s c r i b e un 1 3 en W ; l o compara con a d d r e s s

e s c r i b e un 1 4 en W ; l o compara con a d d r e s s

e s c r i b e un 1 5 en W ; l o compara con a d d r e s s

; S u b r u t i n a que e s c r i b e un 1 0 en u nmeros ASCII address 10 ; i n c r e m e n t a en 1 a d d r e s s d e c incf address dec ,1 return ; S u b r u t i n a que e s c r i b e un 1 1 en u nmeros ASCII address 11 incf address dec ,1 ; i n c r e m e n t a en 1 a d d r e s s d e c incf address uni , 1 ; i n c r e m e n t a en 1 a d d r e s s u n i return ; S u b r u t i n a que e s c r i b e un 1 2 en u nmeros ASCII address 12 incf address dec ,1 ; i n c r e m e n t a en 1 a d d r e s s d e c movlw 0 x02 addwf a d d r e s s u n i , 1 ; suma e l v a l o r de W a l a s u n i d a d e s return ; S u b r u t i n a que e s c r i b e un 1 3 en u nmeros ASCII address 13 incf address dec ,1 ; i n c r e m e n t a en 1 a d d r e s s d e c movlw 0 x03 ; suma e l v a l o r de W a l a s u n i d a d e s addwf a d d r e s s u n i , 1 return ; S u b r u t i n a que e s c r i b e un 1 4 en u nmeros ASCII address 14 incf address dec ,1 ; i n c r e m e n t a en 1 a d d r e s s d e c movlw 0 x04 ; suma e l v a l o r de W a l a s u n i d a d e s addwf a d d r e s s u n i , 1 return ; S u b r u t i n a que e s c r i b e un 1 5 en u nmeros ASCII address 15 ; i n c r e m e n t a en 1 a d d r e s s d e c incf address dec ,1 movlw 0 x05 addwf a d d r e s s u n i , 1 ; suma e l v a l o r de W a l a s u n i d a d e s return ; ; SUBRUTINAS CONCURRENTES CON LA OACCIN Y RESETEO DEL OMDULO ;

205

ANEXO C. CODIGOS FUENTES


485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 ; S u b r u t i n a que r e s e t a Reseteo bsf PORTA, 6 return e l mdulo e x t e r i o r o ; s e t e a RA6 en 1

; S u b r u t i n a que e j e c u t a l a a c c i n d e l o mdulo e x t e r i o r o Ejecutar accion movlw 0 x30 ; mueve un 3 0 h ( 0 ) a W xorwf p arametro rs2321 , 0 ; l o compara con l a v a r i a b l e b t f s c STATUS, 2 goto comparar siguiente 0 movlw 0 x31 ; mueve un 3 1 h ( 1 ) a W ; l o compara con l a v a r i a b l e xorwf p arametro rs2321 , 0 b t f s c STATUS, 2 goto comparar siguiente 1 movlw 0 x32 ; mueve un 3 2 h ( 2 ) a W xorwf p arametro rs2321 , 0 ; l o compara con l a v a r i a b l e b t f s c STATUS, 2 goto comparar siguiente 2 ; Compara e l segu n d o comparar siguiente 3 movlw 0 x30 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 30 movlw 0 x31 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 31 movlw 0 x32 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 32 Terminar ejecutar bsf INTCON, PEIE return ; Compara e l segu n d o b y t e comparar siguiente 0 movlw 0 x30 xorwf p arametro rs2322 , 0 b t f s c STATUS, 2 goto Terminar ejecutar movlw 0 x31 xorwf p arametro rs2322 , 0 b t f s c STATUS, 2 goto Accion 1 movlw 0 x32 xorwf p arametro rs2322 , 0 b t f s c STATUS, 2 goto Accion 2 movlw 0 x33 xorwf p arametro rs2322 , 0 b t f s c STATUS, 2 goto Accion 3 movlw 0 x34 xorwf p arametro rs2322 , 0 b t f s c STATUS, 2 goto Accion 4 movlw 0 x35 xorwf p arametro rs2322 , 0 b t f s c STATUS, 2 goto Accion 5 movlw 0 x36 xorwf p arametro rs2322 , 0 b t f s c STATUS, 2 goto Accion 6 movlw 0 x37 xorwf p arametro rs2322 , 0 b t f s c STATUS, 2 goto Accion 7 movlw 0 x38 xorwf p arametro rs2322 , 0 b t f s c STATUS, 2 goto Accion 8 movlw 0 x39 xorwf p arametro rs2322 , 0 b t f s c STATUS, 2 goto Accion 9 b y t e d e l p ar m et r o a s a b i e n d o que e l

parametro rs2321

parametro rs2321

parametro rs2321

p r i m e r o f u e un t r e s

,0

; mueve un 3 0 h ( 0 ) a W ; l o compara con l a

variable

parametro rs2322

,0

; mueve un 3 1 h ( 1 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 2 h ( 2 ) a W ; l o compara con l a

variable

parametro rs2321

habilita ointerrupcin p eri f ri ca e

d e l p ar m et r o a

s a b i e n d o que e l

p r i m e r o f u e un c e r o

; mueve un 3 0 h ( 0 ) a W ; l o compara con l a

variable

parametro rs2322

; no e j e c u t a r n i n gu n a a c c i n o ; mueve un 3 1 h ( 1 ) a W ; l o compara con l a v a r i a b l e

parametro rs2321

; mueve un 3 2 h ( 2 ) a W ; l o compara con l a

variable

parametro rs2321

; mueve un 3 3 h ( 3 ) a W ; l o compara con l a

variable

parametro rs2321

; mueve un 3 4 h ( 4 ) a W ; l o compara con l a

variable

parametro rs2321

; mueve un 3 5 h ( 5 ) a W ; l o compara con l a

variable

parametro rs2321

; mueve un 3 6 h ( 6 ) a W ; l o compara con l a

variable

parametro rs2321

; mueve un 3 7 h ( 7 ) a W ; l o compara con l a

variable

parametro rs2321

; mueve un 3 8 h ( 8 ) a W ; l o compara con l a

variable

parametro rs2321

; mueve un 3 9 h ( 9 ) a W ; l o compara con l a

variable

parametro rs2321

; Compara e l segu n d o b y t e d e l p ar m et r o s a b i e n d o que e l p r i m e r o f u e un uno a comparar siguiente 1 movlw 0 x30 ; mueve un 3 0 h ( 0 ) a W xorwf p arametro rs2322 , 0 ; l o compara con l a v a r i a b l e p a r a m e t r o r s 2 3 2 2 b t f s c STATUS, 2 goto Accion 10

206

ANEXO C. CODIGOS FUENTES


573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto movlw xorwf btfsc goto 0 x31 parametro STATUS, 2 Accion 11 0 x32 parametro STATUS, 2 Accion 12 0 x33 parametro STATUS, 2 Accion 13 0 x34 parametro STATUS, 2 Accion 14 0 x35 parametro STATUS, 2 Accion 15 0 x36 parametro STATUS, 2 Accion 16 0 x37 parametro STATUS, 2 Accion 17 0 x38 parametro STATUS, 2 Accion 18 0 x39 parametro STATUS, 2 Accion 19 ; mueve un 3 1 h ( 1 ) a W ; l o compara con l a

rs2322 ,0

variable

parametro rs2321

rs2322 ,0

; mueve un 3 2 h ( 2 ) a W ; l o compara con l a

variable

parametro rs2321

rs2322 ,0

; mueve un 3 3 h ( 3 ) a W ; l o compara con l a

variable

parametro rs2321

rs2322 ,0

; mueve un 3 4 h ( 4 ) a W ; l o compara con l a

variable

parametro rs2321

rs2322 ,0

; mueve un 3 5 h ( 5 ) a W ; l o compara con l a

variable

parametro rs2321

rs2322 ,0

; mueve un 3 6 h ( 6 ) a W ; l o compara con l a

variable

parametro rs2321

rs2322 ,0

; mueve un 3 7 h ( 7 ) a W ; l o compara con l a

variable

parametro rs2321

rs2322 ,0

; mueve un 3 8 h ( 8 ) a W ; l o compara con l a

variable

parametro rs2321

rs2322 ,0

; mueve un 3 9 h ( 9 ) a W ; l o compara con l a

variable

parametro rs2321

; Compara e l segu n d o comparar siguiente 2 movlw 0 x30 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 20 movlw 0 x31 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 21 movlw 0 x32 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 22 movlw 0 x33 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 23 movlw 0 x34 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 24 movlw 0 x35 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 25 movlw 0 x36 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 26 movlw 0 x37 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 27 movlw 0 x38 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 28 movlw 0 x39 xorwf p arametro rs2322 b t f s c STATUS, 2 goto Accion 29

b y t e d e l p ar m et r o a

s a b i e n d o que e l

p r i m e r o f u e un d os

,0

; mueve un 3 0 h ( 0 ) a W ; l o compara con l a

variable

parametro rs2322

,0

; mueve un 3 1 h ( 1 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 2 h ( 2 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 3 h ( 3 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 4 h ( 4 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 5 h ( 5 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 6 h ( 6 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 7 h ( 7 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 8 h ( 8 ) a W ; l o compara con l a

variable

parametro rs2321

,0

; mueve un 3 9 h ( 9 ) a W ; l o compara con l a

variable

parametro rs2321

; E j e c u t a a c c i n o n1 ( S a l i d a 1 ) o Accion 1 ; f i j a r s e si la variable btfsc stop salida ,0 goto Apagar accion 1 bsf PORTB, 0 ; P r en d e s a l i d a 1 goto Terminar ejecutar Apagar accion 1

stop salida aest

seteada

207

ANEXO C. CODIGOS FUENTES


661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 bcf goto PORTB, 0 Terminar ejecutar ; Apaga s a l i d a 1

; E j e c u t a a c c i n o n2 ( S a l i d a 2 ) o Accion 2 ; f i j a r s e si la variable btfsc stop salida ,0 goto Apagar accion 2 bsf PORTB, 4 ; P r en d e s a l i d a 2 goto Terminar ejecutar Apagar accion 2 bcf PORTB, 4 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 2

; E j e c u t a a c c i n o n3 ( S a l i d a 3 ) o Accion 3 btfsc stop salida ,0 ; f i j a r s e si la variable goto Apagar accion 3 bsf PORTB, 5 ; P r en d e s a l i d a 3 goto Terminar ejecutar Apagar accion 3 bcf PORTB, 5 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 3

; E j e c u t a a c c i n o n4 ( S a l i d a 4 ) o Accion 4 ; f i j a r s e si la variable btfsc stop salida ,0 goto Apagar accion 4 bsf PORTB, 6 ; P r en d e s a l i d a 4 goto Terminar ejecutar Apagar accion 4 bcf PORTB, 6 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 4

; E j e c u t a a c c i n o n5 ( S a l i d a 5 ) o Accion 5 ; f i j a r s e si la variable btfsc stop salida ,0 goto Apagar accion 5 bsf PORTB, 7 ; P r en d e s a l i d a 5 goto Terminar ejecutar Apagar accion 5 bcf PORTB, 7 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 5

; E j e c u t a a c c i n o n6 ( S a l i d a s 1 , 2 ) o Accion 6 btfsc stop salida ,0 ; f i j a r s e si la variable goto Apagar accion 6 bsf PORTB, 0 ; P r en d e s a l i d a 1 bsf PORTB, 4 ; P r en d e s a l i d a 2 goto Terminar ejecutar Apagar accion 6 bcf PORTB, 0 bcf PORTB, 4 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 1 ; Apaga s a l i d a 2

; E j e c u t a a c c i n o n7 ( S a l i d a s 1 , 3 ) o Accion 7 btfsc stop salida ,0 ; f i j a r s e si la variable goto Apagar accion 7 bsf PORTB, 0 ; P r en d e s a l i d a 1 bsf PORTB, 5 ; P r en d e s a l i d a 3 goto Terminar ejecutar Apagar accion 7 bcf PORTB, 0 bcf PORTB, 5 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 1 ; Apaga s a l i d a 3

; E j e c u t a a c c i n o n8 ( S a l i d a s 1 , 4 ) o Accion 8 btfsc stop salida ,0 ; f i j a r s e si la variable goto Apagar accion 8 bsf PORTB, 0 ; P r en d e s a l i d a 1 bsf PORTB, 6 ; P r en d e s a l i d a 4 goto Terminar ejecutar Apagar accion 8 bcf PORTB, 0 bcf PORTB, 6 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 1 ; Apaga s a l i d a 4

; E j e c u t a a c c i n o n9 ( S a l i d a s 1 , 5 ) o Accion 9

208

ANEXO C. CODIGOS FUENTES


749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 btfsc goto bsf bsf goto stop salida ,0 Apagar accion 9 PORTB, 0 PORTB, 7 Terminar ejecutar ; fijarse si la variable stop salida aest seteada

; P r en d e s a l i d a 1 ; P r en d e s a l i d a 5

Apagar accion 9 bcf PORTB, 0 bcf PORTB, 7 goto Terminar ejecutar

; Apaga s a l i d a 1 ; Apaga s a l i d a 5

; E j e c u t a a c c i n o n10 ( S a l i d a s 2 , 3 ) o Accion 10 btfsc stop salida ,0 ; f i j a r s e si la variable goto Apagar accion 10 bsf PORTB, 4 ; P r en d e s a l i d a 2 bsf PORTB, 5 ; P r en d e s a l i d a 3 goto Terminar ejecutar Apagar accion 10 bcf PORTB, 4 bcf PORTB, 5 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 2 ; Apaga s a l i d a 3

; E j e c u t a a c c i n o n11 ( S a l i d a s 2 , 4 ) o Accion 11 btfsc stop salida ,0 ; f i j a r s e si la variable goto Apagar accion 11 bsf PORTB, 4 ; P r en d e s a l i d a 2 bsf PORTB, 6 ; P r en d e s a l i d a 4 goto Terminar ejecutar Apagar accion 11 bcf PORTB, 4 bcf PORTB, 6 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 2 ; Apaga s a l i d a 4

; E j e c u t a a c c i n o n12 ( S a l i d a s 2 , 5 ) o Accion 12 btfsc stop salida ,0 ; f i j a r s e si la variable goto Apagar accion 12 bsf PORTB, 4 ; P r en d e s a l i d a 2 bsf PORTB, 7 ; P r en d e s a l i d a 5 goto Terminar ejecutar Apagar accion 12 bcf PORTB, 4 bcf PORTB, 7 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 2 ; Apaga s a l i d a 5

; E j e c u t a a c c i n o n13 ( S a l i d a s 3 , 4 ) o Accion 13 btfsc stop salida ,0 ; f i j a r s e si la variable goto Apagar accion 13 bsf PORTB, 5 ; P r en d e s a l i d a 3 bsf PORTB, 6 ; P r en d e s a l i d a 4 goto Terminar ejecutar Apagar accion 13 bcf PORTB, 5 bcf PORTB, 6 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 3 ; Apaga s a l i d a 4

; E j e c u t a a c c i n o n14 ( S a l i d a s 3 , 5 ) o Accion 14 btfsc stop salida ,0 ; f i j a r s e si la variable goto Apagar accion 14 bsf PORTB, 5 ; P r en d e s a l i d a 3 bsf PORTB, 7 ; P r en d e s a l i d a 5 goto Terminar ejecutar Apagar accion 14 bcf PORTB, 5 bcf PORTB, 7 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 3 ; Apaga s a l i d a 5

; E j e c u t a a c c i n o n15 ( S a l i d a s 4 , 5 ) o Accion 15 btfsc stop salida ,0 ; f i j a r s e si la variable goto Apagar accion 15 bsf PORTB, 6 ; P r en d e s a l i d a 4 bsf PORTB, 7 ; P r en d e s a l i d a 5 goto Terminar ejecutar Apagar accion 15 bcf PORTB, 6 bcf PORTB, 7 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 4 ; Apaga s a l i d a 5

209

ANEXO C. CODIGOS FUENTES


837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924

; E j e c u t a a c c i n o n16 ( S a l i d a s 1 , 2 , 3 ) o Accion 16 ; f i j a r s e si la variable btfsc stop salida ,0 goto Apagar accion 16 bsf PORTB, 0 ; P r en d e s a l i d a 1 bsf PORTB, 4 ; P r en d e s a l i d a 2 bsf PORTB, 5 ; P r en d e s a l i d a 3 goto Terminar ejecutar Apagar accion 16 bcf PORTB, 0 bcf PORTB, 4 bcf PORTB, 5 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 1 ; Apaga s a l i d a 2 ; Apaga s a l i d a 3

; E j e c u t a a c c i n o n17 ( S a l i d a s 1 , 2 , 4 ) o Accion 17 btfsc stop salida ,0 ; f i j a r s e si la variable goto Apagar accion 17 bsf PORTB, 0 ; P r en d e s a l i d a 1 bsf PORTB, 4 ; P r en d e s a l i d a 2 bsf PORTB, 6 ; P r en d e s a l i d a 4 goto Terminar ejecutar Apagar accion 17 bcf PORTB, 0 bcf PORTB, 4 bcf PORTB, 6 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 1 ; Apaga s a l i d a 2 ; Apaga s a l i d a 4

; E j e c u t a a c c i n o n18 ( S a l i d a s 1 , 2 , 5 ) o Accion 18 ; f i j a r s e si la variable btfsc stop salida ,0 goto Apagar accion 18 bsf PORTB, 0 ; P r en d e s a l i d a 1 bsf PORTB, 4 ; P r en d e s a l i d a 2 bsf PORTB, 7 ; P r en d e s a l i d a 5 goto Terminar ejecutar Apagar accion 18 bcf PORTB, 0 bcf PORTB, 4 bcf PORTB, 7 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 1 ; Apaga s a l i d a 2 ; Apaga s a l i d a 5

; E j e c u t a a c c i n o n19 ( S a l i d a s 1 , 3 , 4 ) o Accion 19 ; f i j a r s e si la variable btfsc stop salida ,0 goto Apagar accion 19 bsf PORTB, 0 ; P r en d e s a l i d a 1 bsf PORTB, 5 ; P r en d e s a l i d a 3 bsf PORTB, 6 ; P r en d e s a l i d a 4 goto Terminar ejecutar Apagar accion 19 bcf PORTB, 0 bcf PORTB, 5 bcf PORTB, 6 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 1 ; Apaga s a l i d a 3 ; Apaga s a l i d a 4

; E j e c u t a a c c i n o n20 ( S a l i d a s 1 , 3 , 5 ) o Accion 20 ; f i j a r s e si la variable btfsc stop salida ,0 goto Apagar accion 20 bsf PORTB, 0 ; P r en d e s a l i d a 1 bsf PORTB, 5 ; P r en d e s a l i d a 3 bsf PORTB, 7 ; P r en d e s a l i d a 5 goto Terminar ejecutar Apagar accion 20 bcf PORTB, 0 bcf PORTB, 5 bcf PORTB, 7 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 1 ; Apaga s a l i d a 3 ; Apaga s a l i d a 5

; E j e c u t a a c c i n o n21 ( S a l i d a s 1 , 4 , 5 ) o Accion 21 btfsc stop salida ,0 ; f i j a r s e si la variable goto Apagar accion 21 bsf PORTB, 0 ; P r en d e s a l i d a 1 bsf PORTB, 6 ; P r en d e s a l i d a 4 bsf PORTB, 7 ; P r en d e s a l i d a 5 goto Terminar ejecutar Apagar accion 21 bcf PORTB, 0 bcf PORTB, 6

stop salida aest

seteada

; Apaga s a l i d a 1 ; Apaga s a l i d a 4

210

ANEXO C. CODIGOS FUENTES


925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 bcf goto PORTB, 7 Terminar ejecutar ; Apaga s a l i d a 5

; E j e c u t a a c c i n o n22 ( S a l i d a s 2 , 3 , 4 ) o Accion 22 ; f i j a r s e si la variable btfsc stop salida ,0 goto Apagar accion 22 bsf PORTB, 4 ; P r en d e s a l i d a 2 bsf PORTB, 5 ; P r en d e s a l i d a 3 bsf PORTB, 6 ; P r en d e s a l i d a 4 goto Terminar ejecutar Apagar accion 22 bcf PORTB, 4 bcf PORTB, 5 bcf PORTB, 6 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 2 ; Apaga s a l i d a 3 ; Apaga s a l i d a 4

; E j e c u t a a c c i n o n23 ( S a l i d a s 2 , 3 , 5 ) o Accion 23 btfsc stop salida ,0 ; f i j a r s e si la variable goto Apagar accion 23 bsf PORTB, 4 ; P r en d e s a l i d a 2 bsf PORTB, 5 ; P r en d e s a l i d a 3 bsf PORTB, 7 ; P r en d e s a l i d a 5 goto Terminar ejecutar Apagar accion 23 bcf PORTB, 4 bcf PORTB, 5 bcf PORTB, 7 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 2 ; Apaga s a l i d a 3 ; Apaga s a l i d a 5

; E j e c u t a a c c i n o n24 ( S a l i d a s 2 , 4 , 5 ) o Accion 24 ; f i j a r s e si la variable btfsc stop salida ,0 goto Apagar accion 24 bsf PORTB, 4 ; P r en d e s a l i d a 2 bsf PORTB, 6 ; P r en d e s a l i d a 4 bsf PORTB, 7 ; P r en d e s a l i d a 5 goto Terminar ejecutar Apagar accion 24 bcf PORTB, 4 bcf PORTB, 6 bcf PORTB, 7 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 2 ; Apaga s a l i d a 4 ; Apaga s a l i d a 5

; E j e c u t a a c c i n o n25 ( S a l i d a s 3 , 4 , 5 ) o Accion 25 btfsc stop salida ,0 ; f i j a r s e si la variable goto Apagar accion 25 bsf PORTB, 5 ; P r en d e s a l i d a 3 bsf PORTB, 6 ; P r en d e s a l i d a 4 bsf PORTB, 7 ; P r en d e s a l i d a 5 goto Terminar ejecutar Apagar accion 25 bcf PORTB, 5 bcf PORTB, 6 bcf PORTB, 7 goto Terminar ejecutar

stop salida aest

seteada

; Apaga s a l i d a 3 ; Apaga s a l i d a 4 ; Apaga s a l i d a 5

; E j e c u t a a c c i n o n26 ( S a l i d a s 1 , 2 , 3 , 4 ) o Accion 26 btfsc stop salida ,0 ; fijarse si goto Apagar accion 26 bsf PORTB, 0 ; P r en d e bsf PORTB, 4 ; P r en d e bsf PORTB, 5 ; P r en d e bsf PORTB, 6 ; P r en d e goto Terminar ejecutar Apagar accion 26 bcf PORTB, 0 bcf PORTB, 4 bcf PORTB, 5 bcf PORTB, 6 goto Terminar ejecutar

la

variable 1 2 3 4

stop salida aest

seteada

salida salida salida salida

; ; ; ;

Apaga Apaga Apaga Apaga

salida salida salida salida

1 2 3 4

; E j e c u t a a c c i n o n27 ( S a l i d a s 1 , 2 , 3 , 5 ) o Accion 27 ; fijarse si btfsc stop salida ,0 goto Apagar accion 27 bsf PORTB, 0 ; P r en d e bsf PORTB, 4 ; P r en d e bsf PORTB, 5 ; P r en d e bsf PORTB, 7 ; P r en d e

la

variable 1 2 3 5

stop salida aest

seteada

salida salida salida salida

211

ANEXO C. CODIGOS FUENTES


1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 goto Terminar ejecutar

Apagar accion 27 bcf PORTB, 0 bcf PORTB, 4 bcf PORTB, 5 bcf PORTB, 7 goto Terminar ejecutar

; ; ; ;

Apaga Apaga Apaga Apaga

salida salida salida salida

1 2 3 5

; E j e c u t a a c c i n o n28 ( S a l i d a s 1 , 2 , 4 , 5 ) o Accion 28 ; fijarse si btfsc stop salida ,0 goto Apagar accion 28 bsf PORTB, 0 ; P r en d e bsf PORTB, 4 ; P r en d e bsf PORTB, 6 ; P r en d e bsf PORTB, 7 ; P r en d e goto Terminar ejecutar Apagar accion 28 bcf PORTB, 0 bcf PORTB, 4 bcf PORTB, 6 bcf PORTB, 7 goto Terminar ejecutar

la

variable 1 2 4 5

stop salida aest

seteada

salida salida salida salida

; ; ; ;

Apaga Apaga Apaga Apaga

salida salida salida salida

1 2 4 5

; E j e c u t a a c c i n o n29 ( S a l i d a s 1 , 3 , 4 , 5 ) o Accion 29 ; fijarse si btfsc stop salida ,0 goto Apagar accion 29 bsf PORTB, 0 ; P r en d e bsf PORTB, 5 ; P r en d e bsf PORTB, 6 ; P r en d e bsf PORTB, 7 ; P r en d e goto Terminar ejecutar Apagar accion 29 bcf PORTB, 0 bcf PORTB, 5 bcf PORTB, 6 bcf PORTB, 7 goto Terminar ejecutar

la

variable 1 3 4 5

stop salida aest

seteada

salida salida salida salida

; ; ; ;

Apaga Apaga Apaga Apaga

salida salida salida salida

1 3 4 5

; E j e c u t a a c c i n o n30 ( S a l i d a s 2 , 3 , 4 , 5 ) o Accion 30 ; fijarse si btfsc stop salida ,0 goto Apagar accion 30 bsf PORTB, 4 ; P r en d e bsf PORTB, 5 ; P r en d e bsf PORTB, 6 ; P r en d e bsf PORTB, 7 ; P r en d e goto Terminar ejecutar Apagar accion 30 bcf PORTB, 4 bcf PORTB, 5 bcf PORTB, 6 bcf PORTB, 7 goto Terminar ejecutar

la

variable 2 3 4 5

stop salida aest

seteada

salida salida salida salida

; ; ; ;

Apaga Apaga Apaga Apaga

salida salida salida salida

2 3 4 5

; E j e c u t a a c c i n o n31 ( S a l i d a s 1 , 2 , 3 , 4 , 5 ) o Accion 31 btfsc stop salida ,0 ; f i j a r s e si la variable goto Apagar accion 31 bsf PORTB, 0 ; P r en d e s a l i d a 1 bsf PORTB, 4 ; P r en d e s a l i d a 2 bsf PORTB, 5 ; P r en d e s a l i d a 3 bsf PORTB, 6 ; P r en d e s a l i d a 4 bsf PORTB, 7 ; P r en d e s a l i d a 5 goto Terminar ejecutar Apagar accion 31 bcf PORTB, 0 bcf PORTB, 4 bcf PORTB, 5 bcf PORTB, 6 bcf PORTB, 7 goto Terminar ejecutar ; E j e c u t a a c c i n o n32 ( FF) o Accion 32 goto Terminar ejecutar ; ; INICIALIZACION DE LA EEPROM ; ORG 0 x2100

stop salida aest

seteada

; ; ; ; ;

Apaga Apaga Apaga Apaga Apaga

salida salida salida salida salida

1 2 3 4 5

212

ANEXO C. CODIGOS FUENTES


1101 1102 1103 DE END 0 x00 , 0 x01 , 0 x02 , 0 x03 ; Fi n d e l programa

C.6.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78

Cdigo IrAiwa.asm o

; Filename : o b l i g a t o r i o . asm ; Date : 18/10/05 ; F il e Version : 13.0 ; ; Author : F e d e r i c o P a i s ( 1 2 7 5 5 6 ) Alan Cohn ( 1 3 7 0 3 3 ) ; Company : U n i v e r s i d a d ORT ; list p=16f628A #i n c l u d e <p16F628A . i n c > errorlevel 302 ; ; ; l i s t d i r e c t i v e to d e f i n e p r oc e ss o r processor s p e c i f i c variable d ef i ni t io n s suppress m essage 3 0 2 fr om list file

CONFIG CP OFF & DATA CP OFF & LVP OFF & BOREN OFF & MCLRE ON & WDT OFF & PWRTE ON & INTOSC OSC NOCLKOUT ; VARIABLE DEFINITIONS w temp EQU 0 x71 ; v a r i a b l e u sed f o r c o n t e x t s a v i n g s t a t u s t e m p EQU 0 x72 ; v a r i a b l e u sed f o r c o n t e x t s a v i n g veces EQU 0 x21 ; v a r i a b l e que c u e n t a i n t e r r u p c i o n e s d e l TMR0 enc1 EQU 0 x22 ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l e n c a b e z a d o IR enc2 EQU 0 x23 ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l e n c a b e z a d o IR enc3 EQU 0 x24 ; v a r i a b l e que gu ar d a e l t e r c e r b y t e d e l e n c a b e z a d o IR num1a EQU 0 x25 ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l 1 IR num1b EQU 0 x26 ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l 1 IR num2a EQU 0 x27 ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l 2 IR num2b EQU 0 x28 ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l 2 IR num3a EQU 0 x29 ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l 3 IR num3b EQU 0x2A ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l 3 IR num4a EQU 0x2B ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l 4 IR num4b EQU 0x2C ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l 4 IR num5a EQU 0x2D ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l 5 IR num5b EQU 0x2E ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l 5 IR num6a EQU 0x2F ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l 6 IR num6b EQU 0 x30 ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l 6 IR num7a EQU 0 x31 ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l 7 IR num7b EQU 0 x32 ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l 7 IR num8a EQU 0 x33 ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l 8 IR num8b EQU 0 x34 ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l 8 IR num9a EQU 0 x35 ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l 9 IR num9b EQU 0 x36 ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l 9 IR num0a EQU 0 x37 ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l 0 IR num0b EQU 0 x38 ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l 0 IR playa EQU 0 x39 ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l PLAY IR playb EQU 0x3A ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l PLAY IR repeata EQU 0x3B ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l REPEAT IR repeatb EQU 0x3C ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l REPEAT IR memorya EQU 0x3D ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l MEMORY IR memoryb EQU 0 x3E ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l MEMORY IR cancela EQU 0 x3F ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l CANCEL IR cancelb EQU 0 x40 ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l CANCEL IR surrounda EQU 0 x41 ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l SURROUND IR surroundb EQU 0 x42 ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l SURROUND IR sbacka EQU 0 x43 ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l SKIP BACK IR sb ackb EQU 0 x44 ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l SKIP BACK IR sforwarda EQU 0 x45 ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l SKIP FORWARD IR sforwardb EQU 0 x46 ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l SKIP FORWARD IR stopa EQU 0 x47 ; v a r i a b l e que gu ar d a e l p r i m e r b y t e d e l STOP IR stopb EQU 0 x48 ; v a r i a b l e que gu ar d a e l segu n d o b y t e d e l STOP IR contador EQU 0 x49 ; v a r i a b l e que c u e n t a l a s v e c e s que s e r o t a un b y t e aux EQU 0x4A ; v a r i a b l e que gu ar d a e l b y t e IR a t r a s m i t i r dato EQU 0x4B ; v a r i a b l e u sad a p a r a g u a r d a r e l d a t o r e c i b i d o p or l a UART flag EQU 0x4C ; v a r i a b l e que a v i s a cuando s e p r o d u c e una i n t de Rx b u scad o EQU 0x4D ; v a r i a b l e que a v i s a cuando s e t r a n s m i t i o un c o d i g o v a l i d o ; ORG goto ORG 0 x000 main 0 x004 ; processor reset ; go t o b e g i n n i n g ; interrupt vector vector o f program location

; ; MANEJADOR DE INTERRUPCIONES ; ; save o f f c u r r e n t W re g i ste r c o n t e n t s movwf w temp movf STATUS, w ; move s t a t u s r e g i s t e r i n t o W r e g i s t e r movwf s t a t u s t e m p ; s a v e o f f c o n t e n t s o f STATUS r e g i s t e r

213

ANEXO C. CODIGOS FUENTES


79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 btfsc INTCON, 2 goto isrT0 b t f s c PIR1 , RCIF goto ISR RX fin isr movf status temp ,w movwf STATUS swap f w temp , f swap f w temp , w retfie ; ISR t i m e r 0 isrT0 movlw d 205 movwf TMR0 ; bcf INTCON, 2 ; se incf veces , 1 ; goto fin isr ; TMR0 i n t e r r u m p i o ? ; RX i n t e r r u m p i o ?

; ;

r e t r i e v e cop y o f STATUS r e g i s t e r r e s t o r e p r e i s r STATUS r e g i s t e r c o n t e n t s contents

; r e s t o r e p r e i s r W r e g i s t e r ; return from i n t e r r u p t

; cuenta 50 microseg s e e s c r i b e e l r e g i s t r o TMR0 b o r r a e l TOIF incrementa v a r i a b l e veces

; ISR o r e c e p c i n USART ISR RX bsf flag ,0 ; s e t e a e l b i t 0 en 1 movf RCREG,W ; l e e l o que l l e g a y l o gu ar d a en W movwf d a t o goto fin isr ; ; PROGRAMA PRINCIPAL ; main ; I n i c i a l i z a c i o n movlw 0 x21 movwf FSR otro clrf INDF incf FSR, 1 movlw 0x4C x o r w f FSR, 0 b t f s s STATUS, 2 goto otro de v a r i a b l e s ; e s c r i b e 2 1 h en W

borra

l a d i r e c c i n de memoria que e s t en INDF o a

; e s c r i b e 4 Ch en W ; compara que s e hayan b o r r a d o

todas

las

d i r e c c i o n e s de memoria

; L e c t u r a de l a EEPROM y gu ar d ad o en l a RAM movlw 0 x04 ; e s c r i b e un 4 h en W movwf aux movlw 0 x22 ; e s c r i b e un 2 2 h en W movwf FSR otros movf aux , 0 ; mueve e l c o n t e n i d o de aux a W call eeprom rd movwf INDF incf FSR, 1 incf aux , 1 movlw 0 x49 ; comprueba que s e hayan gu ar d ad o t o d o s x o r w f FSR, 0 b t f s s STATUS, 2 goto otros

los

datos

Seteos ; S e t e o d e l modulo P M W clrf CCP1CON ; s e l i m p i a e l r e g i s t r o CCP1CON bsf STATUS, RP0 ; i r a l b an co 1 movlw d 26 ; s e t e a d e l p e r i o d o d e l P M a 3 8KHz W movwf PR2 ; s e e s c r i b e e l PR2 bcf TRISB , 3 ; s e h a c e e l p i n CCP1 de s a l i d a l i m p i a n d o bcf STATUS, RP0 ; i r a l b an co 0 movlw 0xD ; s e t e a d e l c i c l o de t r a b a j o d e l P M a l 50 % W movwf CCPR1L ; s e e s c r i b e e l CCPR1L movlw b 00000100 ; s e t e o s d e l TMR2 ON y l a p r e e s c a l a 1 : 1 movwf T2CON ; s e e s c r i b e e l r e g i s t r o T2CON ; S e t e o d e l TMR0 clrwdt ; s e l i m p i a e l WDT clrf TMR0 ; s e l i m p i a e l r e g i s t r o TMR0 movlw d 205 ; cuenta 50 microseg movwf TMR0 ; s e e s c r i b e e l r e g i s t r o TMR0 movlw b 00001000 ; s e t e a l a c u e n t a d e l TMR0 bsf STATUS, RP0 ; i r a l b an co 1 movwf OPTION REG ; s e e s c r i b e e l OPTION REG ; S e t e o d e l p e r i f e r i c o RS232 movlw d 25 ; 9 6 0 0 b a u d i o s ( 4 MHz, BRGH=1) movwf SPBRG movlw b 00100100 movwf TXSTA bcf STATUS, RP0 ; i r a l b an co 0 movlw b 10010000 ; SPEN= 1 , CREN=1

e l TRISB<3>

214

ANEXO C. CODIGOS FUENTES


167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 movwf RCSTA movf RCREG,W movf RCREG,W ; h a b i l i t a e l puerto s e r i e y la recepcion continua ; l e e 2 v e c e s e l RCREG p or s i h a b i a b a s u r a

; S e t e o s de p u e r t o s de I /O movlw 0 x20 ; pone un 3 2 en W movwf TRISA ; PORTA p u e r t o de s a l i d a , RA5 e n t r a d a bsf TRISB , 1 ; s e t e a RB1/Rx como p i n de e n t r a d a bcf STATUS, RP0 ; i r a l b an co 0 movlw 0 x7 ; ap aga c o m p a r a d o r e s movwf CMCON ; H a b i l i t a c i o n de i n t e r r u p c i o n e s bsf INTCON, 7 ; h a b i l i t a l a s i n t e r r u p c i o n e s GIE bsf INTCON, 5 ; h a b i l i t a l a i n t e r r u p c i o n d e l TMR0 bsf INTCON, PEIE ; ha bili ta interrupcion p e ri fe r i c a bsf STATUS, RP0 ; i r a l b an co 1 bsf PIE1 , RCIE ; h a b i l i t a i n t e r r u p c i o n de r e c e p c i o n de USART bcf STATUS, RP0 ; i r a l b an co 0 call envioRS232 start

loop principal btfsc flag ,0 call Recibir goto loop principal

; Rx i n t e r r u m p i o ? ; loop forever

; ; SUBRUTINAS PARA LA TRASMISION IR ; ; S u b r u t i n a que d e c i d e que c o d i g o IR e n v i a r Recibir movlw 0 x30 ; e s c r i b e un 0 en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito 0 movlw 0 x31 ; e s c r i b e un 1 en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito 1 movlw 0 x32 ; e s c r i b e un 2 en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito 2 movlw 0 x33 ; e s c r i b e un 3 en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito 3 movlw 0 x34 ; e s c r i b e un 4 en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito 4 movlw 0 x35 ; e s c r i b e un 5 en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito 5 movlw 0 x36 ; e s c r i b e un 6 en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito 6 movlw 0 x37 ; e s c r i b e un 7 en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito 7 movlw 0 x38 ; e s c r i b e un 8 en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito 8 movlw 0 x39 ; e s c r i b e un 9 en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito 9 movlw 0 x70 ; e s c r i b e una p en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito play movlw 0 x50 ; e s c r i b e una P en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito play movlw 0 x72 ; e s c r i b e una r en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito repeat movlw 0 x52 ; e s c r i b e una R en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2

215

ANEXO C. CODIGOS FUENTES


255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 call transmito repeat movlw 0x6D ; e s c r i b e una m en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call t r an sm i t o m em or y movlw 0x4D ; e s c r i b e una M en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call t r an sm i t o m em or y movlw 0 x63 ; e s c r i b e una c en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito cancel movlw 0 x43 ; e s c r i b e una C en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito cancel movlw 0 x64 ; e s c r i b e una d en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito surround movlw 0 x44 ; e s c r i b e una D en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito surround movlw 0 x62 ; e s c r i b e una b en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito back movlw 0 x42 ; e s c r i b e una B en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito back movlw 0 x66 ; e s c r i b e una f en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito forward movlw 0 x46 ; e s c r i b e una F en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito forward movlw 0 x73 ; e s c r i b e una s en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito stop movlw 0 x53 ; e s c r i b e una S en c o d i g o ASCII en W xorwf d at o , 0 ; l o compara con e l d a t o r e c i b i d o b t f s c STATUS, 2 call transmito stop movlw 0 x01 ; e s c r i b e un 1 h en W x o r w f b u scad o , 0 ; l o compara con e l f l a g b u scad o b t f s s STATUS, 2 call envioRS232 error clrf b u scad o return ; S u b r u t i n a que t r a n s m i t e e l i n i c i o ms e l e n c a b e z a d o a transmitir inicial bcf INTCON, PEIE ; deshabilita interrupcion p er i f e r i c a call convertir ini movf en c1 , 0 ; mueve e n c 1 a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf en c2 , 0 ; mueve e n c 2 a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf en c3 , 0 ; mueve e n c 3 a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir clrf contador call convertir enc fin return ; S u b r u t i n a que t r a n s m i t e e l c d i g o de d a t o s c o r r e s p o n d i e n t e o transmito 0 call transmitir inicial movf num0a , 0 ; mueve num0a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf num0b , 0 ; mueve num0b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin al cero

216

ANEXO C. CODIGOS FUENTES


343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 call envioRS232 num return ; S u b r u t i n a que t r a n s m i t e e l c d i g o de d a t o s c o r r e s p o n d i e n t e o transmito 1 call transmitir inicial movf num1a , 0 ; mueve num1a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf num1b , 0 ; mueve num1b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin call envioRS232 num return ; S u b r u t i n a que t r a n s m i t e e l c d i g o de d a t o s c o r r e s p o n d i e n t e o transmito 2 call transmitir inicial movf num2a , 0 ; mueve num2a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf num2b , 0 ; mueve num2b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin call envioRS232 num return ; S u b r u t i n a que t r a n s m i t e e l c d i g o de d a t o s c o r r e s p o n d i e n t e o transmito 3 call transmitir inicial movf num3a , 0 ; mueve num3a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf num3b , 0 ; mueve num3b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin call envioRS232 num return ; S u b r u t i n a que t r a n s m i t e e l c d i g o de d a t o s c o r r e s p o n d i e n t e o transmito 4 call transmitir inicial movf num4a , 0 ; mueve num4a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf num4b , 0 ; mueve num4b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin call envioRS232 num return ; S u b r u t i n a que t r a n s m i t e e l c d i g o de d a t o s c o r r e s p o n d i e n t e o transmito 5 call transmitir inicial movf num5a , 0 ; mueve num5a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf num5b , 0 ; mueve num5b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin call envioRS232 num return ; S u b r u t i n a que t r a n s m i t e e l c d i g o de d a t o s c o r r e s p o n d i e n t e o transmito 6 call transmitir inicial movf num6a , 0 ; mueve num6a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf num6b , 0 ; mueve num6b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador a l uno

al

d os

al

tres

al

cuatro

al

cinco

al

seis

217

ANEXO C. CODIGOS FUENTES


431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 call convertir ir call convertir fin call envioRS232 num return ; S u b r u t i n a que t r a n s m i t e e l c d i g o de d a t o s c o r r e s p o n d i e n t e o transmito 7 call transmitir inicial movf num7a , 0 ; mueve num7a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf num7b , 0 ; mueve num7b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin call envioRS232 num return ; S u b r u t i n a que t r a n s m i t e e l c d i g o de d a t o s c o r r e s p o n d i e n t e o transmito 8 call transmitir inicial movf num8a , 0 ; mueve num8a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf num8b , 0 ; mueve num8b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin call envioRS232 num return ; S u b r u t i n a que t r a n s m i t e e l c d i g o de d a t o s c o r r e s p o n d i e n t e o transmito 9 call transmitir inicial movf num9a , 0 ; mueve num9a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf num9b , 0 ; mueve num9b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin call envioRS232 num return ; S u b r u t i n a que t r a n s m i t e e l c d i g o de d a t o s c o r r e s p o n d i e n t e o transmito play call transmitir inicial movf playa , 0 ; mueve p l a y a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf p l ayb , 0 ; mueve p l a y b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin call envioRS232 play return ; S u b r u t i n a que t r a n s m i t e e l c d i g o de d a t o s c o r r e s p o n d i e n t e o transmito repeat call transmitir inicial movf repeata ,0 ; mueve r e p e a t a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf repeatb , 0 ; mueve r e p e a t b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin call envioRS232 repeat return ; S u b r u t i n a que t r a n s m i t e e l c d i g o de d a t o s c o r r e s p o n d i e n t e o t r an sm i t o m em or y call transmitir inicial movf memorya , 0 ; mueve memorya a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf memoryb , 0 ; mueve memoryb a W al siete

al

och o

al

n u eve

al

play

al

repeat

a l memory

218

ANEXO C. CODIGOS FUENTES


519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin call envioRS232 memory return ; S u b r u t i n a que t r a n s m i t e e l c d i g o de d a t o s c o r r e s p o n d i e n t e o transmito cancel call transmitir inicial movf cancela ,0 ; mueve c a n c e l a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf cancelb ,0 ; mueve c a n c e l b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin call envioRS232 cancel return ; S u b r u t i n a que t r a n s m i t e e l c d i g o de d a t o s c o r r e s p o n d i e n t e o transmito surround call transmitir inicial movf surrounda , 0 ; mueve s u r r o u n d a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf su r r ou n d b , 0 ; mueve s u r r o u n d b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin call envioRS232 surround return ; S u b r u t i n a que t r a n s m i t e e l c d i g o de d a t o s c o r r e s p o n d i e n t e o transmito back call transmitir inicial movf sb acka , 0 ; mueve s b a c k a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf sb ackb , 0 ; mueve sb ackb a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin call envioRS232 back return ; S u b r u t i n a que t r a n s m i t e e l c d i g o de d a t o s c o r r e s p o n d i e n t e o transmito forward call transmitir inicial movf sforwarda , 0 ; mueve s f o r w a r d a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf sforwardb , 0 ; mueve s f o r w a r d b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin call envioRS232 forward return ; S u b r u t i n a que t r a n s m i t e e l c d i g o de d a t o s c o r r e s p o n d i e n t e o transmito stop call transmitir inicial movf stopa , 0 ; mueve s t o p a a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir movf st op b , 0 ; mueve s t o p b a W movwf aux ; mueve e l c o n t e n i d o de W a aux clrf contador ; se l i m p i a l a v a r i a b l e contador call convertir ir call convertir fin call envioRS232 stop return ; S u b r u t i n a que p r e n d e l a convertir ir clrf veces call pwm on call cuenta 11 call p wm off s a l i d a P M usegn W el bit d e l c d i g o IR o al cancel

al

surround

al

s k i p b ack

al

skip

forward

al

stop

219

ANEXO C. CODIGOS FUENTES


607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 clrf veces btfsc aux , 7 call cuenta 11 btfss aux , 7 call cuenta 33 rlf aux , 1 incf contador , 1 btfsc contador , 3 return goto convertir ir

; ; ; ;

se se

fija fija

si si

el el

b i t 7 e s un c e r o b i t 7 e s un uno

r o t a a l a i z q u i e r d a l a v a r i a b l e aux incrementa contador ; s e f i j a s i c o n t a d o r e s t en 8 a

; S u b r u t i n a que p r e n d e l a convertir ini clrf veces call pwm on call cuenta 180 call p wm off clrf veces call cuenta 90 return ; S u b r u t i n a que t i r a convertir fin clrf veces call pwm on call cuenta 11 call p wm off clrf veces call cuenta 11 bsf b u scad o , 0 return el

s a l i d a P M para l a W

s e c u e n c i a de

inicio

b i t de p ar ad a

; prende f l a g

b u scad o

; S u b r u t i n a que t i r a l o s u 2 l t i m o s b i t s d e l e n c a b e z a d o convertir enc fin clrf veces call pwm on call cuenta 11 call p wm off clrf veces call cuenta 33 incf contador , 1 ; incrementa contador b t f s c contador , 1 ; s e f i j a s i c o n t a d o r e s t en 2 a return goto convertir enc fin ; S u b r u t i n a que pwm on movlw b 00001100 movwf CCP1CON return ; S u b r u t i n a que p wm off movlw b 00000000 movwf CCP1CON return habilita la s a l i d a CCP1

; s e l e c c i n d e l modo P M o W ; s e e s c r i b e e l r e g i s t r o CCP1CON

deshabilita ; ; se se

la

s a l i d a CCP1

d e s a c t i v a e l modo P M W e s c r i b e e l r e g i s t r o CCP1CON

; ; SUBRUTINAS PARA LA TRASMISION RS232 ; ; S u b r u t i n a que e n v i a envio movwf TXREG bsf STATUS, RP0 testeo btfss TXSTA,TRMT goto testeo bcf STATUS, RP0 return ; S u b r u t i n a que e n v i a envioRS232 start movlw call envio movlw O call envio movlw N call envio movlw call envio movlw 0xA call envio movlw 0xD call envio clrf flag return al p u e r t o RS232 l o que me l l e g o ; ir c a r a c t e r en W a l b an co 1 ; ; ir espera h a s t a c o m p l e t a r Tx , testea (1)

a l b an co 0

al

p u e r t o RS232 un s a l u d o

220

ANEXO C. CODIGOS FUENTES


695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 ; S u b r u t i n a que e n v i a envioRS232 num movlw N call envio movlw U call envio movlw M call envio movf d at o , 0 call envio movlw 0xA call envio movlw 0xD call envio clrf dato clrf flag bsf INTCON, PEIE return al p u e r t o RS232 un numero

habilita

interrupcion

periferica

; S u b r u t i n a p a r a e n v i a r envioRS232 play movlw P call envio movlw L call envio movlw A call envio movlw Y call envio movlw 0xA call envio movlw 0xD call envio clrf dato clrf flag bsf INTCON, PEIE return ; S u b r u t i n a p a r a e n v i a r envioRS232 repeat movlw R call envio movlw E call envio movlw P call envio movlw T call envio movlw 0xA call envio movlw 0xD call envio clrf dato clrf flag bsf INTCON, PEIE return ; S u b r u t i n a p a r a e n v i a r envioRS232 memory movlw M call envio movlw E call envio movlw M call envio movlw O call envio movlw 0xA call envio movlw 0xD call envio clrf dato clrf flag bsf INTCON, PEIE return ; S u b r u t i n a p a r a e n v i a r envioRS232 cancel movlw C call envio movlw N call envio movlw C call envio movlw L call envio movlw 0xA call envio

al

p u e r t o RS232 p l a y

habilita

interrupcion

periferica

al

p u e r t o RS232 r e p e a t

habilita

interrupcion

periferica

al

p u e r t o RS232 memory

habilita

interrupcion

periferica

al

p u e r t o RS232 c a n c e l

221

ANEXO C. CODIGOS FUENTES


783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 movlw 0xD call envio clrf dato clrf flag bsf INTCON, PEIE return ; S u b r u t i n a p a r a e n v i a r envioRS232 surround movlw S call envio movlw R call envio movlw N call envio movlw D call envio movlw 0xA call envio movlw 0xD call envio clrf dato clrf flag bsf INTCON, PEIE return ; S u b r u t i n a p a r a e n v i a r envioRS232 back movlw S call envio movlw S call envio movlw B call envio movlw K call envio movlw 0xA call envio movlw 0xD call envio clrf dato clrf flag bsf INTCON, PEIE return ; S u b r u t i n a p a r a e n v i a r envioRS232 forward movlw S call envio movlw S call envio movlw F call envio movlw D call envio movlw 0xA call envio movlw 0xD call envio clrf dato clrf flag bsf INTCON, PEIE return ; S u b r u t i n a p a r a e n v i a r envioRS232 stop movlw S call envio movlw T call envio movlw O call envio movlw P call envio movlw 0xA call envio movlw 0xD call envio clrf dato clrf flag bsf INTCON, PEIE return ; S u b r u t i n a p a r a e n v i a r envioRS232 error bcf INTCON, PEIE movlw E call envio

habilita

interrupcion

periferica

al

p u e r t o RS232 s u r r o u n d

habilita

interrupcion

periferica

al

p u e r t o RS232 b ack

habilita

interrupcion

periferica

al

p u e r t o RS232 f o r w a r d

habilita

interrupcion

periferica

al

p u e r t o RS232 s t o p

habilita

interrupcion

periferica

al ;

p u e r t o RS232 e r r o r deshabilita interrupcion periferica

222

ANEXO C. CODIGOS FUENTES


871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 movlw R call envio movlw R call envio movlw R call envio movlw 0xA call envio movlw 0xD call envio clrf dato clrf flag bsf INTCON, PEIE return

habilita

interrupcion

periferica

; ; SUBRUTINAS QUE INSUMEN TIEMPOS ; ; S u b r u t i n a que c u e n t a 1 1 i n t e r r u p c i o n e s d e l TMR0( 0 . 5 5 mseg ) cuenta 11 movlw 0xB ; e s c r i b e un 1 1 en W xorwf veces , 0 ; compara v e c e s con 1 1 b t f s c STATUS, 2 return goto cuenta 11 ; S u b r u t i n a que c u e n t a 3 3 i n t e r r u p c i o n e s d e l TMR0( 1 . 6 5 mseg ) cuenta 33 movlw 0 x21 ; e s c r i b e un 3 3 en W xorwf veces , 0 ; compara v e c e s con 3 3 b t f s c STATUS, 2 return goto cuenta 33 ; S u b r u t i n a que c u e n t a 9 0 i n t e r r u p c i o n e s d e l TMR0( 4 . 5 mseg ) cuenta 90 movlw 0x5A ; e s c r i b e un 9 0 en W xorwf veces , 0 ; compara v e c e s con 9 0 b t f s c STATUS, 2 return goto cuenta 90 ; S u b r u t i n a que c u e n t a 1 8 0 i n t e r r u p c i o n e s d e l TMR0( 9 . 0 mseg ) cuenta 180 movlw 0xB4 ; e s c r i b e un 1 8 0 en W xorwf veces , 0 ; compara v e c e s con 1 8 0 b t f s c STATUS, 2 return goto cuenta 180 ; ; SUBRUTINAS PARA EL TRABAJO EN LA MEMORIA ; ; S u b r u t i n a que l e e d a t o s de l a EEPROM eeprom rd bsf STATUS, RP0 ; i r a l b an co 1 movwf EEADR ; s e e s c r i b e e l d a t o en l a bsf EECON1, 0 ; s e pone a 1 e l RD nop movf EEDATA, 0 ; s e e s c r i b e e l d a t o en W bcf STATUS, RP0 ; i r a l b an co 0 return

direccion 4h

; ; INICIALIZACION DE LA EEPROM ; ORG 0 x2100 DE 0 x00 , 0 x01 , 0 x02 , 0 x03 , 0 xF1 , 0 xF8 , 0 x70 , 0 x76 , 0 x89 , 0 xB6 , 0 x49 , 0 x36 , 0 xC9 , 0 xD6 , 0 x29 , 0 x56 , 0 xA9 , 0 x96 DE 0 x69 , 0 x16 , 0 xE9 , 0 xE6 , 0 x19 , 0 x66 , 0 x99 , 0 xA6 , 0 x59 , 0 xDC, 0 x23 , 0 x75 , 0 x8A , 0 xB5 , 0 x4A , 0 x35 , 0 xCA , 0 xF8 DE 0 x07 , 0 x1C , 0 xE3 , 0 x9C , 0 x63 , 0 x5C , 0 xA3 END ; Fi n d e l programa

C.7.
1 2 3 4 5 6 #c l a s s auto

Cdigo ArquitecturaRabbit.c o
// E t h e r n e t h a b i l i t a d o , PPP d e s a b i l i t a d o , // DHCP d e s a b i l i t a d o , Runtime d i s a b l e 1

#de fi ne TCPCONFIG 1 #de fi ne USE ETHERNET

223

ANEXO C. CODIGOS FUENTES


7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

/ S e c c i o n de c o n f i g u r a c i n o Todos l o s campos de e s t a s e c c i o n d e b e s s e r a l t r a d o s de a c u e r d o l a c o n f i g u r a c i o n de l a r e d l o c a l / / M ir a r LIB \TCPIP\TCP CONFIG . LIB p a r a de como s e t e r a r l a c o n f i g u r a c i o n . / #de fi ne TCP BUF SIZE 2 0 4 8 / Configuracion /

obtener

instruciones

del

s e r v i d o r Web

/ D e f i n e e l numero de HTTP s e r v e r s y l o s s o c k e t b u f f e r s . Con t c p r e s e r v e p o r t ( ) , menos l o s s e r v i d o r e s HTTP s e r v e r s / #de fi ne HTTP MAXSERVERS 1 #de fi ne MAX TCP SOCKET BUFFERS 1

que sean

necesarios .

#de fi ne REDIRECTHOST //#d e f i n e REDIRECTHOST

PRIMARY STATIC IP p r o x y . domain . com : 1 2 1 2

/ Fin de l a s e c c i o n de c o n f i g u r a t i o n / #de fi ne REDIRECTTO #de fi ne REGISTERFORM h t t p : / / REDIRECTHOST h t t p : / / REDIRECTHOST / r e g i s t e r . html

#de fi ne #de fi ne #de fi ne #de fi ne

FROM a c @ n e t g a t e . com . uy TO r ossan am @ gm ai l . com SUBJECT P r o c e s a d o r M u l t i p r o t o c o l a r BODY Se e j e c u t o l a a c c i o n e s p o r a d i c a

#de fi ne SMTP SERVER smtp . n e t g a t e . com . uy #de fi ne MY IP ADDRESS #de fi ne MY NETMASK #de fi ne MY GATEWAY #de fi ne MY NAMESERVER #de fi ne SMTP DEBUG 192.168.1.102 255.255.255.0 192.168.1.1 192.168.1.1

# memmap xmem #u s e d c r t c p . l i b #u s e h t t p . l i b #u s e smtp . l i b #x i m p o r t Documents and form . html #x i m p o r t Documents and i n t e r f a c e . shtml #x i m p o r t Documents and titulorabbit . gif #x i m p o r t Documents and ledprendido . g i f #x i m p o r t Documents and ledapagado . g i f #x i m p o r t Documents and b ot on . g i f #x i m p o r t Documents and showsrc . shtml #x i m p o r t Documents and ConfigBotones . c S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / reg form S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / index html S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / titulorabbit gif S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / ledon gif S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / ledoff gif S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / boton gif S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / showsrc shtml S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / ssi c

SSPEC MIMETABLE START SSPEC MIME FUNC( . s h t m l , t e x t / html , s h t m l h a n d l e r ) , SSPEC MIME ( . html , t e x t / html ) , SSPEC MIME ( . g i f , i m age / g i f ) , SSPEC MIME ( . c g i , ) SSPEC MIMETABLE END

224

ANEXO C. CODIGOS FUENTES


87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 #de fi ne MAX FORMSIZE 64 typedef s t r u c t { char name ; char v a l u e [ MAX FORMSIZE ] ; } FORMType ; FORMType FORMSpec [ 2 ] ; char char char char led1 led2 led3 led4 [15]; [15]; [15]; [15];

/ The a u d i t l i s t g u a r d a l o s u l t i m o s NUM ENTRIES c a m b i a d o / 16 #de fi ne NUM ENTRIES typedef s t r u c t { char who [HTTP MAXNAME] ; char wh i ch ; / c u a l LED c a m b i o / char l e d 1 ; / a c t u a l i z a e s t a d o de t o d o s l o s LEDs / char l e d 2 ; char l e d 3 ; char l e d 4 ; } AUDITLine ; AUDITLine a u d i t l i s t [ NUM ENTRIES ] ; int c u r r e n t l i n e ; char g e t l e d s t a t u s ( char l e d ) { i f ( st r cm p ( l e d , l e d p r e n d i d o . g i f ) ==0) return 1 ; else return 0 ; } void A u d i t I n i t L i n e ( AUDITLine { line >who [ 0 ] = \0 ; line ed1 = g e t l e d s t a t u s >l line ed2 = g e t l e d s t a t u s >l line ed3 = g e t l e d s t a t u s >l line ed4 = g e t l e d s t a t u s >l } line )

del

sitio

( led1 ) ( led2 ) ( led3 ) ( led4 )

; ; ; ;

void A u d i t I n i t ( void ) { auto i n t i ; f o r ( i =0; i <NUM ENTRIES ; i ++) { A u d i t I n i t L i n e(& a u d i t l i s t [ i ] ) ; } cur r en t l ine = 0; } int { a u d i t l i s t p r i n t ( HttpState s t a t e ) auto i n t p r i n t l i n e ; auto AUDITLine p ; i f ( s t a t e u b s t a t e >= NUM ENTRIES ) >s return 1 ; >s p r in t li ne = c ur r e nt lin e state ubstate ; i f ( p r i n t l i n e < 0) p r i n t l i n e += NUM ENTRIES ;

p = & audit list [ printline ] ; i f ( \0 == p >who [ 0 ] ) { s t a t e u b s t a t e ++; >s return 0 ; } sp r in t f ( state >b u f f e r , <t r > <td> % </td> s <td>l e d % d</td> <td> % % % % c c c c</td></t r >\r \n , p >who , p >which , 1 == p e d 1 ? O : X , >l 1 == p e d 2 ? O : X , >l 1 == p e d 3 ? O : X , >l 1 == p e d 4 ? O : X >l ); state >h e a d e r l e n = s t r l e n ( s t a t e >b u f f e r ) ; state >h e a d e r o f f = 0 ; s t a t e u b s t a t e ++; >s return 0 ; }

225

ANEXO C. CODIGOS FUENTES


175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 void a d d a u d i t ( H t t p S t a t e s t a t e , char wh i ch ) { auto s t r u c t s o c k a d d r s o c k a d d r ; c u r r e n t l i n e ++; i f ( c u r r e n t l i n e >= NUM ENTRIES) cu rr en t lin e = 0; A u d i t I n i t L i n e(& a u d i t l i s t [ c u r r e n t l i n e ] ) ; a u d i t l i s t [ c u r r e n t l i n e ] . wh i ch = wh i ch ; s t r c p y ( a u d i t l i s t [ c u r r e n t l i n e ] . who , } state ookie ) ; >c

/ En v e z de e n v i a r o t r o t e x t o h a c i a a t r a s d e s d e e l cgi , se r e d i r i g e a la pagina p r i n c i p a l / int { l e d 1 t o g g l e ( HttpState s t a t e ) i f ( \0 == s t a t e o o k i e [ 0 ] ) { >c c g i r e d i r e c t t o ( s t a t e ,REGISTERFORM) ; return 0 ; } ( st r cm p ( l e d 1 , l e d p r e n d i d o . g i f ) ==0) s t r c p y ( led1 , ledapagado . g i f ) ; else s t r c p y ( led1 , ledprendido . g i f ) ; add audit ( state , 1 ) ; c g i r e d i r e c t t o ( s t a t e , REDIRECTTO) ; return 0 ; } int { l e d 2 t o g g l e ( HttpState s t a t e ) i f ( \0 == s t a t e o o k i e [ 0 ] ) { >c c g i r e d i r e c t t o ( s t a t e ,REGISTERFORM) ; return 0 ; } i f ( st r cm p ( l e d 2 , l e d p r e n d i d o . g i f ) ==0) s t r c p y ( led2 , ledapagado . g i f ) ; else s t r c p y ( led2 , ledprendido . g i f ) ; add audit ( state , 2 ) ; if

c g i r e d i r e c t t o ( s t a t e , REDIRECTTO) ; return 0 ; } int { l e d 3 t o g g l e ( HttpState s t a t e ) i f ( \0 == s t a t e o o k i e [ 0 ] ) { >c c g i r e d i r e c t t o ( s t a t e ,REGISTERFORM) ; return 0 ; } i f ( st r cm p ( l e d 3 , l e d p r e n d i d o . g i f ) ==0) s t r c p y ( led3 , ledapagado . g i f ) ; else s t r c p y ( led3 , ledprendido . g i f ) ; add audit ( state , 3 ) ; c g i r e d i r e c t t o ( s t a t e , REDIRECTTO) ; return 0 ; } int { l e d 4 t o g g l e ( HttpState s t a t e ) i f ( \0 == s t a t e o o k i e [ 0 ] ) { >c c g i r e d i r e c t t o ( s t a t e ,REGISTERFORM) ; return 0 ; } ( st r cm p ( l e d 4 , l e d p r e n d i d o . g i f ) ==0) s t r c p y ( led4 , ledapagado . g i f ) ; else s t r c p y ( led4 , ledprendido . g i f ) ; add audit ( state , 4 ) ; if

226

ANEXO C. CODIGOS FUENTES


263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349

c g i r e d i r e c t t o ( s t a t e , REDIRECTTO) ; return 0 ; } / p a r s e a r l a i n f o r m a c i o n de de p o s t a l a e s t r u c t u r a FORMspec / int p a r s e p o s t ( HttpState s t a t e ) { auto i n t r e t v a l ; auto i n t i ; // s t a t e >s e s l a e s t r u c t u r a // HT T P st at e b u f f e r del socket y state >p e s un p u n t e r o al

r e t v a l = s o c k a r e a d (& s t a t e >s , s t a t e >p , ( s t a t e o n t e n t l e n g t h < HTTP MAXBUFFER1) ? >c ( i n t ) s t a t e o n t e n t l e n g t h : HTTP MAXBUFFER1) ; >c i f ( r e t v a l < 0) { // E r r o r return 1 ; } // Uso d e l s u b s u b s t a t e p a r a no p e r d e r de s t a t e u b s u b s t a t e += r e t v a l ; >s if vista la cantidad de datos recibidos

( s t a t e u b s u b s t a t e >= s t a t e o n t e n t l e n g t h ) { >s >c state >b u f f e r [ ( i n t ) s t a t e o n t e n t l e n g t h ] = \0 ; >c f o r ( i = 0 ; i <( s i z e o f ( FORMSpec ) / s i z e o f (FORMType) ) ; i ++) { >b u f f e r , FORMSpec [ i ] . v a l u e , h t t p s c a n p o s t ( FORMSpec [ i ] . name , s t a t e MAX FORMSIZE) ; }

// Fin d e l p r o c e s a m i n t o return 1 ; } // P r o c e s a m i e n t o no t e r m i n a d o return 0 ; } / submit . c g i / i n t su b m i t ( H t t p S t a t e s t a t e ) { auto i n t i ; i f ( state ength ) { >l / b u f f e r p a r a e s c r i b i r / i f ( state o f f s e t < state ength ) { > >l >s , s t a t e o f f s e t += s o c k f a s t w r i t e (& s t a t e > state >b u f f e r + ( i n t ) s t a t e >o f f s e t , ( int ) s t a t e e n g t h ( int ) s t a t e >l >o f f s e t ) ; } else { state o f f s e t = 0; > state ength = 0; >l } } else { switch ( s t a t e u b s t a t e ) { >s c a se 0 : strcpy ( state >b u f f e r , HTTP/ 1 . 0 2 0 0 OK\ r \ nContentType : break ; c a se 1 : / i n i c i a l i z a l o s d a t o s de FORMSpec FORMSpec [ 0 ] . v a l u e [ 0 ] = \0 ; FORMSpec [ 1 ] . v a l u e [ 0 ] = \0 ; state >p = s t a t e >b u f f e r ; parse post ( state ) ; s t a t e u b s t a t e ++; >s return 0 ; c a se 2 : >b u f f e r , FORMSpec [ 0 ] . v a l u e ) ; http setcookie ( state break ; c a se 3 : strcpy ( state >b u f f e r , \ r \n\ r \n<html> <head> <t i t l e >R e s u l t s </ t i t l e ></head> <body>\r \ n ) ; break ; c a se 4 : sp r in t f ( state >b u f f e r , <p>Username : % s<p>\r \n<p>Email : % s<p>\r \n , /

t e x t / html \ r \n ) ;

227

ANEXO C. CODIGOS FUENTES


350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 FORMSpec [ 0 ] . v a l u e , FORMSpec [ 1 ] . v a l u e ) ; break ; c a se 5 : strcpy ( state >b u f f e r , <p>Go <a h r e f =\/\>home</a></body></html>\r \n ) ; break ; default : state ubstate = 0; >s return 1 ; } state ength = st rl en ( state >l >b u f f e r ) ; state o f f s e t = 0; > s t a t e u b s t a t e ++; >s

} }

return 0 ;

SSPEC RESOURCETABLE START SSPEC RESOURCE XMEMFILE( / r e g i s t e r . html , r e g f o r m ) , SSPEC RESOURCE FUNCTION ( / su b m i t . c g i , su b m i t ) , SSPEC RESOURCE XMEMFILE( / , i n d e x h t m l ) , SSPEC RESOURCE XMEMFILE( / i n d e x . html , i n d e x h t m l ) , SSPEC RESOURCE XMEMFILE( / s h o w s r c . s h t m l , s h o w s r c s h t m l ) , SSPEC RESOURCE XMEMFILE( / t i t u l o r a b b i t . g i f , t i t u l o r a b b i t g i f ) , SSPEC RESOURCE XMEMFILE( / l e d p r e n d i d o . g i f , l e d o n g i f ) , SSPEC RESOURCE XMEMFILE( / l e d a p a g a d o . g i f , l e d o f f g i f ) , SSPEC RESOURCE XMEMFILE( / b ot on . g i f , b o t o n g i f ) , SSPEC RESOURCE XMEMFILE( / i n t e r f a c e . c , s s i c ) , s SSPEC RESOURCE ROOTVAR( l e d 1 , l e d 1 , PTR16 , % ) , SSPEC RESOURCE ROOTVAR( l e d 2 , l e d 2 , PTR16 , % ) , s s SSPEC RESOURCE ROOTVAR( l e d 3 , l e d 3 , PTR16 , % ) , s SSPEC RESOURCE ROOTVAR( l e d 4 , l e d 4 , PTR16 , % ) , SSPEC RESOURCE FUNCTION ( / l e d 1 t o g . c g i , l e d 1 t o g g l e ) , SSPEC RESOURCE FUNCTION ( / l e d 2 t o g . c g i , l e d 2 t o g g l e ) , SSPEC RESOURCE FUNCTION ( / l e d 3 t o g . c g i , l e d 3 t o g g l e ) , SSPEC RESOURCE FUNCTION ( / l e d 4 t o g . c g i , l e d 4 t o g g l e ) , SSPEC RESOURCE FUNCTION ( / a u d i t , a u d i t l i s t p r i n t ) SSPEC RESOURCETABLE END // D e f i n e n tamao de b u f f e r s ( 2 n1) #de fi ne CINBUFSIZE 1 5 #de fi ne COUTBUFSIZE 1 5

void main ( ) { / C o n f i g u r a c i o n e s

para

el

a c c i o n a d o s de

botones

mediante l a

web /

s t r c p y ( led1 , ledprendido . g i f ) ; s t r c p y ( led2 , ledprendido . g i f ) ; s t r c p y ( led3 , ledapagado . g i f ) ; s t r c p y ( led4 , ledprendido . g i f ) ; AuditInit () ; // I n i c i a l i z a e l h i s t o r i a l de a u d i t / i n i c i a l i z a l a FORM de l o s n om br es b u s c a d o s / FORMSpec [ 0 ] . name = u s e r n a m e ; FORMSpec [ 1 ] . name = u s e r e m a i l ; so ck ini t () ; http i ni t () ; t c p r e s e r v e p o r t (80) ;

char b u f t x [ 8 ] ; char b u f r x [ 4 ] ; char b u f r x e n t [ 2 ] ; int ids mod [ 1 6 ] ; int tipo mod [ 1 6 ] ; int nserie mod [ 1 6 ] ; int i , j , p , k , l ; char y ,m; ser Cop en ( 9 6 0 0 ) ; serCflowcontrolOff () ; s e r C p a r i t y (PARAM NOPARITY) ; while ( 1 ) { f o r ( i =0; i <6; i ++) { b u f t x [ i ]= 0 ; } b u f t x [ 3 ] = U ; b u f t x [ 7 ] = 0xA ; costate { waitfordone {

// i n i c i a l i z o e l b u f f e r de t r a s m i s i o n p o r p r i m e r a v e z // b u f t x [ d i r 1 , d i r 2 , i n t e n t o , comado , p a r a m e t r o 1 , p a r a m e t r o 2 , p a r i d a d , LF ] // b u f t x [ ] = { 0 , 0 , 0 , U , 0 , 0 , p , 0 xA} // Le p a s o e l LF

228

ANEXO C. CODIGOS FUENTES


438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 DelayMs ( 1 ) ; } f o r ( i =0; i <16; i ++){ } // e s p e r a p a r a d a r l e // q u e s e i n i c i a l i z e n // t r a s m i s i o n // c a l c u l o Paridad tiempo a los modulos exteriores

p= b u f t x [ 0 ] = b u f t x [ 1 ] ; p= p= b u f t x [ 2 ] ; p= p= b u f t x [ 3 ] ; p= p= b u f t x [ 4 ] ; p= p= b u f t x [ 5 ] ; buftx [6]= p ;

Bi t W r P or t I ( PBDDR, &PBDDShadow , 1 , 2 ) ; f o r ( j =0; j <8; j ++){ costate { waitfordone { cof serCputc ( buftx [ j ] ) ; DelayMs ( 0 . 3 5 ) ; } } } Bi t W r P or t I ( PBDDR, &PBDDShadow , 0 , 2 ) ; f o r ( l =0; l <3; l ++){ costate { waitfordone { } // R e a l i z o los 3

// s e t e o

pin

para

trasmitir

// s e t e o de

pin

para

recibir p o r c a d a m odu lo

intentos

recepcion

// r e c e p c i o n

c of s e r C r e ad ( bufrx , si z e o f ( bufrx ) , 1 . 0 7 5 ) ; } if

( b u f r x [0]== P ) { i d s m o d [ i ]=0 x f f ; t i p o m o d [ i ]= b u f r x [ 1 ] ; n s e r i e m o d [ i ]= b u f r x [ 2 ] ; i f ( b u f t x [ 1 ] = 0 x39 ) { b u f t x [ 1 ] = 0 x30 ; b u ftx [0]++; b u f t x [ 2 ] = 0 x30 ; // pongo en c e r o e l numero de i n t e n t o s } else { b u f t x [ 1 ] + + ; // i n c r e m e n t o en 1 l a d i r e c c i o n d e l m odu lo b u f t x [ 2 ] = 0 x30 ; // pongo en c e r o e l numero de i n t e n t o s }

i f ( b u f t x [ 2] > 2 ) { i d s m o d [ 0 ] = 0 x30 ; b u f t x [ 2 ] = 0 x30 ; // v u e l v o a p o n e r en c e r o e l numero de i n t e n t o s i f ( b u f t x [ 1 ] = 0 x39 ) { b u f t x [ 1 ] = 0 x30 ; b u ftx [0]++; } e l s e b u f t x [ 1 ] + + ; // i n c r e m e n t o en 1 l a d i r e c c i o n d e l m odu lo } buftx [2]++; // i n c r e m e n t o en 1 e l numero de i n t e n t o s } } f o r ( i =0; i <5; i ++){ } b u f t x [ 3 ] = A ; b u f t x [ 5 ] = 0 x31 ; b u f t x [ 7 ] = 0xA ; // i n i c i a l i z o e l b u f f e r de t r a s m i s i o n p o r p r i m e r a v e z // b u f t x [ d i r 1 , d i r 2 , i n t e n t o , comado , p a r a m e t r o 1 , p a r a m e t r o 2 , p a r i d a d , LF ] b u f t x [ i ]= 0 ; // b u f t x [ ] = { 0 , 0 , 0 , A , 0 , 1 , p , 0 xA}

// Le p a s o

e l LF

f o r ( k =0;k <16; k++){ i f ( t i p o m o d [ k ]=0 x33 ) { p= b u f t x [ 0 ] = b u f t x [ 1 ] ; p= p= b u f t x [ 2 ] ; p= p= b u f t x [ 3 ] ; p= p= b u f t x [ 4 ] ; p= p= b u f t x [ 5 ] ; buftx [6]= p ;

// c a l c u l o

Paridad

Bi t W r P or t I ( PBDDR, & PBDDShadow , 1 , 7 ) ; f o r ( j =0; j <8; j ++){ costate { waitfordone { cof serCputc ( buftx [ j ] ) ; DelayMs ( 0 . 3 5 ) ; } }

// s e t e o

pin

para

transmitir

229

ANEXO C. CODIGOS FUENTES


526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 } Bi t W r P or t I ( PBDDR, &PBDDShadow , 0 , 2 ) ; // s e t e o pin para de recibir recepcion por

f o r ( l =0; l <3; l ++){ // R e a l i z o l o s 3 i n t e n t o s c a d a m odu lo de e n t r a d a costate { // r e c e p c i o n waitfordone { c of s e r C r e ad ( bufrx , si z e o f ( bufrx ) , 1 . 0 7 5 ) ; } } if ( b u f r x e n t [0]== E ) { switch ( b u f r x e n t [ 1 ] ) c a se 0 : s m t p s e n d m a i l (TO, accion0 () ; break ; c a se 1 : s m t p s e n d m a i l (TO, accion1 () ; c a se 2 : s m t p s e n d m a i l (TO, accion2 () ; break ; c a se 3 : s m t p s e n d m a i l (TO, accion3 () ; break ; c a se 4 : s m t p s e n d m a i l (TO, accion4 () ; break ;

FROM, SUBJECT , BODY) ;

FROM, SUBJECT , BODY) ;

FROM, SUBJECT , BODY) ;

FROM, SUBJECT , BODY) ;

FROM, SUBJECT , BODY) ;

( b u f t x [ 2] > 2 ) { goto s i g o : // e s e m odu lo de e n t r a d a no t i e n e n ada p a r a entonces sigo } else buftx [2]++; // i n c r e m e n t o en 1 e l numero de i n t e n t o s if

decirme

} http handler () ; } sigo : costate { waitfordone { DelaySec ( 2 ) ; } }

} while ( s e r C w r F r e e ( ) ! = COUTBUFSIZE) ; serCclose () ; }

//

e s p e r o a que

el

buffer

de TX s e

vacie

C.8.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #c l a s s auto #de fi ne #de fi ne #de fi ne #de fi ne #de fi ne #de fi ne DS1 DS2 S1 S2 ON OFF

Cdigo BotonEnviaCaracter.c o
6 7 4 7 0 1 255 255 255 255

#de fi ne CINBUFSIZE #de fi ne COUTBUFSIZE #de fi ne EINBUFSIZE #de fi ne EOUTBUFSIZE

nodebug void msDelay ( unsigned i n t d e l a y ) { auto unsigned long d o n e t i m e ; d o n e t i m e = MS TIMER + d e l a y ; while ( ( long ) ( MS TIMER d o n e t i m e ) < 0 ) ;

i n t pbRdSwitch ( i n t s w s t a t e ) { i f ( s w s t a t e == S1 )

230

ANEXO C. CODIGOS FUENTES


29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 return ( B i t R d P o r t I (PFDR, else return ( B i t R d P o r t I (PBDR, } void pbWrLed( i n t l e d , i n t o n o f f ) { Bi t W r P or t I (PFDR, & PFDRShadow , } main ( ) { auto i n t i , ch ; auto char b u f f e r [ 6 4 ] ; auto i n t sw1 , sw2 , l e d 1 , swstate ) ) ; swstate ) ) ;

onoff ,

led ) ;

led2 ; puerto E al puerto C al p u e r t o C ! ! ! \ n\n\ r } ; p u e r t o E ! ! ! \ n\n\ r } ;

s t a t i c const char s t r i n g 1 [ ] = { Lo mando e l s t a t i c const char s t r i n g 2 [ ] = { Lo mando e l brdInit () ; Bi t W r P or t I (PEDR, & PEDRShadow , 0 , 5 ) ; l e d 1=l e d 2 =1; sw1=sw2 =0; serEopen (19200) ; serEwrFlush ( ) ; serErdFlush () ; ser Cop en ( 1 9 2 0 0 ) ; serCwrFlush ( ) ; serCrdFlush ( ) ; memset ( b u f f e r , 0 x00 , sizeof ( buffer ) ) ;

p r i n t f ( \ n A r r an co e l programa \n\n\n\ r ) ; for ( ; ; ) { costate { i f ( pbRdSwitch ( S1 ) ) abort ; w a i t f o r ( DelayMs ( 5 0 ) ) ; i f ( pbRdSwitch ( S1 ) ) { sw1 =! sw1 ; abort ; } } costate { i f ( pbRdSwitch ( S2 ) ) abort ; w a i t f o r ( DelayMs ( 5 0 ) ) ; i f ( pbRdSwitch ( S2 ) ) { sw2 =! sw2 ; abort ; } } costate { i f ( sw1 ) { pbWrLed( DS1 , ON) ; sw1 =! sw1 ; memcpy( b u f f e r , s t r i n g 2 , s t r l e n ( s t r i n g 2 ) ) ; serCputs ( b u f f e r ) ; memset ( b u f f e r , 0 x00 , s i z e o f ( b u f f e r ) ) ; i = 0; while ( ( ch = s e r E g e t c ( ) ) ! = \ r ) { i f ( ch ! = 1) { b u f f e r [ i ++] = ch ; }

} b u f f e r [ i ++] = ch ; buffer [ i ] = \0 ;

printf ( % , buffer ) ; s

231

ANEXO C. CODIGOS FUENTES


117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 memset ( b u f f e r , 0 x00 , pbWrLed( DS1 , OFF) ; } } sizeof ( buffer ) ) ;

costate { i f ( sw2 ) { pbWrLed( DS2 , ON) ; sw2 =! sw2 ; memcpy( b u f f e r , s t r i n g 1 , s t r l e n ( s t r i n g 1 ) ) ; serEputs ( b u f f e r ) ; memset ( b u f f e r , 0 x00 , s i z e o f ( b u f f e r ) ) ; i = 0; while ( ( ch = s e r C g e t c ( ) ) ! = \ r ) { i f ( ch ! = 1) { b u f f e r [ i ++] = ch ; } b u f f e r [ i ++] = ch ; buffer [ i ] = \0 ; printf ( % , buffer ) ; s pbWrLed( DS2 , OFF) ; } } }

C.9.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47

Cdigo Autenticacion.c o

/ O AUTENTIFICACIN / #de fi ne TCPCONFIG 1 // E t h e r n e t h a b i l i t a d o , PPP d e s a b i l i t a d o , // DHCP d e s a b i l i t a d o , Runtime d i s a b l e 512 // nTamao d e l b u f f e r HTTP ( b y t e s ) p a r a // i n f o r m a c i n r e c i b i d a y t r a n s m i t i d a o agunatar

#de fi ne HTTP MAXBUFFER

#de fi ne USE HTTP DIGEST AUTHENTICATION 1 #de fi ne SSPEC USERSPERRESOURCE #de fi ne HTTP NO FLASHSPEC // 3 // D e f i n e el que e l u nmero de usuarios es 3

Desabilitar

flashspec

# memmap xmem #u s e d c r t c p . l i b // U t i l i z a c i n o #u s e h t t p . l i b // U t i l i z a c i n o /

de de

l a l i b r e r a l a l i b r e r a

dcrtcp . l i b http . l i b

x i m p o r t e s una f u n c i n de Dynamic C q u e toma l a im agen b i n a r i a de un o a r c h i v o , l a u b i c a en l a memoria e x t e n d i d a d e l c o n t r o l a d o r y a s o c i a un s m b o l o con l a d i r e c c i n f s i c a de l a im agen en e l c o n t r o l a d o r / o

#x i m p o r t Documents and S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / s t a t i c . html index html #x i m p o r t Documents and S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / titulorabbit . gif titulorabbit gif / SSPEC MIMETABLE r e t o r n a un m e n s a j e i n d i c a n d o l a r e s p u e s t a a l a s p e t i c i o n e s e n t r a n t e s a l s e r v i d o r HTTP m e d i a n t e l a c o m p a r a c i n de l a o o e x t e n s i n de l a p e t i c i n e n t r a n t e con s t a l i s t a y d e v u e l v e e l s e g u n d o o e campo con e l c o n t e n i d o /

SSPEC MIMETABLE START SSPEC MIME ( . html , t e x t / html ) , SSPEC MIME ( . g i f , i m age / g i f ) SSPEC MIMETABLE END void main ( void ) { int user1 ; int user2 ; int user3 ; int u s e r 1 e n a b l e d ; int u s e r 2 e n a b l e d ; int u s e r 3 e n a b l e d ; i n t p age1 ; i n t p age2 ;

232

ANEXO C. CODIGOS FUENTES


48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 i n t ch ; p r i n t f ( P r e s i o n a r 1 , 2 , o 3 p a r a d e s h a b i l i t a r / h a b i l i t a r l o s 3 u s u a r i o s . \ n ) ; p r i n t f ( P r e s i o n a r b , r , o s p a r a s e t e a r l a a u t e n t i f i c a c i n como b s i c a , r e s u m i d a o a o s i n a u t e n t i f i c a r . \ n\n ) ; so ck ini t () ; http i ni t () ; // // Inicializar Inicializar e l TCP/ IP s t a c k e l s e r v i d o r web

h t t p s e t a u t h e n t i c a t i o n (HTTP DIGEST AUTH) ; p r i n t f ( Usando a u t e n t i f i c a c i n con resumen \n ) ; o / D e f i n i c i n o user1 user2 user3 user1 user2 user3 p age1 sspec sspec sspec sspec p age2 sspec sspec sspec sspec de u s u a r i o s y n c o n t r a s e a s / = 1; = 1; = 1; a d d u s e r ( u s u a r i o 1 , 1 , SERVER HTTP) ; a d d u s e r ( u s u a r i o 2 , 2 , SERVER HTTP) ; a d d u s e r ( u s u a r i o 3 , 3 , SERVER HTTP) ;

enabled enabled enabled = sauth = sauth = sauth

= s s p e c a d d x m e m f i l e ( / , i n d e x h t m l , SERVER HTTP) ; a d d u s e r ( page1 , u s e r 1 ) ; a d d u s e r ( page1 , u s e r 2 ) ; a d d u s e r ( page1 , u s e r 3 ) ; s e t r e a l m ( page1 , Admin ) ; = s s p e c a d d x m e m f i l e ( i n d e x . html , i n d e x h t m l , SERVER HTTP) ; a d d u s e r ( page2 , u s e r 1 ) ; a d d u s e r ( page2 , u s e r 2 ) ; a d d u s e r ( page2 , u s e r 3 ) ; s e t r e a l m ( page2 , Admin ) ;

s s p e c a d d x m e m f i l e ( r a b b i t 1 . g i f , r a b b i t 1 g i f , SERVER HTTP) ; / t c p r e s e r v e p o r t l e e x i g e a l s e r v i d o r i g n o r a r p e t i c i o n e s cu an do no e x i s t e un s o c k e t d i s p o n i b l e en e l p u e r t o c o r r e s p o n d i e n t e ; g u a r d a memoria p e r o p u e d e c a u s a r d e l a y s cu ando s e a c t u a l i z a una p g i n a . / a t c p r e s e r v e p o r t (80) ; while ( 1 ) { if // Fijarse que botn o apreta el usuario

( kbhit () ) { ch = g e t c h a r ( ) ; switch ( ch ) { c a se 1 : user1 enabled = ! user1 enabled ; i f ( user1 enabled ) { s s p e c a d d u s e r ( page1 , u s e r 1 ) ; s s p e c a d d u s e r ( page2 , u s e r 1 ) ; p r i n t f ( U s u a r i o 1 h a b i l i t a d o \n ) ; } else { s s p e c r e m o v e u s e r ( page1 , u s e r 1 ) ; s s p e c r e m o v e u s e r ( page2 , u s e r 1 ) ; p r i n t f ( U s u a r i o 1 d e s h a b i l i t a d o \n ) ; } break ; c a se 2 : user2 enabled = ! user2 enabled ; i f ( user2 enabled ) { s s p e c a d d u s e r ( page1 , u s e r 2 ) ; s s p e c a d d u s e r ( page2 , u s e r 2 ) ; p r i n t f ( U s u a r i o 2 h a b i l i t a d o \n ) ; } else { s s p e c r e m o v e u s e r ( page1 , u s e r 2 ) ; s s p e c r e m o v e u s e r ( page2 , u s e r 2 ) ; p r i n t f ( U s u a r i o 2 d e s h a b i l i t a d o \n ) ; } break ; c a se 3 : user3 enabled = ! user3 enabled ; i f ( user3 enabled ) { s s p e c a d d u s e r ( page1 , u s e r 3 ) ; s s p e c a d d u s e r ( page2 , u s e r 3 ) ; p r i n t f ( U s u a r i o 3 h a b i l i t a d o \n ) ; } else { s s p e c r e m o v e u s e r ( page1 , u s e r 3 ) ; s s p e c r e m o v e u s e r ( page2 , u s e r 3 ) ; p r i n t f ( U s u a r i o 3 d e s h a b i l i t a d o \n ) ; } break ;

233

ANEXO C. CODIGOS FUENTES


135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 c a se b : h t t p s e t a u t h e n t i c a t i o n (HTTP BASIC AUTH) ; p r i n t f ( Usando a u t e n t i f i c a c i n b s i c a \n ) ; o a break ; c a se r : h t t p s e t a u t h e n t i c a t i o n (HTTP DIGEST AUTH) ; p r i n t f ( Usando a u t e n t i f i c a c i n con resumen \n ) ; o break ; c a se s : h t t p s e t a u t h e n t i c a t i o n (HTTP NO AUTH) ; p r i n t f ( No u san d o a u t e n t i f i c a c i n \n ) ; o break ; } // d e b e llamarse el ht tp handler () .

} }

http handler () ; }

C.10.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55

Cdigo Leds.c o

/ browseled . c / #c l a s s auto #de fi ne DS1 0 x40 #de fi ne DS2 0 x80 // l e d , // l e d , port F b i t port F b i t 6 bitmask 7 bitmask

#de fi ne TCPCONFIG 1

#de fi ne TCP BUF SIZE 2 0 4 8

#de fi ne HTTP MAXSERVERS 2 #de fi ne MAX TCP SOCKET BUFFERS 2 #de fi ne REDIRECTHOST PRIMARY STATIC IP

#de fi ne REDIRECTTO # memmap xmem #u s e d c r t c p . l i b #u s e h t t p . l i b

h t t p : / / REDIRECTHOST / i n d e x . s h t m l

// U t i l i z a c i n o // U t i l i z a c i n o

de de

l a l i b r e r a l a l i b r e r a

dcrtcp . l i b http . li b

x i m p o r t e s una f u n c i n de Dynamic C q u e toma l a im agen b i n a r i a de un o a r c h i v o , l a u b i c a en l a memoria e x t e n d i d a d e l c o n t r o l a d o r y a s o c i a un s m b o l o con l a d i r e c c i n f s i c a de l a im agen en e l c o n t r o l a d o r / o S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / index html S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / titulorabbit gif S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / ledon gif S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / ledoff gif S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / boton gif S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / showsrc shtml S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / L ed s . c leds c

#x i m p o r t Documents and browsled . shtml #x i m p o r t Documents and titulorabbit . gif #x i m p o r t Documents and ledprendido . g i f #x i m p o r t Documents and ledapagado . g i f #x i m p o r t Documents and b ot on . g i f #x i m p o r t Documents and showsrc . shtml #x i m p o r t Documents and

SSPEC MIMETABLE r e t o r n a un m e n s a j e i n d i c a n d o l a r e s p u e s t a a l a s p e t i c i o n e s e n t r a n t e s a l s e r v i d o r HTTP m e d i a n t e l a c o m p a r a c i n de l a o o e x t e n s i n de l a p e t i c i n e n t r a n t e con s t a l i s t a y d e v u e l v e e l s e g u n d o o e campo con e l c o n t e n i d o /

SSPEC MIMETABLE START SSPEC MIME FUNC( . s h t m l , t e x t / html , s h t m l h a n d l e r ) , SSPEC MIME ( . html , t e x t / html ) , SSPEC MIME ( . g i f , i m age / g i f ) , SSPEC MIME ( . c g i , ) SSPEC MIMETABLE END

234

ANEXO C. CODIGOS FUENTES


56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 char l e d 1 [ 1 5 ] ; char l e d 2 [ 1 5 ] ;

int {

l e d 1 t o g g l e ( HttpState s t a t e ) ( st r cm p ( l e d 1 , l e d p r e n d i d o . g i f ) ==0) s t r c p y ( led1 , ledapagado . g i f ) ; else s t r c p y ( led1 , ledprendido . g i f ) ; c g i r e d i r e c t t o ( s t a t e , REDIRECTTO) ; return 0 ; if

} int { l e d 2 t o g g l e ( HttpState s t a t e ) i f ( st r cm p ( l e d 2 , l e d p r e n d i o d . g i f ) ==0) s t r c p y ( led2 , ledapagado . g i f ) ; else s t r c p y ( led2 , ledprendido . g i f ) ; c g i r e d i r e c t t o ( s t a t e , REDIRECTTO) ; return 0 ; } SSPEC RESOURCETABLE START SSPEC RESOURCE XMEMFILE( / , i n d e x h t m l ) , SSPEC RESOURCE XMEMFILE( / i n d e x . s h t m l , i n d e x h t m l ) , SSPEC RESOURCE XMEMFILE( / s h o w s r c . s h t m l , s h o w s r c s h t m l ) , SSPEC RESOURCE XMEMFILE( / t i t u l o r a b b i t . g i f , t i t u l o r a b b i t g i f ) , SSPEC RESOURCE XMEMFILE( / l e d p r e n d i d o . g i f , l e d p r e n d i d o g i f ) , SSPEC RESOURCE XMEMFILE( / l e d a p a g a d o . g i f , l e d a p a g a d o g i f ) , SSPEC RESOURCE XMEMFILE( / b ot on . g i f , b o t o n g i f ) , SSPEC RESOURCE XMEMFILE( l e d s . c , l e d s c ) , s SSPEC RESOURCE ROOTVAR( l e d 1 , l e d 1 , PTR16 , % ) , s SSPEC RESOURCE ROOTVAR( l e d 2 , l e d 2 , PTR16 , % ) , SSPEC RESOURCE FUNCTION ( / l e d 1 t o g . c g i , l e d 1 t o g g l e ) , SSPEC RESOURCE FUNCTION ( / l e d 2 t o g . c g i , l e d 2 t o g g l e ) , SSPEC RESOURCETABLE END

void u p d a t e o u t p u t s ( ) { auto i n t v a l u e ; v a l u e=PFDRShadow&0x3F ; // e s t a d o de los leds

/ A c t u a l i z a c i n O0 / o i f ( st r cm p ( l e d 1 , l e d p r e n d i d o . g i f ) ) v a l u e |=DS1 ; / A c t u a l i z a c i n O1 / o i f ( st r cm p ( l e d 2 , l e d p r e n d i d o . g i f ) ) v a l u e |=DS2 ; WrPortI (PFDR, & PFDRShadow , } main ( ) { brdInit () ; // i n i c i a l i z a la placa para este pr ogr am a value ) ;

s t r c p y ( led1 , ledprendido . g i f ) ; s t r c p y ( led2 , ledapagado . g i f ) ; so ck ini t () ; http i ni t () ; t c p r e s e r v e p o r t (80) ; while ( 1 ) { update outputs ( ) ; http handler () ; } }

#nodebug

C.11.

Cdigo EnviaMail.c o
235

ANEXO C. CODIGOS FUENTES


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 / DC9 u p d a t e E s t o e s r e q u e r i d o p o r Dynamic C v e r s i n 9 , p a r a u t i l i z a r o una IP f i j a en pr ogr am a y l a i n t e r f a z E t h e r n e t p o r d e f e c t o . No e s n e c e s a r i o en DC8 , s e a u t o d e f i n e n en l a s l i b s / #de fi ne TCPCONFIG 1 1 #de fi ne USE ETHERNET / Fin DC9 u p d a t e / #de fi ne #de fi ne #de fi ne #de fi ne #de fi ne FROM TO SUBJECT BODY1 BODY2 a c @ n e t g a t e . com . uy r ossan am @ gm ai l . com R ab b i t e m a i l A l g u i e n p r e s i o n e l b ot n o o \ r \ n S al u d os , RCM3700 .

#de fi ne SMTP SERVER smtp . n e t g a t e . com . uy #de fi ne MY IP ADDRESS #de fi ne MY NETMASK #de fi ne MY GATEWAY #de fi ne MY NAMESERVER #de fi ne SMTP DEBUG # memmap xmem #u s e d c r t c p . l i b #u s e smtp . l i b 192.168.1.102 255.255.255.0 192.168.1.1 192.168.1.1

main ( ) { int i , mail ; char body [ 2 5 6 ] ; so ck ini t () ; m a i l =0; WrPortI (PBDDR,&PBDDRShadow , 0 x7F ) ; while ( 1 ) { i f ( ! B i t R d P o r t I (PFDR, 4 ) ) { s p r i n t f ( body , % S1 %s ,BODY1,BODY2) ; s m a i l =1; } i f ( ! B i t R d P o r t I (PBDR, 7 ) ) { s p r i n t f ( body , % S2 %s ,BODY1,BODY2) ; s m a i l =1; } i f ( mail ) { p r i n t f ( L i s t o a e n v i a r : \ n\ t % \n , body ) ; s s m t p s e n d m a i l (TO, FROM, SUBJECT , body ) ; p r i n t f ( Enviando . . . \ n ) ; while ( s m t p m a i l t i c k ( )==SMTP PENDING) ; p r i n t f ( L i s t o . \ n ) ; m a i l =0; f o r ( i =0; i < 30000; i ++) ; } }

C.12.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #c l a s s auto

Cdigo AutentiLeds.c o
// l e d , // l e d , port F b i t port F b i t 6 bitmask 7 bitmask

#de fi ne DS1 0 x40 #de fi ne DS2 0 x80

/ S e c c i o n de c o n f i g u r a c i n o Todos l o s campos de e s t a s e c c i o n d e b e s s e r a l t r a d o s de a c u e r d o l a c o n f i g u r a c i o n de l a r e d l o c a l / / M ir a r LIB \TCPIP\TCP CONFIG . LIB p a r a de como s e t e r a r l a c o n f i g u r a c i o n . / #de fi ne TCPCONFIG 1

obtener

instruciones

#de fi ne TCP BUF SIZE 2 0 4 8

236

ANEXO C. CODIGOS FUENTES


23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102

#d e f i n e USE HTTP DIGEST AUTHENTICATION 1 3 #de fi ne SSPEC USERSPERRESOURCE / Configuracion /

del

s e r v i d o r Web

/ D e f i n e e l numero de HTTP s e r v e r s y l o s s o c k e t b u f f e r s . Con t c p r e s e r v e p o r t ( ) , menos l o s s e r v i d o r e s HTTP s e r v e r s / #de fi ne HTTP MAXSERVERS 2 #de fi ne MAX TCP SOCKET BUFFERS 2 512 #de fi ne HTTP MAXBUFFER

que sean

necesarios .

#de fi ne REDIRECTHOST PRIMARY STATIC IP // # d e f i n e REDIRECTHOST my . h o s t . com : 8 0 8 0 / Fin de l a s e c c i o n de c o n f i g u r a t i o n /

#de fi ne REDIRECTTO # memmap xmem #u s e d c r t c p . l i b #u s e h t t p . l i b

h t t p : / / REDIRECTHOST / i n d e x . s h t m l

#x i m p o r t Documents and browsled . shtml #x i m p o r t Documents and titulorabbit . gif #x i m p o r t Documents and ledprendido . g i f #x i m p o r t Documents and ledapagado . g i f #x i m p o r t Documents and b ot on . g i f #x i m p o r t Documents and showsrc . shtml #x i m p o r t Documents and AutentiLeds . c #x i m p o r t Documents and browsled . shtml

S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / index html S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / titulorabbit gif S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / ledon gif S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / ledoff gif S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / boton gif S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / showsrc shtml S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / autentileds c S e t t i n g s / R ossan a / D esktop / R ep oP royecto / Rab b i t /PruebasHTTP / p a g e s / index1 html

SSPEC MIMETABLE START SSPEC MIME FUNC( . s h t m l , t e x t / html , s h t m l h a n d l e r ) , SSPEC MIME ( . html , t e x t / html ) , SSPEC MIME ( . g i f , i m age / g i f ) , SSPEC MIME ( . c g i , ) SSPEC MIMETABLE END

char l e d 1 [ 1 5 ] ; char l e d 2 [ 1 5 ] ;

int {

l e d 1 t o g g l e ( HttpState s t a t e ) ( st r cm p ( l e d 1 , l e d p r e n d i d o . g i f ) ==0) s t r c p y ( led1 , ledapagado . g i f ) ; else s t r c p y ( led1 , ledprendido . g i f ) ; c g i r e d i r e c t t o ( s t a t e , REDIRECTTO) ; return 0 ; if

} int { l e d 2 t o g g l e ( HttpState s t a t e ) ( st r cm p ( l e d 2 , l e d p r e n d i d o . g i f ) ==0) s t r c p y ( led2 , ledapagado . g i f ) ; else s t r c p y ( led2 , ledprendido . g i f ) ; c g i r e d i r e c t t o ( s t a t e , REDIRECTTO) ; if

237

ANEXO C. CODIGOS FUENTES


103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 return 0 ; } SSPEC RESOURCETABLE START SSPEC RESOURCE XMEMFILE( / , i n d e x h t m l ) , SSPEC RESOURCE XMEMFILE( / i n d e x . s h t m l , i n d e x h t m l ) , SSPEC RESOURCE XMEMFILE( / s h o w s r c . s h t m l , s h o w s r c s h t m l ) , SSPEC RESOURCE XMEMFILE( / t i t u l o r a b b i t . g i f , t i t u l o r a b b i t g i f ) , SSPEC RESOURCE XMEMFILE( / l e d p r e n d i d o . g i f , l e d o n g i f ) , SSPEC RESOURCE XMEMFILE( / l e d a p a g a d o . g i f , l e d o f f g i f ) , SSPEC RESOURCE XMEMFILE( / b ot on . g i f , b o t o n g i f ) , SSPEC RESOURCE XMEMFILE( A u t e n t i l e d s . c , A u t e n t i l e d s c ) , SSPEC RESOURCE ROOTVAR( l e d 1 , l e d 1 , PTR16 , % ) , s s SSPEC RESOURCE ROOTVAR( l e d 2 , l e d 2 , PTR16 , % ) , SSPEC RESOURCE FUNCTION ( / l e d 1 t o g . c g i , l e d 1 t o g g l e ) , SSPEC RESOURCE FUNCTION ( / l e d 2 t o g . c g i , l e d 2 t o g g l e ) , SSPEC RESOURCETABLE END

void u p d a t e o u t p u t s ( ) { auto i n t v a l u e ; v a l u e=PFDRShadow&0x3F ; / A c t u a l i z a c i n O0 / o i f ( st r cm p ( l e d 1 , l e d p r e n d i d o . g i f ) ) v a l u e |=DS1 ; / A c t u a l i z a c i n O1 / o i f ( st r cm p ( l e d 2 , l e d p r e n d i d o . g i f ) ) v a l u e |=DS2 ; WrPortI (PFDR, & PFDRShadow , } main ( ) { int user1 ; int user2 ; int user3 ; int u s e r 1 e n a b l e d ; int u s e r 2 e n a b l e d ; int u s e r 3 e n a b l e d ; i n t p age1 ; i n t p age2 ; i n t ch ; p r i n t f ( P r e s i o n a r 1 , 2 , o 3 p a r a d e s h a b i l i t a r / h a b i l i t a r l o s 3 u s u a r i o s . \ n ) ; p r i n t f ( P r e s i o n a r b , r , o s p a r a s e t e a r l a a u t e n t i f i c a c i n como b s i c a , r e s u m i d a o a o s i n a u t e n t i f i c a r . \ n\n ) ; s t r c p y ( led1 , ledon . g i f ) ; s t r c p y ( led2 , l e d o f f . g i f ) ; brdInit () ; so ck ini t () ; http i ni t () ; t c p r e s e r v e p o r t (80) ; h t t p s e t a u t h e n t i c a t i o n (HTTP DIGEST AUTH) ; p r i n t f ( Usando a u t e n t i f i c a c i n con resumen \n ) ; o / D e f i n i c i n o user1 enabled user2 enabled user3 enabled user1 = sauth user2 = sauth user3 = sauth p age1 sspec sspec sspec sspec p age2 sspec sspec sspec sspec de u s u a r i o s y n c o n t r a s e a s / = 1; = 1; = 1; a d d u s e r ( u s u a r i o 1 , 1 , SERVER HTTP) ; a d d u s e r ( u s u a r i o 2 , 2 , SERVER HTTP) ; a d d u s e r ( u s u a r i o 3 , 3 , SERVER HTTP) ; value ) ;

= s s p e c a d d x m e m f i l e ( / , i n d e x h t m l , SERVER HTTP) ; a d d u s e r ( page1 , u s e r 1 ) ; a d d u s e r ( page1 , u s e r 2 ) ; a d d u s e r ( page1 , u s e r 3 ) ; s e t r e a l m ( page1 , Admin ) ; = s s p e c a d d x m e m f i l e ( i n d e x . html , i n d e x h t m l , SERVER HTTP) ; a d d u s e r ( page2 , u s e r 1 ) ; a d d u s e r ( page2 , u s e r 2 ) ; a d d u s e r ( page2 , u s e r 3 ) ; s e t r e a l m ( page2 , Admin ) ;

s s p e c a d d x m e m f i l e ( r a b b i t 1 . g i f , r a b b i t 1 g i f , SERVER HTTP) ;

while ( 1 )

238

ANEXO C. CODIGOS FUENTES


190 191 192 193 194 195 196 197 { update outputs () ; http handler () ; } }

#nodebug

239

Anexo D Hojas de datos, tablas y licencias


D.1. Hojas de datos

Aqu se publican los links de los componentes nombrados en esta docu mentacin. o

D.1.1.

Microprocesador Rabbit 3000

http://www.rabbitsemiconductor.com/products/rab3000/rab3000.pdf

D.1.2.

Microprocesador PIC 16F628A

http://www.ortodoxism.ro/datasheets/microchip/40044b.pdf

D.1.3.

MAX232

http://www.ortodoxism.ro/datasheets/texasinstruments/max232.pdf

D.1.4.

MAX485

http://datasheets.maxim-ic.com/en/ds/MAX1487-MAX491.pdf

D.1.5.

Compuerta NOR MC14001

http://www.tranzistoare.ro/datasheets/270/397394 DS.pdf

D.1.6.

Multiplexor 74HC153

http://www.ortodoxism.ro/datasheets/philips/74HC HCT153 CNV 2.pdf 240

ANEXO D. HOJAS DE DATOS, TABLAS Y LICENCIAS

D.1.7.

Demultiplexor CD4555

http://www.tranzistoare.ro/datasheets/105/109640 DS.pdf

D.1.8.

Regulador LM7805

http://www.ortodoxism.ro/datasheets/fairchild/LM7805.pdf

D.1.9.

Transistor BC547

http://www.ortodoxism.ro/datasheets/MicroElectronics/mXuwzwr.pdf

D.1.10.

Emisor Ir L53SF4BT

http://www.tranzistoare.ro/datasheets2/92/92443 1.pdf

D.2.

Tablas

La empresa Philips Semiconductor elabor una tabla que sirve como aplio cacin de la codicacin infrarroja RC-5. o o

D.2.1.

Tabla RC5

http://z0.saladeteletipos.com/twiki/bin/viewle/ProcesadorMultiprotocolar/ ProtocoloIr?rev=1;lename=Tabla RC5.txt

D.3.

Licencias

Una licencia de software es el permiso brindado por el titular del derecho de autor, en cualquier forma contractual, al usuario de un programa informtico, a para utilizarlo conforme a condiciones convenidas y de determinada forma. Las herramientas utilizadas en este proyecto utilizan las licencias GNU y BSD.

D.3.1.

Licencia GNU

Fuente: http://www.gnu.org/copyleft/gpl.html Traduccin no ocial al espa ol: http://gugs.sindominio.net/ o n licencias/gples.html

D.3.2.

Licencia BSD

Fuente: http://www.freebsd.org/copyright/freebsd-license.html

241

Anexo E Decodicacin infrarroja o


E.1. Introduccin o

En este anexo se decodica la trama infrarroja de cada comando del control remoto del radiograbador con cd Aiwa. La trama est formada por los campos: a secuencia inicial, encabezado, cdigo de datos y secuencia nal. Tambin, se o e vislumbra la forma de onda para mostrar la modulacin por largo de pulso. o

E.2.

Decodicacin de los comandos o

La Tabla E.1 especica la decodicacin de cada comando, separando el o encabezado, el cdigo de datos y el bit de stop. o

242

ANEXO E. DECODIFICACION INFRARROJA

Comando N mero 1 u N mero 2 u N mero 3 u N mero 4 u N mero 5 u N mero 6 u N mero 7 u N mero 8 u N mero 9 u N mero 0 u Play/Pause Repeat Memory Cancel Surround Skip back Skip Forward Stop

Cdigo Ir o 11110001111110000111000000 0111011010001001 11110001111110000111000000 1011011001001001 11110001111110000111000000 0011011011001001 11110001111110000111000000 1101011000101001 11110001111110000111000000 0101011010101001 11110001111110000111000000 1001011001101001 11110001111110000111000000 0001011011101001 11110001111110000111000000 1110011000011001 11110001111110000111000000 0110011010011001 11110001111110000111000000 1010011001011001 11110001111110000111000000 1101110000100011 11110001111110000111000000 0111010110001010 11110001111110000111000000 1011010101001010 11110001111110000111000000 0011010111001010 11110001111110000111000000 1111100000000111 11110001111110000111000000 0001110011100011 11110001111110000111000000 1001110001100011 11110001111110000111000000 0101110010100011

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Tabla E.1: Decodicacin comandos IR radiograbador AIWA o

243

ANEXO E. DECODIFICACION INFRARROJA

E.3.

Forma de onda de los comandos

Figura E.1: Cdigos AIWA o

244

ANEXO E. DECODIFICACION INFRARROJA

Figura E.2: Cdigos AIWA o

Figura E.3: Cdigos AIWA o

245

You might also like