DISEÑO E IMPLEMENTACIÓN DE UN “TOUCH SCREEN” CON INTERFAZ USB CONTENIDO SINOPSIS PRÓLOGO INTRODUCCIÓN CAPÍTULO 1. PROPUESTA DE DISEÑO 1.1 Problemática a resolver 1.2 Propuesta 1.3 Diagrama a bloques propuesto 1.4 Alcances y limitaciones 1.5 ¿Porqué USB? CAPÍTULO 2. INTERFAZ Y MICROCONTROLADORES USB 2.1 Introducción a la interfaz USB 2.2 Clasificación USB por velocidad 2.3 Arquitectura USB 2.3.1 Descripción del sistema USB 2.3.2 Comunicaciones USB 2.3.3 Hubs USB 2.3.4 Topología 2.4 Configuración del sistema 2.4.1 Conexión de dispositivos USB 2.4.2 Desconexión de dispositivos USB 2.4.3 Enumeración del bus 2.5 Capa física 2.5.1 Eléctrica 2.5.2 Mecánica 2.6 Protocolo 2.7 Detección y manejo de errores 2.8 Tipos de flujo de datos 2.9 Clases USB 2.10 Microcontrolador USB 2.10.1 Descripción del microcontrolador 2.10.2 Sistema integrado USB i CAPÍTULO 3. DESCRIPCIÓN DE LA CIRCUITERÍA 3.1 Bloque 1 - El CY7C63000A como Microcontrolador de Mouse USB 3.1.1 Descripción de un sistema de mouse USB 3.1.2 Adaptación del sistema para touchscreen 3.1.3 Implementación del Hardware 3.2 Bloque 2 - El MC 87C51 como decodificador de coordenadas 3.2.1 Breve descripción del 8751 3.2.2 Implementación de Hardware 3.2.3 Acoplamiento con el CY7C63000A 3.3 Bloque 3 - Diseño y Construcción de la Red de Infrarrojos 3.3.1 Diseño del circuito básico del sensor 3.3.2 Alcances y limitaciones del sensor 3.3.3 Resolución 3.3.4 Construcción de la Red de infrarrojos 3.3.5 Fuente Externa de Alimentación CAPÍTULO 4 DESCRIPCIÓN DE LA PROGRAMACIÓN 4.1 Descripción del software para CYC63000A 4.1.1 Software Funcional 4.1.2 Software de Comunicaciones USB 4.1.3 Descripción de Rutinas 4.2 Implementación de software para el 87C51 4.2.1 Diagrama a Bloques 4.2.2 Inicialización 4.4.3 Adquisición, validación y codificación de coordenadas 4.2.4 Cálculo del Desplazamiento 4.2.5 Generación de Señales 4.2.6 Reconocimiento de Comandos de Clic CONCLUSIONES APÉNDICES GLOSARIO BIBLIOGRAFÍA ii INTRODUCCIÓN I INTRODUCCIÓN E l tocar, es una de las acciones más simples e intuitivas del ser humano, por lo cual no es difícil imaginar el porqué de la existencia de los touchscreens. En este apartado se ofrece una introducción general sobre lo que fueron, son y serán los monitores sensibles al toque comúnmente llamados touchscreens, así como sus aplicaciones y tecnologías. “Un Touch Screen es un monitor estándar que se utiliza para que un usuario pueda tocar la pantalla y obtener una repuesta por la computadora. “1 Es decir, los touchscreens ofrecen una interfaz con la computadora sin la necesidad de periféricos adicionales como lo son el teclado y el mouse. Esto es de gran utilidad en aplicaciones en las cuales se necesita una computadora la cual presente al usuario un menú para realizar algún proceso, como por ejemplo, solicitar servicios desde los automóviles, cajeros automáticos, etc. 1 Abarca y Vidal, Pág.47 1 INTRODUCCIÓN Un touch screen es la forma más simple y directa que tiene una persona para interactuar con una computadora ya que sólo es necesario apuntar lo que se desea. Esta tecnología es relativamente nueva, fue en los años 70s 2 cuando los primeros touchscreens salieron al mercado. El primer touch screen fue creado añadiendo una superficie transparente a un digitalizador gráfico sensitivo al toque, y agrandándolo al tamaño de un monitor de computadora. El propósito era el de incrementar la velocidad de entrada de datos a una computadora. Hoy en día, los touchscreens se han convertido en un remplazo más amigable y práctico (desde el punto de vista del usuario) de los teclados y ratones. Debido a esto, esta tecnología facilita a usuarios con poca o nada de experiencia con computadoras, a trabajar instantáneamente con ellas. Otra ventaja que presentan, es que permiten la colocación de computadoras en lugares donde un mouse o teclado resultaría incómodo o no práctico. Esta tecnología encuentra una gran variedad de aplicaciones mayormente en la industria, hospitales, escuelas, destinos turísticos, estaciones de información, etc. Sin importar la aplicación, los beneficios esenciales que los touchscreens ofrecen no cambian, por ejemplo, los touchscreens permiten a las personas usar computadoras instantáneamente sin ningún tipo de entrenamiento, eliminan errores de operador ya que el usuario selecciona elementos directamente de un menú además de que eliminan a los teclados y ratones, los cuales pueden parecer incómodos o difíciles de usar, los touchscreens son lo suficientemente robustos para resistir ambientes de poco cuidado en donde los teclados o ratones pueden ser dañados o robados. Otra característica implícita a los touchscreens es que ayudan a no desperdiciar espacio en el lugar de trabajo, ya que el dispositivo de entrada se encuentra completamente integrado en el monitor. Pero, ¿cómo es que funcionan? La mayoría de las tecnologías utilizadas se basan en el principio de dividir la pantalla en una malla predeterminada (dependiendo del 2 ELO & Micro Touch System, pág. 1 2 INTRODUCCIÓN tamaño de la pantalla y capacidades de resolución). Al tocar uno de los cuadrantes, se ejecuta una subrutina de la misma manera que como si se tecleara la instrucción en la línea de comando o con el mouse. En un sistema touch screen independientemente de la tecnología utilizada para construirlo, esta compuesto por cuatro elementos básicos3: Sensor de toque( Capacitivos, Resistivos, Infrarrojos, SAW, etc.). Monitor (ya sea de tubo de rayos catódicos, LCD o plasma.). El controlador el cual reconoce la entrada de los sensores y la codifica. Software, el cual permite comunicar al controlador con el sistema Operativo de la computadora. Las tecnologías en cuanto a los sensores de toque, van desde las más simples hasta las más complejas. Por ejemplo, los touchscreens capacitivos, funcionan agregando capas conductivas a un sensor de vidrio transparente, donde se aplica voltaje y se crea un campo uniforme que se distorsiona al tocar cuadrantes en la pantalla3. Los touchscreens resistivos son logrados agregando una capa flexible de poliéster conductivo sobre un sensor conductivo de vidrio transparente, cuando la capa flexible de poliéster es tocada, se comprime contra el sensor de vidrio y la corriente fluye a cada una de las esquinas en proporción a la distancia recorrida3. Las tecnología más actual es denominada SAW4 (por sus siglas en inglés: Surface Acoustic Wave), aquí se aplica una cubierta de vidrio y se encuentran transductores a lo largo de los ejes x y y, el controlador envía una señal de 5Mhz. a los transductores de transmisión quienes convierten la señal en ondas ultrasónicas, estas ondas viajan por el vidrio a través de un arreglo de reflectores y al llegar a los receptores éstos las convierten en señales eléctricas de nuevo, cuando se toca un cuadrante el dedo absorbe parte de la onda ultrasónica, la ondas recibidas son comparadas con un mapa digital, se reconoce el cambio y se calcula 3 4 Abarca y Vidal, Pág. 47 Boletín Técnico de ELO & MicroTouch Systems Pág.4 3 INTRODUCCIÓN la coordenada, además midiendo la cantidad de señal absorbida se pude calcular el eje Z. La tecnología que se utiliza en este proyecto de investigación y desarrollo es similar a la empleada por SAW, sólo que en vez de ondas ultrasónicas se utiliza luz (como láser, infrarroja, etc.) con la diferencia de que aquí la luz no viaja a través de un medio sólido si no que en el aire, por lo que al obstruir el camino óptico de un haz de luz, se perderá por completo la señal en el receptor, por lo tanto sólo se podrán determinar dos ejes (x & y). Las tecnologías y aplicaciones de los touch screens se están desarrollando para un mayor nicho de mercado dirigiendo su utilización a pantallas de cristal líquidos, buscando minimizar espacio e incrementar resolución y funcionalidad, pero sobre todo el futuro de los touchscreens se vislumbra en dispositivos más funcionales y a menores precios. 4 PROPUESTA DE DISEÑO CAPÍTULO 1 PROPUESTA DE DISEÑO E n este primer capítulo se presenta un panorama general sobre el proyecto, aquí es donde se define el proyecto como tal, se especifica lo que se desea conseguir y cómo se piensa conseguirlo, es uno de los capítulos más importantes de este documento ya que es la base para entender todo lo que se desarrolla posteriormente. 1.1 Problemática a Resolver Hoy en día, tanto los usuarios como los desarrolladores de interfaces gráficas, ya sea en el ámbito comercial o industrial, requieren de hardware que permita una entrada de datos más directa y que sea de fácil utilización como se puede lograr con un monitor touch screen, ya que estos presentan una facilidad para el usuario en el manejo de determinados sistemas. En la actualidad existen diversas tecnologías para la fabricación de touchscreens como lo son: sensores capacitivos, resistivos y SAW, estas tecnologías varían en precio y en funcionalidad, pero todas funcionan 5 CAPÍTULO 1 implementándose en un monitor de computadora y así formar un solo dispositivo denominado monitor touch screen. Este hecho, representa la necesidad de que la tecnología touch screen utilizada debe ser agregada en el momento de la fabricación del monitor, formando así un sistema unificado y consecuentemente de mayor costo a un monitor convencional. Dado lo anterior, si se cuenta con un monitor sin tecnología touch screen y se tiene la necesidad de tenerlo, se tiene la necesidad de comprar otro monitor que contenga la interfaz y sustituirlo por el monitor anterior, y como se sabe, en general una de las partes más caras de una computadora es el monitor, por lo que el cambio representa una pérdida económica y una mala administración de los recursos. Los monitores touchscreens existentes en el mercado a la fecha de la elaboración de este proyecto, varían en precio desde 600 hasta 1800 dólares americanos (dependiendo de la tecnología utilizada para fabricarlos y del tamaño de la pantalla). Otra desavenencia, es que debido a la gran diversidad de computadoras existentes en el mercado no se utiliza un estándar universal y específico con el cual se comunique el monitor touch screen con la computadora. Los monitores touchscreens manejan diferentes estándares como lo son RS-232 en puerto serial para cada sistema operativo(Windows, Unix, Linux), PS/2 y en algunos casos muy particulares la interfaz de comunicación se encuentra directamente en el puerto de video (esto representa una tecnología muy propietaria en donde el monitor esta estrictamente ligado a la computadora con la que se adquirió). Los touchscreens más actuales están provistos de una interfaz más robusta y universal denominada USB(Universal Serial Bus por sus siglas en inglés) y en el futuro se espera que todos los sistemas de periféricos emigren a este estándar para lograr una unificación total. 1.2 Propuesta El presente trabajo de titulación pretende aportar una nueva solución para las necesidades de tecnología de touch screen, la cual no cuente con los problemas antes mencionados, cuidando en todo momento en minimizar a la medida de lo 6 PROPUESTA DE DISEÑO posible, la creación de nuevas limitaciones, para que así el proyecto final represente una nueva solución competitiva, universal, eficiente y de bajo costo en el mercado de los touchscreens. En general, el presente trabajo de titulación pretende el desarrollar un diseño y la construcción de un dispositivo externo, montable sobre la pantalla de un monitor comercial de 14 pulgadas, con el cual se pueda controlar la posición del apuntador del mouse y emitir comandos de acción y selección (léase clic) por medio del toque directo sobre la pantalla del monitor con un dedo humano a lo largo y ancho de la pantalla. Este dispositivo constará básicamente de dos partes, de una unidad de procesamiento (UPE) y de un marco detector de coordenadas (MDC), éste último será el que se montará sobre el monitor y su función será la de obtener las coordenadas de las ubicaciones que señale el usuario (en dos dimensiones x & y ), después estas coordenadas serán recibidas por la unidad de procesamiento externa la cual será la encargada de obtener a partir de las coordenadas obtenidas del marco, el desplazamiento del mouse necesario para actualizar la posición del apuntador. Estos datos serán enviados a la computadora, la cual actualizará la posición del apuntador a la ubicación donde señala el usuario. Por consiguiente se obtendrán las ventajas de un monitor touch screen, sólo este dispositivo será un aditamento que se agregue a un monitor comercial evitando así el problema de sustituir el monitor si es que se requiere contar con uno que presente la tecnología Touch Screen, además de que debido a la naturaleza de su construcción, este dispositivo será mucho más económico, dándole un atractivo aún mayor. Las desventajas que se vislumbran a priori son de que contará con mucho menos resolución (16x11dpi) que uno normal(800x600??) y los problemas que conlleva el no estar integrado al monitor como descalibraciones por movimiento del marco, etc.. No se esperan mayores desventajas pero se verá en el resultado final. Este dispositivo será plug n play, por lo que no necesitará ningún tipo de instalación más que la inherentemente mecánica y deberá de responder a una velocidad aceptable, para lograr todo esto, es necesario implementar una interfaz USB (Universal Serial Bus por sus siglas en inglés) con la computadora. Debido a 7 CAPÍTULO 1 que los puertos USB son independientes a todos los demás puertos de la computadora, este dispositivo no necesariamente sustituirá al mouse por lo que permitirá que funcionen los dos periféricos al mismo tiempo, si es que así se desea. 1.3 Diagrama a Bloques Marco Detector de Coordenadas (M.D.C) Fuente de Alimentación Unidad de Procesamiento Externa (U.P.E.) Etapa de Adquisición – Simulación Touch Screen USB Etapa de Decodificación - Transmisión USB Computadora 8 PROPUESTA DE DISEÑO 1.3.1 MDC: Marco Detector de Coordenadas El marco detector de coordenadas (MDC) montado sobre el monitor, va a ser el encargado de detectar las coordenadas de la ubicación donde se encuentre señalando el usuario, y esta información será enviada a la UPE para su reconocimiento y codificación. Para poder desarrollar este bloque del dispositivo es necesario un diseño robusto, con alto grado de confiabilidad y sobre todo de bajo costo para así cuidar uno de los mayores atractivos de este dispositivo, el precio. El desarrollo de un sistema robusto y confiable es esencial con el fin de evitar limitantes al sistema debido a una mala adquisición de los datos de entrada. En el anteproyecto de este trabajo de titulación se especificó una tecnología basada en láser para desarrollar esta etapa, pero debido a fallas en el diseño original y a el alto costo que representaba el modificarlo, se optó por sustituir la red láser por una red infrarroja. A continuación se explican las dos propuestas especificando los problemas encontrados en la propuesta original por los cuales tuvo que ser sustituida por la propuesta definitiva, tecnología infrarroja. MDC Láser Este método es el que se especificó en el anteproyecto de este trabajo de titulación, esta basado en la utilización de una tecnología basada en una red láser (por medio de divisiones de un haz luminoso), la cual se implementa sobre un marco montado en la pantalla del monitor para la obtención de las coordenadas. Este sistema se basa en la teoría de reflexión y difracción de la luz: “Un haz de luz, que incide en un material con diferente índice de refracción al del medio en el que proviene y dependiendo del ángulo de incidencia, presenta dos fenómenos: reflexión y difracción de este haz luminoso.”5 Para poder formar la red es necesario hacer incidir un rayo luminoso (en este caso láser debido a que este haz de luz no se ve hasta que incide, por lo tanto la red será invisible) sobre un arreglo de placas de cierto material que lo que haga sea: 5 Tipler, Física II Pág. 9 CAPÍTULO 1 - Dejar pasar el rayo sin ninguna desviación y con intensidad suficiente para poder cruzar todas las placas (en caso de ser necesario se pueden utilizar dos rayos, uno vertical y otro horizontal). - Cada placa deberá reflejar parte de este rayo a 90° de su dirección original con la intensidad necesaria para accionar un sensor o switch activado por luz al otro extremo de la malla. Por lo tanto, con un arreglo determinado de estas placas, dispuesto horizontal (x) y verticalmente (y) sobre un marco sobre la pantalla del monitor, se obtiene una red láser como se muestra en la figura 1-3. En el momento en que el usuario interrumpa el camino óptico de un haz, mínimo dos sensores(uno en x y otro en y) no se activarán obteniéndose así la coordenada. Figura 1-3.- Disposición horizontal (x) y vertical ( y) de las placas de maylar y los sensores ópticos sobre el marco. Todos los sensores ópticos se encuentra conectados a la UPE y cuando el usuario obstruya el camino óptico de uno de los rayos luminosos, mínimo dos sensores ópticos (que pueden ser scr´s activados por luz) no se accionarán debido a la ausencia de la luz obteniéndose así la coordenada. El rayo láser se puede obtener a partir de un diodo láser comercial (apuntadores láser) de 5mW. Las placas reflectoras-refractoras serán de un material dieléctrico el cual es abundante y económico denominado maylar, éste es un material con un índice de refracción tal que se comporta como divisor de haz luminoso (a un ángulo de incidencia dado), o sea que transmite parte de la luz sin desviación y refleja parte la luz con un ángulo de 90°. Dependiendo de la intensidad del haz reflejado y del transmitido se verá la posibilidad de poner dos fuentes luminosas. 10 PROPUESTA DE DISEÑO Se debe poner especial cuidado en el montaje de los sensores ópticos para que la luz que emite el monitor no los accione y sólo sea el láser quien lo haga. La separación de las placas provee la resolución del sistema, en este caso la resolución se puede limitar al grosor de un dedo humano (1.5 cms. aprox.).Todos los sensores ópticos estarán conectados a la UPE para que éste interprete la coordenada y la codifique. Al analizar más detalladamente esta propuesta se tuvo que modificar, debido a que el maylar sí divide el haz, pero la luz que deja pasar a la siguiente placa sería mínima, por lo que no se alcanzaría a formar la red, por lo tanto para resolver este problema se proponen dos modificaciones a la propuesta: •Aumentar la potencia del láser: Se tendría que utilizar un emisor láser generado por gases, y no de estado sólido, lo cual representa un aumento inaceptable en tamaño y en costo. •Cambiar las placas de maylar por prismas difractores-reflectores: Estos prismas presentan mínima pérdida al dividir el haz y lo hacen casi en partes iguales, el problema es que son muy caros (10 dólares americanos el más pequeño). Debido a que estas modificaciones a la propuesta original son inaceptables con el fin de cubrir las especificaciones, se propuso un cambio propuesta, la cual consiste en que el MDC se continúe basando en una red de haces ópticos, pero cambiando el tipo de luz, en este caso la más aceptable es la luz infrarroja, debido a su gran utilidad en la electrónica moderna. MDC Infrarrojo Esta propuesta se basa en el mismo modo de operación del MDC láser, ya que se basa en el mismo principio para detectar las coordenadas (obstrucción de caminos ópticos), la diferencia radica en su construcción, ya que el MDC Infrarrojo en vez de utilizar luz láser para formar la red, utiliza luz infrarroja (no visible al ojo humano). Por lo tanto el MDC infrarrojo es muy similar en su principio de operación pero difiere totalmente en su modo de construcción. El reto que se presenta, es poder implementar un red de luz infrarroja, lo que se propone es colocar a lo largo y alto de un marco (montable sobre la pantalla), una 11 CAPÍTULO 1 serie de circuitos emisores y receptores de luz infrarroja, alineados cada uno con su contraparte en el otro extremo del marco, intercalándose en el orden para cubrir la mayor área posible sobre la pantalla (esto debido a que la luz se emitiría con diodos emisores de luz infrarroja y estos presentan un ángulo de propagación). Con este arreglo es posible formar una red de luz infrarroja que abarque casi toda la pantalla. Véase la figura 1-4 para visualizar el arreglo tanto horizontal como vertical. Figura 1-4.- Disposición en horizontal y vertical de los emisores y receptores infrarrojos en el marco. Cada receptor infrarrojo se encuentra conectado a la UPE y cuando el usuario bloquee la recepción de luz infrarroja de un receptor en x y otro en y, estos no se activarán y por lo tanto la UPE podrá obtener la coordenada ya que conoce la ubicación de cada uno de los receptores. La resolución de este sistema está dada por la separación entre los receptores infrarrojos, y se encuentra limitada debido al ángulo de propagación que presentan los emisores, por lo que dependiendo de la distancia existente entre emisor y receptor se requierá una distancia mínima de separación entre los receptores que deberá ser respetada con el fin de evitar interferencias de emisores aledaños. 1.3.2 UPE: Unidad de Procesamiento Externa La UPE (unidad de procesamiento externa) básicamente estará compuesta por dos partes, como lo muestra la figura 1-2, por la etapa de adquisición-simulación y la etapa de decodificación-transmisión. 12 PROPUESTA DE DISEÑO UPE A la computadora vía USB Segunda Etapa Decodificación &Transmisión Primera Etapa Adquisición & Simulación Señales de los sensores del marco Figura 1-2.- Etapas de la UPE. La etapa de adquisición-simulación será la encargada de obtener todas las señales eléctricas provenientes de los sensores del marco montado sobre la pantalla del monitor, deberá obtener las coordenadas (en x y en y) de la ubicación del toque del usuario y realizar el cálculo del desplazamiento entre la coordenada actual y la nueva, también deberá detectar los comandos de clic por parte del usuario, toda esta información tendrá que codificarla y enviarla a la etapa de decodificacióntransmisión, la cual decodificará la información de los cambios de coordenadas y los transmitirá vía USB a la computadora. La implementación de estas dos etapas requieren de dos microcontroladores, para la primera etapa se requiere de uno de alta capacidad de procesamiento y con puertos suficientes para recibir todas las señales de los sensores y para la segunda etapa se requiere de un microcontrolador con mediana capacidad de procesamiento pero que cuente con un sistema de comunicación USB. Se ha escogido para desarrollar la etapa de adquisición-simulación el microcontrolador MC87C51 el cual cuenta con las especificaciones adecuadas para cumplir con las tareas necesarias. Para la etapa de codificación-transmisión se especifico en el anteproyecto de este trabajo de titulación la utilización del MC68HC05JB2(3) como microcontrolador USB pero debido a su inesperada salida del mercado se autorizó que se suplantara con el CY7C63000A, un microcontrolador muy similar construido con tecnología RISC con una interfaz USB de baja velocidad, este microcontrolador, en general presenta las mismas especificaciones que el establecido originalmente, sólo que es fabricado por otra compañía: Cypress Semiconductors y no Motorola. En el apéndice A-1 se puede 13 CAPÍTULO 1 consultar una tabla comparativa entre los dos micros para corroborar la similitud en las especificaciones. Este microcontrolador, al igual que el de Motorola, es de bajo costo y de alto rendimiento, esta diseñado y fabricado específicamente para ser usado como controlador de un mouse opto-mecánico implementando una interfaz USB. Cabe mencionar que este µC es utilizado actualmente en varios mouse USB que se encuentran en el mercado. El hecho de que este microcontrolador se encuentre diseñado particularmente como microcontrolador de mouse USB es de vital importancia, ya que lo que se busca lograr con esto es que al momento de conectar el dispositivo al hub USB en la computadora, ésta considere al dispositivo conectado como un mouse y por lo tanto busque y asigne automáticamente el controlador apropiado y pueda empezar a funcionar inmediatamente. En caso contrario se tendría que instalar un nuevo controlador ya que el dispositivo no sería genérico y no se alcanzarían los objetivos de plug n’ play de este trabajo de titulación. Otro punto importante es que debido al alto costo (más de 650 dólares americanos) de un kit de desarrollo de un sistema USB Cypress, el microcontrolador se comprará ya programado (como controlador de mouse opto-mecánico USB) y será adaptado de tal forma para cumplir con todas las funciones de la segunda etapa de codificación-transmisión. Para ello se adaptará el hardware que utiliza y debido a que no se puede modificar el software del micro ya que es OTP, el software del microcontrolador de la primera etapa de Adquisición-Simulación, simulará un mouse opto-mecánico para poder enviarle la información al chip USB, de ahí el nombre de simulación de esta etapa, en resumen, el chip USB recibirá las mismas señales que genera el acoplo opto-mecánico de un mouse pero generadas por el MC87C51 en la etapa de Adquisición-Simulación. Esto es además de sus funciones de obtener las coordenadas del marco. 14 PROPUESTA DE DISEÑO 1.3.3 Fuente de Alimentación En cuanto a la fuente de alimentación del sistema, la energía podrá ser obtenida de dos lugares, del bus USB y de una fuente externa de alimentación, ya que el estándar USB provee una alimentación por medio del bus (5 volts @ 100mA) con esto se va a energizar el CY7C6300A, con el objeto de que éste se active al ser conectado al puerto USB de la computadora y realice todos los procesos de suscripción de manera inmediata. Debido a los requerimientos de potencia del MDC, no se podrá obtener toda la energía del bus para todo el dispositivo, por lo tanto en caso de ser necesario se integrará una fuente de alimentación para abastecer de energía a los elementos restantes. 1.4 Alcances y Limitaciones Básicamente las funciones y especificaciones con las que se pretenden cumplir con el proyecto son: Funcionará sólo en computadoras que cumplan con el estándar USB ver 1.1 o superior, por lo tanto desde sistemas operativos Mac 0S y Windows 98 en adelante. El usuario controlará el apuntador del mouse a lo largo y ancho de la pantalla y directamente sobre ella. El control será con un falange, por lo cual la resolución del sistema se limitará a 1.7cm aproximadamente por lo que para un monitor comercial de 14 pulgadas se tendrían 16 sensores horizontales por 11 verticales obteniendo una resolución de 11x16 lo que representan 176 puntos activos sobre la pantalla. Debido a la naturaleza de un touch screen con respecto a un mouse, el primero no provee la función del botón derecho de un mouse, sólo cuenta con la acción similar al botón izquierdo, por lo que la acción del botón izquierdo tanto del clic como del doble clic se harán directamente en la pantalla. No soportará las funciones secundarias que presenta el botón derecho de un mouse. La velocidad del dispositivo se define por el estándar de baja velocidad USB (1.5Mbps) la cual será suficiente. 15 CAPÍTULO 1 La energía de alimentación se obtendrá de dos fuentes, para la unidad externa de procesamiento de datos se utilizará la alimentación proveniente del bus USB y debido a los altos requerimientos de corriente, para el marco se utilizará una pequeña fuente de alimentación externa. Debido a que el marco cuenta con un cristal entintado, el proyecto a parte de las funciones de un touch screen proveerá al usuario de una protección a la alta luminosidad que presenta un monitor. El dispositivo no necesitará de mayor instalación que la inherentemente mecánica, con el solo hecho de conectarse al puerto USB y a la alimentación podrá ser utilizado inmediatamente. Una vez montado el marco sobre el monitor, este montaje debe ser lo más fijo posible para así evitar descalibraciones entre la posición del dedo y la posición del apuntador durante la operación del dispositivo. El marco es totalmente desmontable, por lo que su funcionamiento no se encuentra ligado al monitor, es decir, el proyecto se puede utilizar separadamente del monitor, como una interfaz de entrada de datos visuales no dinámicos, sin la necesidad de un monitor presente por lo tanto abaratando costos (lo cual representa un sin fin de aplicaciones en la educación e industria), etc. 1.5 ¿Porqué USB? Debido a la búsqueda de la unificación de estándares en la industria de periféricos, se desarrollo una interfaz de comunicación denominada USB la cual está suplantando en gran medida a todas las aplicaciones con interfaz serial o paralela. El USB como su nombre lo dice es universal, tanto física como lógicamente hablando, por lo que se puede implementar en todo tipo de computadoras independientemente del hardware y del sistema operativo que utilicen. El USB ante todo, ofrece fácil conectividad, soporta todo tipo de datos, desde entradas lentas de ratón hasta audio digitalizado y video sin comprimir. USB es un protocolo serial y un enlace físico, el cual transmite todos los datos de manera diferencial a través de un par de cables y por otro par provee alimentación a 16 PROPUESTA DE DISEÑO los dispositivos. Una de las aportaciones mas considerables del USB en la industria de periféricos, es que el bus configura los dispositivos una vez que son conectados e inmediatamente pueden ser utilizados sin la necesidad de instalar controladores ni de asignarles manualmente interrupciones ni direcciones de memoria. Debido a que el futuro del USB es muy prometedor, se decidió realizar este proyecto con esta interfaz, la cual le otorgará trascendencia y una mayor vida útil del proyecto, ya que no se encontrará fuera de la unificación de estándares que se busca con el USB, además de que debido a sus características, es la solución técnica más viable para alcanzar las especificaciones propuestas en este trabajo de titulación. En el siguiente capítulo se analiza a detalle este estándar que está cambiando la manera de fabricar periféricos. 17 CAPÍTULO 2 CAPÍTULO 2 INTERFAZ Y MICROCONTROLADORES USB E n esta segunda parte del escrito se describe un panorama sintetizado sobre el estándar de comunicación para periféricos denominado USB, ya que es este estándar el que se implementa en este dispositivo. La descripción se realiza enfocándose en los puntos principales del estándar mostrando sobre todo las bases necesarias para comprender los próximos capítulos, donde se desarrolla la implementación de este estándar en nuestro proyecto, además se analiza a detalle un ejemplo de microcontrolador USB. 2.1 Introducción a la Interfaz USB USB (por sus siglas en inglés: Universal Serial Bus) nació a partir de la necesidad de los usuarios de conectar un rango muy amplio de periféricos a sus computadoras, por lo que el USB ofrece al usuario una conectividad simple, elimina la vasta mezcla de diferentes conectores para impresoras, teclados, ratones y otros 18 INTERFAZ Y MICROCONTROLADORES USB periféricos. En un ambiente USB, no son necesarios los “DIP switches” para establecer las direcciones e interrupciones de los periféricos, estas son asignadas automáticamente. Soporta todo tipo de datos, desde entradas lentas de ratón hasta audio y video digitalizado. Además, todos los dispositivos USB se pueden conectar y desconectar en cualquier momento sin preocuparse por reiniciar la computadora. 2.2 Clasificación USB por Velocidad Un bus USB puede manejar diferentes cargas de trabajo en tráfico de datos, la tabla 2.1 muestra la clasificación del sistema USB y aplicaciones de acuerdo a sus tres variantes en velocidad de transferencia de datos. VELOCIDAD APLICACIONES ATRIBUTOS LOW- SPEED Dispositivos Interactivos El costo más bajo 1.5 Mb/s Teclados Fácil operación Ratones Conexión y desconexión dinámica Dispositivos de juegos Múltiples periféricos. FULL-SPEED Micrófono Costo más bajo 12 Mb/s Cámaras Fácil operación Unidades de disco Conexión y desconexión dinámica Teléfono Múltiples periféricos. Garantía de Ancho de Banda HIGH–SPEED 5 Video sin comprimir Bajo costo 480 Mb/s Almacenamiento Fácil operación Aplicaciones en tiempo real Conexión y desconexión dinámica Múltiples periféricos. Garantía de Ancho de Banda Alto Ancho de Banda Tabla 2-1.- Clasificación de aplicaciones USB por velocidad de transferencia de datos. 5 A partir del estándar USB ver 2.0 19 CAPÍTULO 2 Como se puede ver, el bus de 480 Mb/s comprende a todas las velocidades de operación. Típicamente los tipos de datos en High-speed y Full-speed suelen ser en una sola dirección, mientras que en los de baja velocidad los datos van y vienen de dispositivos interactivos. 2.3 Arquitectura USB USB es una unión física y un protocolo serial, el cual transmite todos los datos diferencialmente en un solo par de alambres. Otro par provee alimentación a los periféricos. El bus USB soporta intercambio de datos entre una computadora servidor y un amplio rango de periféricos con accesos simultáneos. Los dispositivos conectados comparten el ancho de banda del USB a través de un protocolo basado en batuta (token based protocol). El bus permite conectar, configurar, usar y desconectar a los periféricos mientras que el servidor y otros periféricos están en operación. 2.3.1 Descripción del Sistema USB Un sistema USB esta descrito por tres áreas: I. Servidor USB: Sólo un servidor debe existir en un sistema USB, típicamente esta presente en una computadora, un servidor incluye el hub raíz el cual forma el nexo para todas las conexiones de dispositivos. El servidor es el maestro del sistema USB, y como tal, controla los tiempos de todas las actividades de comunicación. Las conexiones orientadas en dirección al servidor se le denominan upstream. II. Dispositivo USB: Un dispositivo USB es cualquier dispositivo que utilice esta interfaz y que agregue capacidades al sistema, tales como ratones, touch screens, cámaras, etc incluso los hubs. La especificación establece dos tipos de periféricos: stand-alone (unidades independientes como un ratón) y compound (aquellos que tiene más de un periférico compartiendo un puerto USB). Un 20 INTERFAZ Y MICROCONTROLADORES USB ejemplo de un dispositivo compound es una video cámara con un procesador de audio separado. Cada dispositivo posee información para auto identificarse con el servidor así como sus configuraciones genéricas. Las conexiones orientadas en dirección a los dispositivos se les denomina downstream III. Interconexión USB: Se refiere a la manera en la cual los dispositivos USB se conectan y se comunican con el servidor. Esto incluye a la topología del bus, la relación entre capas, los modelos de flujo de datos y a la secuencia y tiempo de transmisión. 2.3.2 Comunicaciones USB Los periféricos controlados vía USB, son esclavos respondiendo a los comandos del servidor. Cuando un periférico es conectado a una red USB, el servidor se comunica con él para conocer su identidad y para descubrir qué controlador de dispositivo es requerido, también le asigna al dispositivo una dirección, a este proceso se le llama enumeración el cual se analiza más a detalle posteriormente. Las comunicaciones USB se realizan entre el servidor y los endpoints localizados en los periféricos. Un endpoint es una dirección única del periférico que es la fuente y recepción de los datos. Cuatro bits definen la dirección del endpoint del dispositivo; el endpoint 0 esta reservado para transferencias de control, dejando hasta 15 destinos u orígenes bidireccionales de datos para los periféricos. La idea de los endpoints nos lleva a un importante concepto en las transmisiones USB, que son los conductos, (denominados pipes en inglés). Todas las transferencias USB ocurren a través de conductos virtuales que conectan a los endpoints de los periféricos con el servidor, los cuales hasta tienen tamaño (léase ancho de banda). El ancho de banda en el USB es adjudicado entre los conductos, o sea que el ancho de banda es compartido entre todos los dispositivos conectados, el USB designa un ancho de banda a cada conducto cuando éste es creado. Los dispositivos deben de tener la capacidad de almacenar datos por medio de buffers, 21 CAPÍTULO 2 por lo que dispositivos que manejen más ancho de banda también dispondrá de una mayor capacidad de almacenamiento. Descriptores Una vez que se ha establecido una comunicación con los periféricos a través de los conductos, cada endpoint regresa un descriptor, los cuales son estructuras de datos que le dicen al servidor acerca de la configuración y expectativas del periférico. Todos los descriptores tienen ciertas características en común, por ejemplo el byte cero siempre representa la longitud del descriptor en bytes y el byte uno siempre representa el tipo de descriptor. Existen diferentes tipos de descriptores los cuales aportan diferentes tipo de información como tipo de transferencia, máximo tamaño de los paquetes de datos y en algunos caso el ancho de banda necesitado. Dados estos datos, el servidor configura y reinicializa los dispositivos para poder empezar a utilizarse. Existen cinco tipos de descriptores principales: i .Descriptor de Dispositivo.- Este descriptor tiene la información básica sobre el dispositivo. Es el primer descriptor que lee el servidor ya que este descriptor incluye la información que el servidor necesita para poder conocer el tipo de información que debe pedir. ii. Descriptor de Configuración.- Cada dispositivo tiene al menos uno descriptor de configuración el cual describe las funciones y habilidades del dispositivo y como se pueden configurar. A menudo una sola configuración es suficiente, pero un dispositivo con modos múltiples de operación puede tener múltiples configuraciones y cada una de estas configuraciones tiene un descriptor. Algunos ejemplos de la información que provee este descriptor son la cantidad de potencia requerida, número de interfaces admitidas, etc. iii. Descriptor de Interfaz.- Este descriptor contiene información acerca de los endpoints del dispositivo, proporciona la cantidad de endpoints que el dispositivo 22 INTERFAZ Y MICROCONTROLADORES USB presenta y que configuración representa cada endpoint. Esto quiere decir que para cada configuración que presente el dispositivo existe un endpoint que la comunica por lo que para cambiar la configuración del dispositivo sólo se cambia el endpoint en la comunicación. iv. Descriptor de Endpoints.- El descriptor de endpoints describe a detalle cada endpoint especificado en el descriptor de Interfaz. Las características que se describen aquí son por ejemplo la dirección del endpoint, atributos, máximo tamaño de paquetes, intervalos de muestreo, etc. v. Descriptor de caracteres.- Un descriptor de caracteres contiene texto descriptivo. La especificación USB define a los descriptores de caracteres para información sobre el fabricante, productos, número de serie, etc. 2.3.3 Hubs USB Los hubs USB son los nodos de comunicación que interconectan a los dispositivos. Éstos incrementan la lógica de la red. Un hub tiene una sola conexión upstream, que va hacia el hub raíz o al siguiente hub más cercano al raíz, y una o varias conexiones downstream para así, convertir un punto de conexión, en múltiples puntos de conexión. Los hubs son en sí dispositivos USB, y pueden incorporar cierta cantidad de inteligencia. Una parte crítica de la filosofía USB es que los usuarios puedan conectar y desconectar dispositivos sin la necesidad de apagar todo el sistema, ésto es logrado gracias a los hubs, ya que detectan cambios en la topología. Ellos también alimentan a la red de energía ya sea que tengan su propia fuente de alimentación o canalicen la del servidor. Una vez que un hub detecta un nuevo periférico (o la desconexión de uno), reporta la nueva información al servidor, y establece comunicación con el dispositivo recién insertado. 23 CAPÍTULO 2 2.3.4 Topología La topología USB es de estrellas en línea (tiered star) véase figura 2-1. Un hub se encuentra en el centro de cada estrella, las conexiones A son upstream con conectores tipos A y las B son downstream con conectores tipo B. Cada segmento es una conexión punto a punto entre el servidor y un hub o dispositivo, o de un hub a otro hub o dispositivo. Debido a las restricciones de tiempo que presenta un hub y por los tiempos de propagación en los cables, el máximo número de hubs que se pueden conectar en serie es de seis incluyendo el hub raíz que se encuentra en el servidor. Figura 2-1. La topología USB tiered star 2.4 Configuración del Sistema El USB soporta que los dispositivos se conecten y se desconecten en cualquier momento, por consecuencia el software del sistema debe aceptar y manejar cambios dinámicos en la topología física del bus. 24 INTERFAZ Y MICROCONTROLADORES USB 2.4.1 Conexión de Dispositivos USB Todos los dispositivos USB son conectados en los puertos de los hubs. Éstos tienen un bit de estado que se usa para reportar la conexión o desconexión de un dispositivo en uno de sus puertos. El servidor al tener el hub raíz también los tiene, en caso de hubs externos el servidor solicita estos bits a los hubs. En caso de conexión de algún dispositivo, el servidor habilita el puerto y asigna una dirección al dispositivo a través del conducto de control en la dirección por default. El servidor asigna una dirección única al dispositivo y después determina si el nuevo dispositivo es un hub o un dispositivo funcional. Después el servidor termina el conducto de control conectado al endpoint cero utilizando la nueva dirección asignada al dispositivo. Si el dispositivo conectado es un hub con dispositivos funcionales conectados a sus puertos, entonces al procedimiento anterior le sigue el mismo pero para cada uno de los dispositivos. Si el dispositivo conectado es funcional, entonces el software del servidor apropiado para este dispositivo maneja la notificación de conexión. El estándar USB contempla el software de una gran variedad de dispositivos, para dispositivos especiales o funciones especiales, éstos deben proporcionar su propio software que el usuario deberá instalar antes de conectar el dispositivo. 2.4.2 Desconexión de Dispositivos USB Cuando se desconecta un dispositivo del puerto, el hub deshabilita el puerto y le indica al servidor que un dispositivo ha sido desconectado. Esta notificación la maneja el software del dispositivo en el servidor. Si el dispositivo que se removió es un hub, el servidor maneja la desconexión de éste y de todos los dispositivos que estaban conectados a él. 2.4.3 Enumeración del Bus La enumeración del bus es la actividad que identifica y asigna una dirección única a los dispositivos que se conecten al bus. El proceso de enumeración del bus empieza cuando un dispositivo es conectado y consiste en las siguientes acciones: 25 CAPÍTULO 2 i. El hub al cual se conectó el dispositivo informa al servidor de la conexión por medio de una respuesta a través de su conducto de cambios. En este punto, el dispositivo conectado se encuentra alimentado pero el puerto está deshabilitado. ii. El servidor, al conocer el puerto donde fue conectado el dispositivo determina el cambio de la topología. iii. El servidor espera al menos 100ms para que la alimentación de energía en el dispositivo este estable, después el servidor habilita el puerto y lo inicializa. iv. En este punto el dispositivo se encuentra en su estado por default y no puede obtener más de 100ma del VBus. Todos sus registros están inicializados y responden en la dirección por default. El servidor solicita los descriptores del dispositivo. v. El servidor lee el descriptor de dispositivo para determinar el valor máximo de transferencia de datos que maneja su conducto. vi. El servidor asigna una dirección única al dispositivo. vii. Usando la nueva dirección, el servidor lee la información de configuración (del descriptor de configuración) del dispositivo. Este proceso puede tomar algunos milisegundos para completarse. viii. En base a esta configuración y cómo va a ser usado el dispositivo, el servidor configura el dispositivo. Después de este punto el dispositivo ya esta configurado y se le asignan los endpoints (a través del descriptor de endpoint). En este momento, el dispositivo ya está listo para usarse. 26 INTERFAZ Y MICROCONTROLADORES USB Dado que el USB permite la conexión y desconexión de dispositivos a voluntad del usuario, la enumeración es muy frecuente en un sistema USB. Además, la enumeración del bus incluye también la detección y manejo de desconexiones, cuando un dispositivo es desconectado, se notifica al servidor y éste deshabilita el puerto y actualiza la topología. 2.5 Capa Física Esta se divide en: Eléctrica Mecánica 2.5.1 Eléctrica El USB transfiere las señales y la alimentación a través de un cable de 4 hilos, mostrado en la Figura 2-2 . La señalización es diferencial y es establecida a través de un par trenzado 28 AWG. Otro par de 20 a 30 AWG provee la alimentación y tierra. FIGURA 2-2 . Cable USB Como ya se mencionó existen tres tasas de trasmisión: Señalización USB High-speed cuya tasa es de 480 Mb/s. Señalización USB Full-speed cuya tasa es de 12 Mb/s. Señalización USB Low-speed cuya tasa es de 1.5 Mb/s. 27 CAPÍTULO 2 Los servidores y los hubs proveen la capacidad tal que datos a full o low-speed puedan ser transmitidos a 480Mb/s entre el servidor y el hub, pero transmitidos a full o low speed entre el hub y el dispositivo. Esta capacidad minimiza el impacto que estas dos velocidades tienen hacia el ancho de banda disponible para los dispositivos de high-speed. El modo low-speed esta definido para soportar un número limitado de dispositivos con esta velocidad, tales como ratones ya que un uso mas general degradaría la utilización del bus. Codificación USB emplea la codificación de datos NRZI al transmitir paquetes. En la codificación NRZI, un “1” se representa no cambiando el estado anterior y un “0” se representa cambiando el estado anterior. Véase como en la figura 2-3 se muestra un grupo de datos y su equivalente NRZI. Un nivel alto representa el estado J y un nivel bajo representa el estado K en la línea de datos. Una serie de unos causa largos periodos sin ninguna transición en los datos. Figura 2-3. Codificación de datos NRZI El reloj es transmitido codificado junto los datos diferenciales. Un campo de sincronía precede a cada paquete para permitir al receptor sincronizar su reloj de recuperación de bits. Bit Stuffing Una manera para asegurar una adecuada transmisión de la señal es empleando un método llamado bit stuffing, consiste en insertar un cero después de cada seis unos consecutivos en la secuencia de datos antes que éstos sean codificados en NRZI, de 28 INTERFAZ Y MICROCONTROLADORES USB esta forma se fuerzan las transiciones en la secuencia codificada. Esto le proporciona al receptor una transmisión de datos por lo menos cada 7 tiempos de bit, y así asegurar la integridad de los datos y del reloj. El transmisor siempre implementa esta técnica y el receptor deberá decodificar los datos en NRZI, después reconocer los bits que fueron agregados por éste método y descartarlos. Si el receptor recibe siete unos consecutivos entonces habrá ocurrido un error de bit stuffing y el paquete deberá ser ignorado. La figura 2-4 muestra cómo es la secuencia de codificación de los datos incluyendo el bit de stuff. Figura 2-4. Secuencia de codificación de los datos. La introducción del bit de stuff es lo último que se hace antes de codificar en NZRI y ser transmitidos. Manejo de la Alimentación Para conectar dispositivos que utilizan otro tipo de estándar (PS/2, RS-232) es necesario apagar el equipo al cual se conectan, con USB este problema se nulifica ya que el usuario es libre de instalar y remover periféricos sin importar el estado de poder de la computadora. El cable lleva 4 hilos punto a punto, los hilos de señalización, y los hilos de VBus y GND para alimentar a los dispositivos. VBus es nominalmente +5V@100ma en la fuente, por lo que un dispositivo el cual sus necesidades de alimentación no rebasen esta especificación puede obtener su alimentación del mismo bus, mientras cualquier otro dispositivo con consumos mayores de energía deberá tener su propia 29 CAPÍTULO 2 fuente de alimentación. USB ver2.0 soporta dispositivos con requerimientos de corriente hasta 500ma pero esto debe ser habilitado por software, esto quiere decir que al configurarse debe de consumir hasta 100ma y después solicitar al servidor o hub mayor potencia. Para garantizar el valor de Vbus y la impedancia correcta en las terminaciones, éstas son biased en cada extremo del cable. Las terminaciones también permiten la detección de conexión y desconexión de cada puerto y diferenciar entre dispositivos high/full-speed y low-speed. Los servidores y hubs USB pueden realizar un manejo de la energía que se proveen a los dispositivos habilitando y deshabilitando la alimentación a cada uno de ellos, además de que pueden darles instrucciones para que entren en estado de suspensión, si es que los dispositivos lo soportan, lo cual reduce el consumo a un máximo de 500a para dispositivos de baja velocidad y a 2.5ma para los de alta velocidad. A ningún dispositivo se le es permitido suministrar corriente al bus, sólo pueden obtener corriente de él. Cuando existe una sobre demanda de corriente un mecanismo limitador de corriente se acciona, y para inicializar éste mecanismo es necesario reiniciar el servidor o hub. No es necesario ninguna re-inicialización manual por parte del usuario. Identificación de la Velocidad de Dispositivos Los mecanismos para la identificación de dispositivos de low, full & high speed son los siguientes: La especificación USB establece, que para dispositivos de low-speed se debe conectar en el pin de D- una resistencia de pull-up, ya que después de un reset, la terminación D- debe de cargarse de 0 a 2.0volts en 2.5 s. Además de la resistencia de pull-up, se necesita cuidar que la capacitancia total desde el dispositivo hasta el extremo final del cable sea menor a 250pF, para que se pueda 30 INTERFAZ Y MICROCONTROLADORES USB cumplir la especificación. Si se cumple este valor de capacitancia, el valor de la resistencia debe ser de 7.5kΩ ± 1% conectada al VBus. Para mayores valores de capacitancia, se debe usar una resistencia de 1.5kΩ ± 5% conectada a una fuente de voltaje entre 3.0V y 3.6V. Para los dispositivos de High y Full speed la resistencia de pull-up se conecta en el pin D+ y tiene las mismas funciones que en el punto anterior. Capacitor de bypass En una red USB pueden existir una gran cantidad de dispositivos y todos estos se pueden estar alimentando directamente del VBus Cada dispositivo representa una carga para el hub por lo que en el momento en que un dispositivo se conecta o se desconecta puede afectar el nivel de voltaje que presenta el VBus para todos los dispositivos de la red. Por lo cual, se debe de implementar un capacitor de bypass (entre VBus y Tierra) en cada uno de los dispositivos para no permitir la fluctuación del nivel de voltaje en los dispositivos y mantener el nivel lo más estable posible. La especificación USB señala que el valor del VBus debe de ser de 5V ± 330mV. Para cumplir esta especificación se sugiere la utilización de un capacitor electrolítico de un valor no mayor a 4.7µF a 50V. Se puede encontrar una tabla con las características eléctricas del estándar en el apéndice A-2. 2.5.2 Mecánica El estándar USB especifica dos clases de cables y dos variaciones del conector. Cables de alta velocidad para comunicaciones de 12 y 480Mb/s y cables de baja velocidad para comunicaciones a 1.5Mb/s. Los primeros tienen un mejor blindaje que su contraparte por lo tanto son más costosos. 31 CAPÍTULO 2 Cada cable tiene un conector “A” en un lado y un conector “B” en el otro. Dado que los dos tipos son físicamente diferentes es imposible instalar un cable incorrectamente. La longitud de los cables esta limitada hasta 5m para conexiones a 12 y 480Mb/s y a 3m para 1.5Mb/s. Esto suena al revés pero viene del hecho de que para conexiones a alta velocidad se utilizan mejores cables. Véase la figura 2-5(a) donde se muestran los conectores tipo A y la figura 2-5(b) donde se muestran los conectores tipo B. Conector A Receptáculo A Viene de un dispositivo USB “Upstream” Salida de un servidor o hub USB (a) Conector B Receptáculo B Viene del servidor Entrada de un dispositivo o hub USB “Downstream” (b) Figura 2-5. (a) Los conectores A siempre son orientados upstream y (b) los conectores B son orientados downstream. La figura 2-6 muestra las terminaciones del conector A y sus asignaciones por número, señal eléctrica que transporta y color, que son válidos también para conectores B sólo cambia la posición física. Número Señal Color 1 VBus Rojo 2 D- Blanco 3 D+ Verde 4 GND Negro Figura 2-6. Asignación de las terminaciones del conector A USB 32 INTERFAZ Y MICROCONTROLADORES USB 2.6 Protocolo El servidor controla todas las transferencias de datos. La mayoría de las transferencias envuelven la transmisión de hasta 3 paquetes. Cada transmisión empieza cuando el servidor o algún dispositivo, de acuerdo a un programa de tiempo, envía un paquete USB describiendo el tipo y dirección de la transmisión, la dirección del dispositivo y el número de endpoint. A este paquete se le llama “token packet ”y se verá su composición en secciones posteriores. El origen de la transferencia entonces envía un paquete de datos o indica que no tiene datos para transferir. En general, el destino responde con un handshake indicando si la transmisión fue un éxito. Como ya se vio anteriormente, el modelo de transferencia de datos USB entre un origen o destino en el servidor y un endpoint en un dispositivo, es conocido como conducto). Hay dos tipos de conductos o pipes: stream y message. Los datos stream no tienen una estructura USB definida mientras los datos message si la tienen. Adicionalmente, los conductos tienen asociaciones con el ancho de banda de los datos, tipo de servicio de transferencia y endpoints. La mayoría de los conductos inician su existencia cuando un dispositivo es configurado. Un pipe message, es el conducto de control por convención, siempre se crea una vez que el dispositivo es conectado, para proveer acceso a la configuración, estado e información de control del dispositivo. 2.6.1 Ordenación de los bits El bit menos significativo es el primero en ser enviado por el bus, seguido por el siguiente menos significativo, así hasta llegar hasta el más significativo. 2.6.2 Campo de sincronía Todos los paquetes empiezan con un campo de sincronización, es usado por el receptor para alinear los datos entrantes con el reloj local. Un campo de sincronía 33 CAPÍTULO 2 esta definido por 8 bits para full/low-speed y 32bits para high-speed. Los dos últimos bits en este campo son marcadores usados para identificar el final del campo de sincronía y por inferencia, el empiezo del paquete de identificación (PID). 2.6.3 Campo del paquete de identificación (PID) Un PID consiste en un paquete de 4 bits seguido por el mismo paquete solo que negado (complemento a 1 del primero), formando un campo de 8 bits. El PID indica el tipo y formato del paquete además el tipo de detección de error que se aplicó. Los últimos 4 bits en el PID aseguran la confiabilidad de la decodificación de la primera parte del PID, que es la que lleva la información. Un error en el PID ocurre cuando la primera y la segunda parte no son complemento. El servidor y todos los dispositivos deben hacer esta comprobación en todos los PIDs que se reciban, y cualquiera que no coincida se considera corrupto y éste, así como el resto del paquete es ignorado por el receptor. 2.6.4 Campo de dirección Los endpoints mencionados en secciones anteriores están compuestos por dos campos: el campo de dirección y el campo endpoint. El campo de dirección especifica qué dispositivo(por su dirección) es el origen o el destino del paquete. Esta formado por 6 bits que ofrecen un total de 128 direcciones. Por definición, cada campo de dirección define a un solo dispositivo. Cada vez que se reinicie la dirección del dispositivo es por convención cero y debe cambiarse por el servidor durante el proceso de enumeración. Por tanto, la dirección cero esta reservada y no debe de asignarse a ningún otro dispositivo 2.6.5 Campo endpoint Un campo adicional de 4 bits permite un direccionamiento más flexible de los dispositivos en los que se requiere mas de un endpoint. Todos los dispositivos deben soportar un conducto de control en endpoint cero(el cual es el pide de control por default). Los dispositivos de baja velocidad soportan un máximo de 3 34 INTERFAZ Y MICROCONTROLADORES USB conductos: el conducto de control con endpoint cero mas dos conductos adicionales. Los dispositivos de alta velocidad soportan un máximo de 16. 2.6.6 Campo del número del marco El campo del número del marco esta compuesto por 11 bits, y es incrementado por el servidor. Este campo es cíclico al alcanzar su valor máximo. 2.6.7 Campo de datos Un campo de datos puede variar de un rango desde cero hasta 1,024 bytes, la figura 2-7 muestra el formato para múltiples bytes. Los bits de datos en cada byte se ordenan del menos significativo al mas significativo. Figura 2-7. Formato del campo de datos 2.6.8 Formato de los paquetes Un paquete completo de transmisión esta formado por dos campos: un campo token seguido por otro campo que puede ser de datos o en su caso un campo de handshake(confirmación de envío). El paquete token está formado en principio por el campo PID, seguido por la dirección del dispositivo involucrando a los campos de dirección y de endpoint, finalizando el paquete token con un campo de detección de errores, usando el mecanismo CRC el cual se explicará más adelante. Este último campo solo protege a los campos de la dirección y del endpoint ya que como vimos el PID tiene su propio mecanismo de detección de errores. A el campo de datos también se le es agregado un campo de detección de errores. Véase la figura 2-8, donde se muestra un paquete de transmisión USB armado con sus campos y señalando los bits por campo. 35 CAPÍTULO 2 Figura 2-8. Paquete de transmisión USB A este paquete se le agregan los bits de stuff y se codifica en NZRI y está listo para transmitirse. 2.7 Detección y Manejo De Errores USB provee protección contra errores de transmisión, en cada paquete es incluido campos de protección de error. Específicamente USB emplea tres métodos de detección de error: Violación del Bit Stuff Comprobación de los bits PID CRC La detección de errores por medio de Violación del Bit Stuff y comprobación de los bits PID ya se analizaron anteriormente, ahora veremos el método de Comprobación de Redundancia Cíclica (CRC). Los CRCs se usan para proteger a todos los campos del paquete (excepto los PID) tanto los paquetes token como de datos. Todos los CRCs son generados sobre su campo respectivo en el transmisor antes que se ejecute el bit stuffing. De una manera similar, los CRCs son decodificados en el receptor después que los bits de stuff han sido removidos. Un CRC fallido es considerado como un indicador de un paquete corrupto. El CRC brinda un 100% de cobertura en errores de bits simples y dobles. 36 INTERFAZ Y MICROCONTROLADORES USB En este escrito no es relevante conocer el método de generación de campos CRC, si se desea profundizar en esto, se puede consultar: Andrew S. Tanenbaum “Redes de Computadoras”. El manejo de errores incluye el reporte y reintento de transmisiones fallidas. El controlador USB seguirá con la transmisión hasta que encuentre tres errores, ya que una vez ocurridos informará a su contraparte en la transmisión sobre la falla para que retransmita, esto ocurre en transferencias de control donde se requiere un alto grado de confiabilidad de los datos. Por otro lado, las transferencias isocrónicas debido a sus requerimientos de ancho de banda y latencia no permite retrasmisiones y deben tolerar la incidencia de errores no corregidos. 2.8 Tipos de Flujo de Datos Una transferencia de datos USB se genera entre el software del servidor y un endpoint en particular en un dispositivo USB y formando un conducto y cada dispositivo puede tener varios conductos. Por ejemplo, un dispositivo USB puede tener un endpoint que soporte un condcuto para transmitir datos del dispositivo y otro conducto para recibir datos. La arquitectura USB maneja cuatro tipos de transferencia de datos: i. Transferencias de control ii. Transferencias Bulk iii. Transferencias de Interrupciones iv. Transferencias Isocrónica de datos El protocolo soporta modos mixtos de transmisión, pero un conducto sólo se puede utilizar un tipo de transferencia. 37 CAPÍTULO 2 i. Transferencias de control Un sistema USB utiliza los datos de control para configurar a los dispositivos cuando son conectados. Algunos controladores de dispositivos puede escoger el uso de transferencias de control para fines específicos. Aquí la garantía en la entrega correcta de los datos es máxima. Las transferencias de control son bi-direccionales y únicamente se llevan acabo a través del conducto de control establecido entre el servidor y el endpoint cero del dispositivo. Existen dos tipos de transferencia de control, el control de lectura para dispositivos que no pueden ser configurados por el servidor(ratones, teclados, etc.) y el control de escritura para dispositivos que si pueden ser configurados por el servidor (impresoras, escáneres, etc. en los cuales también se soporta el control de lectura). ii. Transferencias bulk Esta tipo de transferencia se utiliza cuando es necesario trasmitir grandes cantidades de datos, como en impresoras y escáneres. Esta transmisión es secuencial. La confiabilidad de los datos consiste en detectar errores y si el servidor lo permite(dependiendo de la actividad del bus), pedir retransmisiones. Además, el ancho de banda que se utiliza en este tipo de transmisiones puede variar dependiendo de la actividad del bus. iii. Transferencias de interrupciones En este tipo de transferencias se les da prioridad a los datos, aquí el dispositivo puede transmitir en cualquier momento y el servidor lo atenderá. Los datos enviados por este tipo de transferencias consisten típicamente en notificaciones de eventos, caracteres(teclado), o coordenadas(ratón). Debido a que en los dispositivos que utilizan este tipo de transferencia puede variar el tiempo de transmisión, el servidor USB debe acoplarse a estas tasas sin importar si son lentas o rápidas. Son transferencias unidireccionales entre el servidor y el dispositivo a través de un conducto de Interrupción el cual no tiene una estructura de datos determinada y se pueden establecer con cualquier endpoint exceptuando el cero. 38 INTERFAZ Y MICROCONTROLADORES USB iv. Transferencia isocrónica La transferencia de datos isocrónica es continua y en tiempo real. En los datos isocrónicos es vital el tiempo de entrega, por ello se necesita de una tasa de transferencia y de recepción de datos lo mas rápida y estable posible para así asegurar las sincronizaciones en tiempo. Un ejemplo típico de datos isocrónicos es la voz. Cualquier error en la transmisión no es corregido y tampoco se intentan retransmisiones. Por eso, USB considera una tasa de error lo suficientemente baja para que no sea considerado un factor importante. A las transmisiones USB isocrónicas se les es asignado un ancho de banda dedicado para asegurar que los datos puedan ser entregados a las tasas esperadas. 2.9 Clases USB Como se sabe, es por medio de las peticiones de interrupción la forma en el que el servidor conoce el tipo de información que debe pedir al dispositivo, por ejemplo en un mouse las peticiones de interrupción se encuentran enfocadas a información sobre coordenadas de movimiento y estados de los botones, en un teclado son los caracteres, etc. Dado lo anterior y cuando se tiene un grupo de dispositivos que presentan peticiones de interrupción similares, es lógico definir una serie de peticiones que todos los dispositivos similares puedan usar. Las clases hacen esto posible. Una ventaja que provee tener clases es que se facilita la programación, porque mucho del trabajo de desarrollo del protocolo de comunicaciones ya esta hecho. Además, el sistema operativo del servidor puede incluir un sólo controlador para la clase, liberando al usuario y al fabricante la necesidad de un controlador externo para el dispositivo. Las clases oficialmente reconocidas hasta ahora por el foro de implementadores USB son las siguientes: 39 CAPÍTULO 2 • Audio Devices: En esta clase se encuentran incluidos dispositivos de audio, voz, o sonidos y sus controles relacionados. • Communications Devices: Se refiere a teléfonos, modems y otros tipos de dispositivos de telecomunicaciones. • Mass Storage: CD-ROM, cintas, unidades de discos. • Human Interface Device (HID): Teclados, ratones, controles de juego o cualquier dispositivo que transfiera bloques de información hacia o desde el servidor en tasas moderadas, con o sin tener máxima latencia garantizada. • Monitor Control: Monitores de despliegue de estado en pantalla que cuenten con controles al usuario. • Power Devices: Dispositivos que provean control sobre el consumo de potencia, reguladores y fuentes no interrumpibles. • Printer: La interfaz de impresoras ( excepto información sobre el papel). Un caso especial es la clase de los concentradores, ya que ésta se encuentra definida en las especificaciones USB originales. Si se desea profundizar más sobre este o algún otro tema del estándar USB, se puede consultar las especificaciones completas disponibles en www.usb.org. 2.10 Microcontroladores USB Dado que el USB, como su nombre lo dice es universal, existen en el mercado cientos de chips para aplicaciones USB. Los dispositivo USB son difíciles de clasificar, pero se pueden considerar tres categorías: Controladores USB del lado del host.- son los que se encuentran dentro de la computadora. 40 INTERFAZ Y MICROCONTROLADORES USB Controladores Stand alone.- como una pequeña UART, estos chips manejan las comunicaciones pero es necesario la ayuda de un microprocesador como cerebro del dispositivo. Controladores integrados .- Son microcontroladores con interfaces USB integradas los cuales manejan tanto el control de la aplicación y las comunicaciones vía la interfaz. En una manera más detallada, podemos clasificar los productos USB como sigue: Controladores de servidor Hubs Chips de interfaz Microcontroladores con interfaz Chips de funciones dedicadas Software USB Herramientas de diseño Para una mejor referencia a todos los circuitos integrados y soluciones USB se puede consultar el sitio en Internet de una empresa de consultoría alemana cuya dirección electrónica es: www.ibhdoran.com/usb_link.html Uno de los mayores fabricantes de circuitos integrados con interfaces USB es Cypress Semiconductors ( www.cypress.com ), ya que presentan una gran variedad de chips de alta y baja velocidad basados en procesadores RISC de 8 bits y con conjuntos de instrucciones optimizadas para aplicaciones USB. En lo que resta del capítulo estudiaremos a detalle un microcontrolador perteneciente a esta familia, el CY7C63000A ya que es el que se utiliza en este proyecto de titulación. 2.10.1 Descripción del Microcontrolador En esta sección del capítulo se estudia a detalle uno de los microcontroladores USB más populares en el mercado debido a su bajo costo y facilidad de implementación, el CY7C6300A, éste es un microcontrolador perteneciente a una familia de 8-bit 41 CAPÍTULO 2 RISC OTP6 producidos por CYPRESS Semiconductors. La característica principal de este microcontrolador es que está provisto de una Interfaz Serial USB de 1.5 Mb/s, cubriendo en su totalidad la especificaciones del estándar de baja velocidad USB, además cuenta con 35 instrucciones optimizadas para aplicaciones USB, por lo tanto representa una solución de bajo costo para la fabricación de periféricos USB de baja velocidad como ratones, joysticks, touch-screens, etc. En esta primera sección del capítulo se pretende dar una visión general y rápida sobre las características de este microcontrolador, haciendo un énfasis especial en su interfaz USB, para después analizar su aplicación como controlador de mouse USB. Básicamente el CY7C6300A cuenta con: Interfaz Serial USB o Cumplimiento de la especificación USB de 1.5 Mb/s versión 1.1 o Soporta 1 dirección de dispositivo y 2 endpoints (un endpoint de control y otro endpoint de datos) Microcontrolador RISC de 8 bits. o Arquitectura Harvard o Soporta un oscilador externo de 6Mhz. se duplica internamente a 12Mhz. o Conjunto de instrucciones optimizadas para USB Memoria Interna o 128bytes de RAM o 2Kbytes de EPROM Puertos de Entrada y Salida o Un transceiver USB integrado o 2 puertos de entrada y salida de propósito general, el P0 con 8 pines y el P1 con 4 pines y este puerto soporta alta corriente (hasta 16mA). o Modo especial de Entrada/Salida para optimización de foto transistores y leds para aplicaciones de mouse. 6 OTP: One Time Programable 42 INTERFAZ Y MICROCONTROLADORES USB o Soporta interrupción por medio de todos los pines y la utilización de máscaras. Un contador de carrera libre de 8 bits Un contador Watch dog Reset interno al encenderse Voltaje de operación de 4.0 V a 5.25 VDC Todo lo anterior está conformado como se muestra en la figura 2-9 y 2-10 de la siguiente forma en el micro: Figura 2-9. Diagrama a bloques del CY7C63000A La tabla 2-2 muestra la configuración de los pines es la siguiente (también véase la figura 2-10): 43 CAPÍTULO 2 Nombre Descripción Nombre Descripción P0.0 P0.1 P0.2 P0.3 P0.4 Puerto 0 bit 0 Puerto 0 bit 1 Puerto 0 bit 2 Puerto 0 bit 3 Puerto 0 bit 4 P1.2 P1.3 XTALIN XTALOUT CEXT P0.5 P0.6 P0.7 Puerto 0 bit 5 Puerto 0 bit 6 Puerto 0 bit 7 D+ DVpp P1.0 Puerto 1 bit 0 Vcc P1.1 Puerto 1 bit 1 Vss Puerto 1 bit 2 Puerto 1 bit 3 Oscilador IN Oscilador OUT Conexión de circuito RC Data+ USB Data- USB Voltaje de programación Alimentación de voltaje Tierra Tabla 2-2. Configuración de los pines y diagrama Organización de la Memoria de Programa Como ya se vio este microcontrolador cuenta con un espacio en memoria de programas de 2kbytes, la cual sólo se puede programar una vez.. Este espacio en memoria esta divido en dos grupos: vectores de interrupción y el código de programa. Los vectores de interrupción ocupan los primeros 16 bytes, el largo de cada vector es de 2 bytes. Después del reset el PC apunta a la localidad cero de la memoria de programas. La figura 2-11 muestra la organización del espacio en memoria para programas. Figura 2-11. Espacio de memoria de programas 44 INTERFAZ Y MICROCONTROLADORES USB Este microcontrolador incluye un bit de seguridad, el cual, cuando es activado, se activa la protección de que al intentar leer la memoria PROM, ésta sólo envía 0xFF al programador, y así se protege el código del programa. Organización de la Memoria de Datos El microcontrolador incluye 128 bytes de memoria de datos, de los cuales 16 bytes son usados como stacks FIFOs para los endpoints 0 y 1, cada uno de 8 bytes. También incluye 2 apuntadores para la RAM, el Program Stack Pointer(PSP) y el Data Stack Pointer (DSP). El valor después de un reset de PSP es 0000h e incrementa en 2 cuando se llama a una subrutina y se decrementa en 2 cuando regresa de ella. El DSP se decrementa en 1 cuando se guarda algo y se incrementa en 1 cuando se saca. El valor después del reset de DSP es también 0000h y aquí es donde hay que tener la precaución de que antes de que se vaya a utilizar por primera vez el stack hay que remapearlo para que no escriba en el stack del PSP, por lo general se mapea al final de la memoria apuntando el DSP a la localidad 0070h, este procedimiento lo debe hacer el usuario. La figura 2-12 ilustra la memoria de datos. Figura 2-12. Espacio de memoria de datos 45 CAPÍTULO 2 Reset Durante un reset, todos los registros se restauran a su valor original, la dirección de dispositivo USB se establece a cero y todas las interrupciones son deshabilitadas. Además, el PSP y el DSP se inicializan a 0000h. El CY7C63000A soporta 3 tipos de reset: i. Reset de encendido.- Éste ocurre cada vez que se enciende el dispositivo. Al final del reset el controlador USB se pone en modo suspendido para ahorrar energía( el reloj, el contador y la lógica de interrupción se apagan en modo suspendido). ii. Reset de Watch Dog.- Ocurre cuando el bit más significativo del contador del Watch dog realiza una transición de bajo a alto. Tiene una duración de 8.19ms, tiempo en el cual el microcontrolador empieza la ejecución en la dirección ROM 0000h. El bit 6 del Status and control register (SCR) se levanta como testigo del evento. Debido a que el registro de dirección de dispositivo USB se ha reinicializado el transmisor USB es deshabilitado porque de lo contrario el controlador USB respondería a todas las transacciones hechas con dirección cero. El transmisor es otra vez habilitado cuando el bit 6 del SCR se ponga en bajo, y esto último lo debe ejecutar el código de programa hecho por el usuario. iii. Reset USB.- Sucede cuando tanto D+ como D- se encuentran en bajo por lo menos 16 s, se levanta el bit 5 del SCR como testigo del evento. Si un reset USB sucede cuando el dispositivo se encuentra suspendido, esta condición es terminada, pero el microcontrolador no funciona hasta que termine el reset. Contador de Carrera Libre El contador incluido en este microcontrolador es manejado por un reloj de 1/6 de la frecuencia del oscilador (con un oscilador de 6 MHz la resolución del contador es 46 INTERFAZ Y MICROCONTROLADORES USB de 1s). La cuenta es almacenada en el Read Only Timer Register, el cual se inicializa durante un reset o cuando se entra en estado de suspensión. El contador genera dos tipos de interrupción: la interrupción de 128s y la interrupción de 1.024ms. Puertos de Entrada y Salida de Propósito General. El microcontrolador cuenta con 2 puertos de propósito general: Puerto 0 y Puerto 1, el puerto cero consta de 8 bits y el puerto 1 consta de 4, todos los bits de los puertos son direccionables 1 a 1. Se controlan a través de los registros Port 0 y Port 1 data register, el contenido de estos registros es inicializado a uno cuando ocurre un reset. Además cada línea de los puertos puede manejar interrupciones para el microcontrolador. Todos las líneas de los puertos incluyen una resistencia interna de pull-up que también brinda una función de control de transición. El puerto cero es de baja corriente, adecuado para conectar foto transistores y el puerto uno es de alta corriente, capaz de manejar leds. Interrupciones Las interrupciones pueden ser generadas por los puertos, el reloj interno y la interfaz USB. Todas las interrupciones se pueden mascarear por medio del Global Interrupt Enable Register el cual tiene un bit asociado a cada tipo de interrupción los cuales se deben de poner en 1 para que se habilite la interrupción. Durante un Reset, el contenido de éste registro se pone en cero, deshabilitando todas las interrupciones. Los tipos de interrupción soportados y jerarquías se listan en la tabla 2-3. Prioridad de la Interrupción 0 (Alta) 1 2 3 4 5 6 7(Baja) Tipo de Interrupción Reset 128s. – Timer 1.024 ms- Timer Endpoint 0 Endpoint 1 Reservada Puertos Wake up Tabla 2-3. Tipos y prioridades de interrupción. 47 CAPÍTULO 2 Una interrupción del endpoint 0 se genera después que el servidor ha escrito datos en él o cuando el controlador USB ha trasmitido un paquete del endpoint 0 y recibe un acknowledge del servidor. De igual forma funciona para el endpoint 1. 2.10.2 Sistema Integrado USB El sistema USB incluido en este microcontrolador consta de la interfaz serial y de los transceivers USB de entrada y salida. La interfaz serial ejecuta la mayoría de las funciones de un bus USB con ayuda de procesamiento mínima del microcontrolador. Como ya se vio, soporta dos endpoints. El endpoint 0 es usado para recibir y transmitir paquetes de control mientras que el endpoint 1 es utilizado sólo para transmitir paquetes de datos. Esta interfaz serial realiza la codificación/decodifiación en NRZI y se encarga del bit stuffing/unstuffing, además determina el tipo de token, comprueba direcciones y los valores de endpoint, genera y comprueba valores CRC y controla el flujo de bytes de datos entre el bus y los FIFOs de los endpoints. Lo que se tiene que hacer manualmente, o sea lo que el software del usuario debe realizar, es que en transferencias de control se debe encargar de interpretar peticiones de los dispositivos y contestar correctamente, además debe de coordinar los estados de suspensión y activación para ahorro de energía, datos a transmitir y funciones especiales del dispositivo. La interfaz serial y el software del usuario se comunican entre ellos a través de los FIFOs de los endpoints, interrupciones de los endpoints y los registros USB los cuales son: USB Device Address Register .- Guarda la dirección del dispositivo USB Endpoint 0 RX Register.- Es utilizado cuando se recibe un paquete en este endpoint, y tiene varias funciones, como la de avisar de la recepción de paquetes y determinar la naturaleza de ellos. 48 INTERFAZ Y MICROCONTROLADORES USB USB Endpoint 0 TX Configuration Register.- Controla la transmisión de datos de control, por ejemplo el número de bytes a transmitir durante un paquete y aviso de paquetes recibidos con error, USB Endpoint 1 TX Configuration Register.- Similar al del endpoint 0 controla las transmisiones del endpoint 1, además de agregar un bit para habilitar y deshabilitar este endpoint. USB Status and Control Register.- Como su nombre lo dice comprueba y controla los estados del bus, por ejemplo la detección de actividad del bus, controlar los estados del transmisor (J & K) y habilitar la recepción de paquetes en el endpoint 0. La conexión USB de low-speed se establece a través de un cable de par trenzado sin blindar con una longitud máxima de tres metros. El tiempo de subida y de bajada de la señales en el cable son controladas de tal manera que se reduce la emisiones RFI. El cable y el controlador sólo deben de ser usados entre dispositivos de baja velocidad. Tanto el controlador de recepción como el de transmisión trabajan de manera diferencial para aceptar y transmitir los datos. El receptor presenta una sensibilidad de entrada de al menos 200mV cuando las dos entradas de datos diferenciales se encuentran en un rango de al menos de 0.8v a 2.5V respecto a la tierra local. Este es un rango de voltaje para entrada en modo común. Resistencia de Pull-up Externa El sistema USB especifica, que para dispositivos de baja velocidad, se debe conectar una resistencia de pull-up en el pin D-. Ya que después de un reset la terminación D- debe de cargarse de 0 a 2.0V en 2.5s, para lograr esto, además de la resistencia, se debe cuidar que la capacitancia total desde el microcontrolador hasta el extremo final del cable sea menor a 250pF, debido a que el CY7C63000A presenta una capacitancia de entrada máxima en la terminación D- de 20pF, restan 230pF para distribuirse entre el circuito impreso y el cable. Dada estos valores de la 49 CAPÍTULO 2 capacitancia, para cumplir la especificación el valor de la resistencia a colocar debe ser de 7.5kΩ ± 1% conectada al VBus. En caso de que la capacitancia del circuito impreso y del cable hagan exceder los límites establecidos, se debe integrar un regulador externo de 3.3V para adecuar la señal y a esta fuente de voltaje se debe conectar la resistencia de pull up con un valor de 1.5kΩ ± 5%. Los valores máximos absolutos y las características eléctricas de este microcontrolador se pueden encontrar en el Apéndice A-3 50 DESCRIPCIÓN DE LA CIRCUITERÍA CAPÍTULO 3 DESCRIPCIÓN DE LA CIRCUITERÍA E n este capítulo, lo que se busca es dar una explicación detallada de la forma en que se diseñó y construyó el proyecto desde el punto de vista del hardware. La descripción se divide en tres bloques principales, el primer bloque donde se describe el hardware de la etapa de decodificación y transmisión, después el bloque dos donde se describe el hardware implementado para la etapa de adquisición y simulación y finalizando con el tercer bloque donde se describe la construcción de la red de infrarrojos. 51 CAPÍTULO 3 3.1 Bloque 1 – El CY7C63000A como Controlador de Mouse USB Empezaremos dando una explicación de cómo es que el microcontrolador USB se puede implementar como un mouse USB. La justificación de la utilización del CY7C63000A como microcontrolador de mouse USB y no como de touch-screen USB radica en que debido a que uno de lo alcances que se busca en este proyecto es explotar la característica plug & play de la interfaz USB, y como ya se explicó en el capítulo dos de este trabajo de titulación, esta característica depende de que el servidor USB contenga el controlador necesario para cualquier dispositivo que se conecte. Cuando no los tiene, debido a que es un dispositivo muy especial o no genérico, el usuario debe de instalarlos manualmente. Por eso, para evitarnos esta instalación y poder utilizar un controlador existente en el servidor, se utilizará y explicará como es que el CY7C63000A se puede implementar como un mouse USB (ya que es el dispositivo más semejante en funcionalidad a un touch-screen) para que al momento de conectarse, el servidor USB este lo configure como un mouse y no exista ningún problema con los controladores. El punto vital de esta sección es conocer la naturaleza de las señales que el µC 87C51 requerirá entregarle al microcontrolador USB, por lo tanto para lograr esto, se debe de conocer el funcionamiento de un mouse opto-mecánico. 3.1.1 Breve Descripción de un Sistema de Mouse Los mouse opto-mecánicos son los más populares debido a que proveen una relativa alta resolución y trabaja en un rango variado de superficies. Un mouse optomecánico típico tiene una resolución en el rango de 200 hasta 400 dpi. Las dimensiones mecánicas del hardware del mouse determinan la máxima resolución que se puede obtener. 52 DESCRIPCIÓN DE LA CIRCUITERÍA Básicamente, un mouse opto-mecánico consta de una bola de hule que es acoplada a dos barras giratorias como se muestra en la figura 3-1. El estabilizador es una rueda que provee el tercer punto de apoyo para la bola del mouse. Figura 3-1.- Montaje de un mouse opto-mecánico. Una barra gira dependiendo del movimiento en el eje X mientras que la otra gira dependiendo del eje Y, existe una rueda dentada al final de cada barra giratoria. Se instala un diodo emisor de luz infrarroja en uno de los lados de la rueda dentada y en el otro lado se posicionan dos foto transistores como se muestra en la figura 3-2. Figura 3-2.- Detalle Opto Mecánico La salida de los fototransistores permiten al mouse detectar el movimiento de la rueda dentada, así como también la dirección del movimiento. Cada diente de la rueda dentada se encuentra mecánicamente diseñada para bloquear la luz infrarroja de tal forma que los fototransistores son encendidos y apagados en un patrón de salida de cuadratura. Una señal modulada en cuadratura nos indica que existen 53 CAPÍTULO 3 cuatro posibles estados que puede tomar la señal. Estos cambios son ilustrados en la tabla 3-1. FT1 FT2 No. de Estado 0 0 Estado 0 0 1 Estado 1 1 0 Estado 2 1 1 Estado 3 Tabla 3-1: Definición de Estados Figura 3-3: Representación de estados en la señal Existe un contador que especifica el número de movimientos mínimos que el apuntador del mouse debe moverse y en qué dirección, cada cambio de estado representa una cuenta en ese contador, esto es, basándose en el diagrama de estados de la figura 3-4 y dado el hecho de que se tiene un estado actual cualquiera, un cambio de estado en dirección en contra de las manecillas del reloj hace que se incremente el contador, por otro lado si ocurre un cambio de estado de la dirección de las manecillas del reloj se decrementa la cuenta del contador, por lo que cuando la computadora pide una actualización del mouse obtiene la cuenta que presente en ese momento el contador y se la suma o resta (dependiendo el caso) a la posición que la computadora tiene sobre el mouse. Fig 3-4: Diagrama de Estados de un mouse Por ejemplo, dada una posición inicial en el estado cero, un movimiento físico del mouse hacia la derecha provocaría la transición al estado uno, luego hacia el tres, etc. Por otro lado, si el movimiento se presenta hacia la izquierda la transición de estado sería hacia el estado dos, después al tres y así consecutivamente. Las salidas 54 DESCRIPCIÓN DE LA CIRCUITERÍA de los fototransistores debido a un movimiento a la izquierda y a la derecha del mouse se ilustra en la figura 3-5, los dos empezando del estado cero Figura 3-5.- Señales generadas por un movimiento a la derecha (a) y a la izquierda (b). Los movimientos verticales positivos y negativos se detectan exactamente de la misma forma que los horizontales, es por eso que en el mouse se tienen dos juegos de fototransistores, leds y ruedas dentadas, uno para los movimientos horizontales y otro para los verticales, por lo que el microcontrolador recibe cuatro señales, dos para determinar el movimiento horizontal y otras dos para el movimiento vertical. Las señales de los botones son generadas por interruptores conectados convencionalmente los cuales al ser activados, conmutan niveles bajos en los pines correspondientes del microcontrolador los cuales son activados en bajo. 3.1.2 Adaptación del Sistema para Touch-screen La manera en que se utiliza este microcontrolador de mouse en el proyecto de titulación es muy sencilla, se basa en seguir utilizando el chip microcontrolador de mouse USB con el programa de aplicación de mouse, sólo que ahora las señales de entrada a este micro no son generadas por los fototransistores, sino por otro microcontrolador, el µC 87C51. Estas señales se van a alimentar al chip USB cuando el 87C51 haya procesado las coordenadas obtenidas desde la malla de infrarrojos, después mandará las señales que representan el movimiento hacia el microcontrolador de mouse USB, en pocas palabras la bola de hule se simulará con el µC87C51 que se moverá de acuerdo a las coordenadas que se detecten de la malla de infrarrojos. Después el microcontrolador del mouse realizará el cálculo y dirección del desplazamiento y mandará los datos a la computadora vía su sistema USB para que se actualice la posición del apuntador del mouse. Dado lo anterior, en nuestro proyecto todo el hardware descrito en la sección 3.1.1 se elimina y sólo 55 CAPÍTULO 3 se conserva el microcontrolador el cual seguirá trabajando como mouse, sólo que sus entradas de datos que antes eran generadas por los fototransistores y todo el acoplamiento ahora serán generadas por el µC 87C51. El botón izquierdo del mouse también se suprime conectando un bit de un puerto del 87C51 al bit de conmutación del chip USB. La figura 3-6 ilustra lo anterior. Figura 3-6.- Entrada del CY7C63000A proveniente del 8751 y no del hardware del mouse. Por lo tanto el hardware requerido para este bloque del proyecto se reduce enormemente, sólo se requiere del hardware que necesite el microcontrolador para funcionar y aparte de esto, una pequeña interfaz para acoplar los dos microcontroladores. Debido a que el CY7C63000A se encontrará funcionando como un mouse USB, al momento de conectar el proyecto completo a la computadora, esta lo reconocerá como un mouse, por lo tanto lo configurará y utilizará como tal, de esta forma el dispositivo completo será enteramente plug & play . 3.1.3 Implementación del Hardware Como se explicó en la sección pasada, el hardware necesario para este bloque es mínimo, sólo se requiere implementar el microcontrolador con los dispositivos eléctricos que requiere para su funcionamiento, con esto se reduce al máximo el costo económico para este primer bloque del hardware. 56 DESCRIPCIÓN DE LA CIRCUITERÍA Los dispositivos que requiere este microcontrolador USB realmente son pocos, y se presentaron de manera general en la descripción de este microcontrolador en la sección 2.9, enseguida toda la implementación del hardware de este bloque es mencionada: Circuito RC en CEXT.- Se empieza mencionando al circuito temporizador RC que se conecta en el pin CEXT del CY7C63000A formado por R1 y C1. El tiempo de wake-up se establece en alrededor de 20ms para conseguir un buen balance entre el tiempo de respuesta de wake-up y el ahorro de energía. Para generar el tiempo necesario para la interrupción se implementa el RC con R1= 2MΩ ±5% y C1 = 0.01µF @ 50V ±5%. Resonador Cerámico de 6 MHz.- Seguimos con el resonador cerámico de 6 MHz el cual se tiene que utilizar con el µC para que éste funcione, debe ser conectado a las entradas de reloj del micro Xtalin y Xtalout, cabe recordar que esta frecuencia del reloj se duplica internamente en el chip para tener así un frecuencia de trabajo de 12 MHz. Resistencia de pull-up.- Como ya se vio en el capítulo dos, la especificación USB para dispositivos de low-speed establece que la línea D- debe de cargarse después de un reset de 0 a 2.0 volts en 2.5s y dado a que la capacitancia total entre el chip y el final del cable USB de baja velocidad es menor a 250pF, se implementa en el pin D- del CY7C63000A una resistencia de precisión de 7.5KΩ ±1% conectada a +5V del VBus. Capacitor de Bypass.- La especificación USB señala que el valor del VBus debe ser de 5V ± 330mV, por lo que demanda la utilización de un capacitor electrolítico de un valor de C2 = 4.7µF @ 50V±10% entre Vcc y tierra, el cual estabilice el valor de este voltaje sobre todo cuando se conectan o desconectan otros dispositivos de la red USB ya que esto provoca variaciones en el VBus. 57 CAPÍTULO 3 Cable y conectores USB.- Por último, se implementa la conexión del µC a la computadora por medio de un cable USB no blindado de 1.5mts de longitud el cual contiene cinco hilos, dos pares trenzados mas un hilo de tierra física, un par es 28 AWG (para señalización) y otro par es 30 AWG (para alimentación). En un extremo del cable se implementa un conector USB serie A upstream y del otro un conector para PCB de 5 slots. Todos estos dispositivos más el chip microcontrolador forman la implementación de hardware completa de esta primera etapa y se ilustra en el diagrama eléctrico mostrado en la Figura 3-7. Figura 3-7.- Diagrama eléctrico del hardware del CY7C63000A. 58 DESCRIPCIÓN DE LA CIRCUITERÍA 3.2 BLOQUE 2 – EL µC 87C51 COMO DECODIFICADOR DE COORDENADAS 3.2.1 Breve Descripción del µc 87C51 El microcontrolador 87C51 pertenece a la familia 51 de microcontroladores de Intel. Fue diseñado por Intel pero hoy en día es manufacturado por Intel, Philips, Siemens, AMD entre otros. La arquitectura de esta familia está optimizada para aplicaciones orientadas al control y procesos industriales en tiempo real, de pequeña y mediana envergadura. Este modelo en particular, es construido con tecnología CMOS, es decir, con transistores MOS complementarios de bajo consumo, lo cual conlleva un consumo bajo de energía, rapidez en la programación y un cuidado más riguroso en el manejo e instalación del dispositivo debido a su alta sensibilidad eléctrica. Básicamente este microcontrolador cuenta con: CPU de 8 bits. Dos contadores-temporizadores. 128 bytes de RAM. 4 Kbytes de EPROM. 4 puertos de 8 bits bi-direccionales de entrada y salida.(P0,P1,P2 y P3) 5 fuentes de interrupción con niveles de prioridad: o 2 interrupciones externas. o 2 interrupciones de los timers. o 1 interrupción de la comunicación en serie. Un puerto serie EIA-232 con comunicación asíncrona full-duplex. Cabe mencionar que la salida de los drivers del puerto 0 pueden soportar una cargabilidad, es decir, un número de entradas aplicadas a sus pines de salida, de 8 59 CAPÍTULO 3 cargas TTL-LS, el resto de los puertos sólo admiten 4 cargas TTL-LS. El puerto 0 puede tomar el estado de alta impedancia debido a la existencia de transistores de no conducción en cada pin de este puerto, mientras que en los otros tres puertos, en estado de reposo, la salida toma el valor alto a través de la resistencia de carga (pullup) integrada en cada puerto. En el apéndice A-4 se ilustra la identificación de los pines del µC 87C51 en su presentación en el formato de 40 pin DIP. 3.2.2 Implementación del Hardware. La función del µC 87C51 es la de obtener las coordenadas provenientes de la malla, procesarlas y generar las señales necesarias para simular en el µC USB el movimiento que representaría la bola de hule correspondiente al cambio de coordenadas, para lograr así que el µC USB actualice en la computadora la posición del apuntador del mouse. Todas estas funciones se realizan por medio del software programado en el micro, dicho software se debe optimizar para no exceder los 4Kbytes de EPROM interna del chip para que así el µC pueda ser utilizado en single chip. Por consiguiente, el hardware requerido en este segundo bloque se limita a los dispositivos que el µC 87C51 requiere para funcionar en single chip además de una interfaz de acoplamiento entre los dos micros. A continuación se desarrolla la implementación del hardware para el µC 87C51: Resistencias de Pull-up para P0.- Debido a que en estado de reposo el puerto 0 adopta el estado de alta impedancia y mientras que en el mismo estado los otros tres puertos adoptan el valor alto a través de la resistencia de carga (pull-up) integrada en cada puerto, se agrega una resistencia de pull-up externa en cada uno de los pines del puerto 0, para que así, todos los puertos en estado de reposo presenten valor alto. El valor de esta resistencia se establece en 10KΩ ±20% para que cuando se genere una corriente ésta sea del orden de medio miliamper. Circuito de reloj.- Los pines Xtal1 y Xtal2 son la entrada y la salida, respectivamente, de un amplificador inversor que puede ser configurado para su 60 DESCRIPCIÓN DE LA CIRCUITERÍA uso como un chip oscilador conectando entre estos dos pines un cristal de cuarzo y un capacitor de 30pF a tierra en cada pin. La frecuencia del cristal escogida para este proyecto es de 12.00MHz debido a que el micro internamente divide esta frecuencia entre doce para así tener una frecuencia de trabajo de 1 MHz. Circuito RC del Reset.- El reset automático del microcontrolador se produce al aplicar el voltaje de alimentación Vcc al pin reset a través de un capacitor de 10µF y una resistencia de 8.2KΩ ±20%, procurando así que el tiempo del flaco de subida de la alimentación no exceda de un milisegundo y el comienzo de los impulsos del reloj no exceda de 10ms. La figura 3-8 muestra el diagrama eléctrico de la implementación del hardware requerida para que el µC 87C51 opere en single chip, además se muestra el origen de las señales que conmutan al µC USB y los pines donde se reciben los sensores de la malla de infrarrojos. Figura 3-8.- Diagrama eléctrico del hardware del µC 87C51 en single chip. 61 CAPÍTULO 3 3.2.3 Acoplamiento con el CY7C63000A Para acoplar correctamente los dos microcontroladores de manera que las señales provenientes del µC 87C51 y dirigidas al µC USB, se reciban correctamente, se presenta la necesidad de implementar una interfaz de acoplo entre los dos micros. La forma en que se encuentran construidos los drivers de salida/entrada en ambos micros provoca que al conectarse los drivers entre ellos, se pierda la señal ya que se siempre se recibe un valor bajo. Se analizará primero detalladamente la causa del problema, para lograr esto se necesita conocer la forma en que están diseñados los drivers de salida del puerto 3 del µC87C51 y los drivers de entrada del puerto 0 del CY7C63000A, los cuales son los puertos asignados para este acoplamiento y sus drivers se ilustran en la figura 39a y 3-9b. (a) (b) Figura 3-9.- Se ilustra el driver de entrada del puerto 0 del CY7C63000A (a) y el driver de salida del puerto 3 del 87C51 (b). Como se puede apreciar en la figura 3-9(a) el driver de entrada del puerto cero del µC USB no es más que solamente un pozo de corriente regulable (resistencia dinámica a tierra), ya que el transistor se encuentra en corte y la interrupción externa se encuentra deshabilitada, el pozo de corriente se controla a través de un convertidor digital-analógico el cual a su vez es controlado por un registro de 8bits 62 DESCRIPCIÓN DE LA CIRCUITERÍA denominado Isink en el microcontrolador, cuya función es configurar el nivel máximo de corriente que el pozo puede admitir, 00h para la una corriente de 0.2mA (para el puerto 0) y 0Fh para una corriente de 1mA (para el puerto 0). En el proyecto actual el registro se encuentra configurado para que el pozo reciba una corriente máxima de 0.627mA (esto se comprueba experimentalmente conectando el pin a Vcc a través de un amperímetro), por lo que si se conecta a +5volts el pozo representaría una resistencia de 7.9KΩ. La figura 3-9(b) nos muestra el driver de salida del puerto 3 del 87C51 y se puede ver claramente que es una configuración de colector común el cual es negado adicionalmente para nulificar la acción complementaria de la configuración, la cual se implementa con un transistor de no conducción y un registro (latch) para mantener los valores. Por todo lo anterior se puede ver que si son conectados los dos puertos de los microcontroladores directamente, lo que se consigue es que inmediatamente se forma un circuito en donde el nodo que une a los pines (nodo Q) siempre presenta 0volts, independiente del estado del transistor del driver de salida del 51, este circuito se ilustra en la figura 3-10. Figura 3-10.- Circuito generado al conectar directamente los dos puertos. No es necesario un análisis muy profundo para determinar la razón por la cual cuando el 87C51 transmite un valor alto el µC USB recibe siempre un valor bajo, esto es debido a que como se muestra en la figura 3-11, al pozo de corriente regulable (el cual se puede representar como 63 CAPÍTULO 3 una resistencia de 7.9KΩ en este caso) se le conecta una resistencia de 454kΩ la cual a su vez se encuentra conectada a Vcc, esto genera un divisor de voltaje en donde prácticamente toda el potencial se encuentra aplicado en los extremos de la resistencia de 454kΩ debido a su gran valor respecto a la otra resistencia, provocando que en el nodo Q exista un voltaje mínimo de 0.08volts que prácticamente es 0. En el caso que el 87C51 mande un valor bajo, este si se recibe como tal en el µC USB, pero al no poderse recibir los valores altos no es funcional en absoluto esta conexión directa. Dado el problema anterior, en cada pin del puerto 3 que involucran las señales X & Y, se implementó una pequeña interfaz para acoplar los dos drivers y así eliminar el problema y tener una óptima comunicación entre los dos micros. Esta interfaz consiste en conectar a cada pin una configuración externa de seguidor emisor la cual se muestra implementada en la figura 3-12. Figura 3-12.- Implementación del acoplo externo entre los dos microcontroladores Con este hardware adicional entre los puertos, ya no se presenta el problema descrito anteriormente, la salida se toma del emisor con una resistencia a tierra y lo que se conmuta es la conexión a Vcc, cuando se transmite un nivel bajo el transistor esta en corte y se recibe un nivel bajo y cuando se transmite un nivel alto se satura el transistor conectando el voltaje de alimentación al nodo Q y se recibe el nivel alto en el µC USB, sólo existe una pequeña pérdida de potencial en la unión base-emisor del transistor pero se sigue considerando un nivel alto. 64 DESCRIPCIÓN DE LA CIRCUITERÍA La conexión entre los micros para la señal de clic no requiere de este acoplo adicional, se pueden conectar directamente, ya que en el pin del puerto 0 del µC USB destinado para tal función no se encuentra habilitado el pozo regulable de corriente y sí se encuentra habilitada la resistencia de pull-up por lo que presenta un nivel alto en el nodo Q mostrado en la figura 3-10. Se convierte en nivel bajo cuando se satura el transistor del driver de salida del 87C51, lo cual se hace a voluntad cuando se requiera un clic. Por último la tierra del 87C51 debe de ser igualada con la tierra del chip USB conectando ambas a la señal de ground del bus USB 3.3 BLOQUE 3 - Diseño y Construcción de la Red de Infrarrojos En esta tercera y última sección de la descripción de la circuitería se desarrolla el diseño y construcción de esta red de infrarrojos, desde el diseño del circuito básico de emisor-receptor hasta el montaje en el marco evitando interferencias. Dado que esta parte del proyecto no tiene ningún software asociado, esta sección del escrito cubre todo lo relacionado con esta parte del proyecto. La red de infrarrojos, como se explicó en la propuesta, es la parte del proyecto que tiene contacto directo con el usuario, ya que es la encargada de detectar las coordenadas donde el usuario desea posicionar el cursor, en pocas palabras detecta la presencia del dedo del usuario en la pantalla y su posición, también es vía la red de infrarrojos que se detectan los clics que el usuario desee pero esta función se realiza por medio de software en el µC 87C51 sin la necesidad de ningún hardware especial dentro de la red. Esta parte del proyecto consiste en colocar a lo largo y alto de un marco (montable sobre la pantalla de un monitor común de 14 “), una serie de circuitos emisores y receptores de luz infrarroja, alineados cada uno con su contraparte en el otro extremo del marco, intercalándose en el orden para cubrir la mayor área posible sobre la pantalla (esto debido a que la luz se emitiría con diodos emisores de luz 65 CAPÍTULO 3 infrarroja y estos presentan un ángulo de propagación). Con este arreglo es posible formar una red de luz infrarroja que abarque casi toda la pantalla. Cada receptor infrarrojo se encuentra conectado a la UPE y cuando el usuario bloquee la recepción de luz infrarroja de un receptor horizontal y otro vertical, dos sensores no se activarán y por lo tanto la UPE podrá obtener la coordenada ya que conoce la ubicación de cada uno de los receptores. 3.3.1 Diseño del Circuito Básico del Sensor Para este proyecto existen una serie de especificaciones que se buscan en un circuito emisor y detector de infrarrojos (en adelante llamado sólo sensor), estas especificaciones se muestran en la tabla 3-2: EMISOR RECEPTOR Bajo consumo de energía Bajo consumo de energía Envío del haz hasta una distancia de 30cms. Sensibilidad para recibir el mismo haz y amplificar Longitud de onda de 940nm (infrarrojo) Longitud de onda de 940nm (infrarrojo) Ángulo de transmisión < 10° Ángulo de captación < 10° Tabla 3-2: Especificaciones para el circuito básico infrarrojo. Adicionalmente a estas especificaciones, dado a que se requiere de un gran número de circuitos para cubrir la pantalla con una resolución aceptable, el circuito debe ser lo más simple posible, esto quiere decir, utilizando el mínimo número de dispositivos por circuito, con el fin de buscar un costo de construcción mínimo. Después de muchas configuraciones de circuitos que se desecharon ya sea por su gran número de componentes o por no lograr las especificaciones y los cuales no se mencionan a detalle en esta sección debido a su poca trascendencia, se llegó a un circuito el cual cumple con las especificaciones de una manera óptima, y se muestra en la figura 3-13. 66 DESCRIPCIÓN DE LA CIRCUITERÍA Figura 3-13: Diagrama eléctrico del circuito básico infrarrojo Emisor El circuito que forma al emisor no es más que un diodo led con longitud de onda del orden de luz infrarroja conectado en serie con una resistencia de 330Ω y aplicando una diferencia de potencial constante al circuito de +5v. Estos valores generan una corriente alrededor de 15mA en el circuito, una disipación de potencia en la resistencia de 50mW y un consumo de potencia de 25mW en el diodo. El valor de la resistencia se determina en base a distintas pruebas, primero se realiza un ajuste grueso, variando mucho el valor de la resistencia con el fin de buscar un valor que permita al circuito tener una potencia tal para poder emitir el haz de luz infrarrojo a una distancia mínima de 28 cms aproximadamente (para cruzar horizontalmente la pantalla). Después en base al valor obtenido de la prueba anterior, se realiza un ajuste fino, con el cual se busca que el haz presente su mínima potencia considerable para el receptor a los 28cms de camino óptico para no desperdiciar potencia y así maximizar el desempeño del circuito. En cuanto al diodo emisor de luz infrarroja, se utiliza el diodo IR333C debido a que éste presenta una longitud de onda de 940nm, un ángulo de propagación de 25° y una potencia máxima de 35mW. El ángulo de transmisión no es el buscado en las especificaciones originales pero es el que más se le acerca de los que se consideraron para este proyecto, sin embargo este ángulo se puede reducir fácilmente agregando una cubierta cilíndrica al diodo para restringir su propagación. 67 CAPÍTULO 3 Receptor El circuito receptor de los hazes luminosos es un circuito formado por una configuración de colector común en donde la base del transistor de la configuración es conmutada por un foto-transistor el cual es controlado por la presencia o ausencia de luz en su base. Por lo que, cuando la base del foto-transistor no es excitada por luz, éste se encuentra en corte por lo tanto también lo está el transistor de la configuración de colector común ya que no se le es aplicado nada en su base, y en la salida que presenta el circuito en estas condiciones es de +Vcc. Sin embargo, si se le es aplicada luz a la base del fototransistor y si la potencia es suficiente, éste se satura aplicando un voltaje de 4.7 volts (Vcc – Vce) a la base del transistor de la configuración de colector común provocando que éste también se sature y mande una salida casi de cero volts ( 0 + Vce). Debido a los valores de polarización y las potencias manejadas se utilizan transistores de señal para formar la configuración de colector común en específico el BC547, además de una resistencia de 1kΩ para generar una corriente máxima de salida de 5ma. En cuanto el foto-transistor, se utiliza el PT331C que es el diodo especificado como complemento del IR333C utilizado en el emisor. Este presenta un ángulo máximo de captación de 32° que también se puede reducir y un voltaje de colector a emisor de 1.3 volts. En cuanto al acoplamiento de la salida del circuito receptor con el μc 87C51, este se ilustra en la figura 3-14. Figura 3-14.- Acoplo del Circuito Receptor con el driver de entrada del 8751 68 DESCRIPCIÓN DE LA CIRCUITERÍA Considerando la figura anterior, en el puerto cero del 8751 los dos transistores de no conducción se encuentran en corte por lo que el voltaje que se presenta en cada pin del puerto antes de ser conectado al circuito receptor es de 5 volts debido a la resistencia de pull-up externa que se implementó. Al momento de acoplarse los dos circuitos, vemos que cuando el circuito receptor presenta en su salida un valor alto, éste es leído como tal por el buffer de lectura del pin del puerto cero y cuando manda un valor bajo, éste también es leído como tal por el buffer de lectura. Si se analiza más a detalle el circuito, concluimos que no es necesaria la resistencia de pull-up externa implementada en cada uno de los pines del puerto cero, ya que si la quitamos el puerto cero presentaría alta impedancia y podría seguir obteniendo perfectamente los valores de la salida de la salida del circuito receptor en el buffer de lectura. 3.3.2 Alcances y Limitaciones del Sensor Una vez determinada la estructura de los circuitos tanto de emisión como de recepción, se deben determinar experimentalmente los alcances de la propagación y recepción de la luz infrarroja con el fin de determinar las limitaciones debido a interferencias entre sensores en la construcción de la red de hazes infrarrojos, ya que estos deben cubrir toda la pantalla con el máximo número de sensores posibles, la figura 3-15 muestra la forma de propagación de la luz infrarroja en el circuito emisor-receptor. Figura 3-15.- Propagación y Recepción de la luz infrarroja por un arreglo emisorreceptor. 69 CAPÍTULO 3 Como se puede apreciar en la figura anterior, se presentan ángulos de captación y de propagación muy elevados a los considerados en las especificaciones, esta situación provocaría la construcción de una red infrarroja con una resolución muy pobre, ya que la red debe tener como máximo 28 cms de ancho por 21 de alto (medidas de una pantalla de 14’’) y si un emisor tiene rango de propagación a 28cms de distancia de casi de 10 cms, sólo se podrían utilizar como máximo tres receptores por lado y una resolución de esta naturaleza limitaría en gran medida al proyecto. Debido a lo anterior, se debe implementar una forma para reducir tanto el ángulo de propagación como el de recepción más de la mitad para lograr la especificación, para que a 28cms de distancia el receptor sólo reciba hazes de uno y sólo un emisor ubicado directamente enfrente de él. Todo esto es con el fin de poder implementar más rayos infrarrojos a lo largo y ancho de la pantalla para incrementar la resolución del sistema. Por lo que, a la solución que se llegó fue la de poner cubiertas cilíndricas negras alrededor de los diodos emisores y receptores. Es importante que sean de color negro para que la luz al incidir en estas cubiertas sea absorbida y no reflejada. La figura 3.16 muestra la reducción de los ángulos de propagación y de captación por medio de esta solución. Figura 3-16.- Ángulos de propagación y captación reducidos por cubiertas cilíndricas. 70 DESCRIPCIÓN DE LA CIRCUITERÍA De esta manera, se logró reducir e un poco más del 60% los ángulos de propagación y captación por medio de cubiertas cilíndricas de 4 cms de largo y 4mm de diámetro. Cabe señalar que se pueden reducir aún más estos ángulos si se incrementa la longitud de las cubiertas cilíndricas pero conlleva la desventaja de aumentar las dimensiones físicas del sistema, por lo que se toleró como máximo un incremento de 4cms a cada uno de los lados de la red de infrarrojos. Además de la funcionalidad antes descrita, en las cubiertas cilíndricas radica una función muy importante, sobre todo para los receptores, ya que estos son fototransistores que se accionan con diversas clases de luz y debido a que las condiciones de operación del proyecto son de gran luminiscencia debido a la presencia del monitor, las cubiertas proveen protección para que los receptores no capten hacez de luz que no sean los emitidos por su emisor correspondiente. Estas cubiertas se implementaron con un material llamado termofit el cual presenta la característica de contraerse cuando se le aplica calor y gracias a ello fue posible un montaje fijo y firme de las cubiertas sobre los leds. 3.3.3 Resolución Dadas las propiedades y especificaciones finales del sensor infrarrojo que se utiliza, y para maximizar la resolución y área de cobertura se montaron los emisores pares de un lado de la pantalla y los emisores nones del otro extremo de la pantalla, cada uno con su receptor correspondiente. La figura 3-17 muestra el montaje de los sensores horizontales diseñado de tal forma que se cubra toda la pantalla y no se interfieran entre ellos. La mínima resolución autorizada para este proyecto fue de 176 puntos activos sobre la pantalla, esto sólo se logra con un arreglo de 16 sensores verticales por 11 horizontales, lo que conlleva una separación entre diodos de 1.7cms ya que se tiene una pantalla de 28 X 21cms. Como se puede observar también en la figura 3-17, cada emisor, ya sea par o non tiene dentro de su área de propagación a uno y sólo un receptor, por otro lado un receptor al tener un ángulo de captación grande tiene en 71 CAPÍTULO 3 su rango de recepción a varios emisores y receptores pero sólo un emisor es capaz de emitirle luz. Figura 3-17: Arreglo de sensores horizontales. En cuanto al arreglo de sensores verticales, estos se implementan de la misma manera, de hecho es más sencillo, ya que se evitan las interferencias más fácilmente debido a que la separación entre un emisor y su receptor correspondiente es menor que en el arreglo de sensores horizontales, en este caso la distancia a cubrir es de 21 cms. La figura 3-18 muestra este arreglo. Debido a que se cubre menos distancia, el rango de apertura en la propagación es menor que en los sensores horizontales, en este caso el rango de propagación es un Figura 3-18: Arreglo de sensores verticales. espacio de 2.2cms perpendiculares al emisor, y en este espacio es donde se coloca el receptor correspondiente el cual tiene en su rango de percepción a sólo un emisor. Debido a que el diseño del sensor se calculó 72 DESCRIPCIÓN DE LA CIRCUITERÍA para el peor caso, el cual se presenta en los sensores horizontales debido a que se debe de cubrir una distancia máxima de 28cms, al adaptar este sensor a distancias menores provoca la aparición de franjas diagonales de 4 mm de espesor en las cuales no existe la propagación de ningún haz, pero no es perjudicial en absoluto para la funcionalidad del proyecto debido a que el instrumento especificado para indicar coordenadas es el dedo humano el cual mide aproximadamente 1.5cms. Por lo cual si se tiene una red montada en una pantalla de 28 X 21cms , con 16 sensores verticales y 11 horizontales se logra una resolución de 176 puntos activos en la pantalla, con una separación de sensores de 1.7cms. Por lo tanto el movimiento mínimo del apuntador del mouse en cualquier dirección es de 1.7cms. 3.3.4 Construcción de la Red de Infrarrojos Una vez que se tiene el diseño completo, la construcción de la red de infrarrojos es relativamente sencilla. Lo primero que se requiere es un marco montable sobre una pantalla, en el cual se pueda implementar la red de infrarrojos. En este proyecto se especifica una pantalla protectora anti-deslumbrante para monitor de 14’’ , en el marco de esta pantalla se montan los sensores, en cada salida de los receptores se coloca un cable con un color único el cual va a ser el que lleve la señal de ese sensor a la UPE, por lo tanto si se tienen 16 sensores verticales y 11 horizontales, se tiene un bus de señales de sensores de 25 hilos codificados por colores más dos para la alimentación, cada uno de los hilos del bus de señal deben ser conectados uno a uno en los puertos correspondientes del micro, en nuestro caso los primero 8 sensores horizontales de izq a derecha se conectan en el puerto cero, los últimos ocho sensores horizontales se conectan en el puerto 2, los primero 8 sensores verticales de abajo hacia arriba se conectan en el puerto 1 y los 3 últimos sensores verticales se conectan en 3 bits del puerto 3, los demás bits de este puerto son utilizados para trasmitir las coordenadas al chip USB. Un punto muy importante en la construcción de la red de infrarrojos es que debido al choque de electrones en el lado interno de la pantalla del monitor, se presenta un campo electrostático en el lado exterior de la pantalla y debido a que es en este lado 73 CAPÍTULO 3 es donde se coloca la malla de infrarrojos se debe de proteger todo el sistema contra este campo. Como se describe en este capítulo la electrónica utilizada en el sistema pero sobre todo en la UPE es sensible a variaciones de efecto de campo y un campo electrostático causaría graves daños, por lo que se debe eliminar aterrizando la pantalla por medio de una placa de metal conectada al vidrio de la pantalla antideslumbrante, esta placa debe ser conectada a la tierra física del sistema, además, la tierra en los sensores debe ser conectada a la tierra de la UPE que es la misma del bus USB. Una vez que se ha construido la red de infrarrojos es necesario calibrar los sensores, esto quiere decir que se necesita enfocar cada emisor con su receptor correspondiente comprobando que no exista interferencia entre sensores aledaños. Se puede adaptar un led indicador de encendido con el fin de conocer cuando la red de infrarrojos se encuentra encendida activa con el fin de prolongar su vida útil. 3.3.5 Fuente Externa de Alimentación Debido a que los sensores se diseñaron para cubrir una distancia máxima de 28 cms con una intensidad considerablemente alta, cada sensor presenta un consumo promedio alrededor de los 18mA, provocando que el consumo de energía de toda la red de infrarrojo también lo sea, este consumo medido experimentalmente es de 475 miliampers. Debido a que el bus USB sólo nos permite obtener del bus una corriente máxima de 100mA no es posible obtener la alimentación del bus por lo que se debe de obtener de una fuente externa diseñada para satisfacer los requerimientos de energía de la red de infrarrojos. La fuente de poder utilizada en este sistema se muestra en la figura 3-19. Figura 3-19: Fuente de alimentación para la red de infrarrojos (5volts @1.2Amps.) . 74 DESCRIPCIÓN DE LA CIRCUITERÍA Cabe señalar que esta fuente de alimentación sólo provee energía a la red de infrarrojos, la UPE obtiene su energía del bus USB. Sin embargo la señal de 0 volts debe ser conectada a la señal de ground del bus USB para igualar potenciales. 75 CAPÍTULO 4 CAPÍTULO 4 DESCRIPCIÓN DE LA PROGRAMACIÓN S in importar de la eficiencia del diseño del hardware y su desempeño, no será de mucha utilidad hasta que se le haya implementado el software que lo habilita y permite las comunicaciones con el servidor y con los otros circuitos en el periférico. En este capítulo, se explica de manera detallada la implementación del software para el periférico, describiendo el software incluido en el CY7C63000A y el software desarrollado para el 87C51. Para que esta descripción no se encuentre ligada estrechamente a estos microcontroladores, se realiza desde un punto de vista funcional, por lo tanto se pueden implementar otros controladores similares. 76 DESCRIPCIÓN DE LA PROGRAMACIÓN 4.1 Descripción del software para el CY7C63000A Para realizar una descripción correcta del software incluido en este microcontrolador, es necesario reconocer dos principales partes de este software: el software funcional y el software de comunicaciones USB. El primero se encarga de todas las funciones relacionadas con los comandos de clic y con los movimientos como reconocimiento, cuantificación y dirección del movimiento. Por otra parte, el software de comunicaciones se encarga de habilitar, desarrollar y finalizar todas las actividades relacionadas con las comunicaciones USB. 4.1.1 Software Funcional Movimiento Como se vio en la sección 3.2 la detección del movimiento y su dirección es llevada acabo a través de dos pares de señales moduladas en cuadratura, un par para movimientos horizontales y otro par para movimientos verticales. Estas son generadas por el µC87C51 y son recibidas en el chip USB en los pines P0.0 y P0.1 para las horizontales y en P0.2 y P0.3 para las verticales, por lo tanto es en el registro del puerto cero donde se obtendrán los datos entrantes. Se define en el 87C51 el estado cero como estado inicial, también lo será para el chip USB, cuando se detecten datos de entrada en el registro del puerto cero, se ejecuta una rutina (ReadOptics) la cual lee los estados de cuadratura de las señales de entrada y los compara con el estado inicial (que siempre va a ser el cero). Si existe un cambio de estado, entonces la rutina determina la dirección y cantidad del movimiento por medio del contador de posición, por ejemplo un cambio de estado del cero al uno representa un movimiento hacia la derecha (o arriba) y por lo tanto se incrementa el contador, por otra parte una transición del estado cero hacia el estado dos representa un movimiento hacia la izquierda(o abajo) y entonces se decrementa el contador, esta cuenta se guarda en la dirección del FIFO del endpoint 1 y activa la bandera de evento pendiente para que la rutina principal del Main envíe un paquete de reporte al servidor vía el endpoint 1. 77 CAPÍTULO 4 Clic En cuanto a los comandos de clic, el programa por medio de la rutina ProcessButtons monitorea y procesa eventos relacionados con la llegada de comandos de clic. Si el estado del pin P0.4 el cual es donde se recibe la señal del clic presenta un cambio y este cambio permanece estático durante un intervalo de tiempo de estabilización, entonces el software conoce que existe un nuevo estado en P0.4 por lo tanto un comando de activación de clic ha sido recibido el cual debe ser reportado al servidor. En este caso igual que en la rutina anterior, el nuevo estado del pin es guardado en el FIFO del endpoint 1 y una bandera de evento pendiente es activada para que la rutina principal del Main envíe un paquete de reporte al servidor vía el endpoint 1. 4.1.2 Software de comunicaciones USB Antes de describir el software implementado se considera bueno recordar qué actividades realiza el microcontrolador por si solo en cuanto a las comunicaciones USB, por ejemplo, realiza la codificación y decodificación en NRZI, se encarga de agregar y quitar el bit de stuff, además determina el tipo de token, comprueba direcciones y los valores de endpoint, genera y comprueba valores CRC y controla el flujo de bytes de datos entre el bus y los FIFOs de los endpoints. Por lo que es responsabilidad del software: Inicialización de comunicaciones, en transferencias de control se debe encargar de interpretar peticiones de los dispositivos y contestar correctamente, además debe de coordinar los estados de suspensión y activación para ahorro de energía, datos a transmitir y funciones especiales del dispositivo. Inicialización HID Todas las aplicaciones USB pertenecientes a la clase de dispositivos de interfaz humana (HID) siguen el mismo procedimiento de inicialización. Este procedimiento es como sigue: 78 DESCRIPCIÓN DE LA PROGRAMACIÓN 1. Conexión física del dispositivo Cuando un dispositivo USB es conectado por primera vez al bus, es alimentado de energía y el software de operación empieza a funcionar, pero las comunicaciones con el bus permanecen deshabilitadas hasta que el servidor USB inicialice el dispositivo. 2. Bus Reset La resistencia de pull-up en D- notifica al servidor que un dispositivo de baja velocidad acaba de ser conectado, el servidor reconoce entonces la presencia de un nuevo dispositivo USB y le envía un paquete de reset. 3. Enumeración El servidor inicia las transacciones de configuración que revelan la información general y específica del dispositivo. Cuando la descripción es recibida, el servidor asigna una nueva y única dirección USB al periférico. El dispositivo comienza a responder en la comunicación con la nueva dirección asignada, mientras que el servidor continúa pidiendo información acerca de la descripción del dispositivo y del tipo de reporte HID. Utilizando la información que regreso el dispositivo, el servidor ahora conoce el número de endpoints de datos soportados por el dispositivo, que en nuestro caso es de sólo uno. En este punto, el proceso de enumeración esta completo. 4. Operación Post Enumeración Una vez que la conexión de comunicaciones entre el servidor y el dispositivo es establecida, el periférico ahora tiene la tarea de enviar y recibir datos tanto en el endpoint de control como en el de datos. En este caso, cuando el servidor configura el endpoint 1, el dispositivo empieza a transmitir datos de activaciones de clic o de movimiento hacia el servidor cuando haya datos que mandar. En cualquier momento el periférico puede ser reinicializado o reconfigurado por el servidor. El programa polea las señales de comandos de clic y de movimiento, el estado de los botones así como los desplazamientos horizontales y verticales son enviados al servidor usando el endpoint 1. Cuando el servidor envía una transferencia de interrupción (paquetes IN), para obtener datos del dispositivo, el dispositivo regresa tres bytes de datos mostrados en la figura 4-1. 79 CAPÍTULO 4 Figura 4-1.- Organización de datos para el periférico Peticiones USB - Endpoint 0 Como ya se sabe, el endpoint 0 actúa como el endpoint de control para el servidor. Al momento de encendido del dispositivo es precisamente este endpoint el predeterminado canal de comunicación para todos los dispositivos USB. Por medio de este canal el servidor inicia los controles de lectura y escritura del dispositivo, en este diseño particular sólo el control de lectura es requerido para enumerar al dispositivo. Peticiones USB - Endpoint 1 Por medio del endpoint 1 se llevan a cabo todas las transferencias de datos, ya sea para información sobre comandos de clic o de movimientos. Peticiones a este endpoint no son reconocidas hasta que el servidor lo configure. Una vez que el endpoint esta habilitado el servidor envía peticiones de interrupción para obtener los datos de información. Cuando el dispositivo no cuenta con ninguna información que mandar debido a la ausencia de movimiento o de comando de clic, el software debe enviar NAK al endpoint ya que los datos sólo son reportados cuando hay un cambio de estado en el dispositivos o cuando se cumple el tiempo mínimo de actualización de datos establecido por el servidor. 80 DESCRIPCIÓN DE LA PROGRAMACIÓN Descriptores Como se vio en el capitulo dos, los descriptores USB contienen información acerca del dispositivo. Los descriptores que se utilizan para este dispositivo son los necesarios para desarrollar un mouse USB estos descriptores son los siguientes: Descriptor de Dipositivo Descriptor de Configuración Descriptor de Interfaz Descriptor HID Descriptor de Endpoint Descriptor de Reporte HID Descriptor de Lenguaje Debido a que estos descriptores son los mismos para cualquier aplicación de relacionada a un mouse desarrollada con este microcontrolador no se describen a detalle cada uno, sin embargo el contenido de cada uno de los descriptores junto con su descripción se puede encontrar en el apéndice A-5. 4.1.3 Descripción de Rutinas Los siguientes párrafos describen los aspectos funcionales de las rutinas de ensamblador de todo el programa del micro USB. Main Se llega a esta rutina exactamente después del proceso de inicialización de todas las variables. En esta rutina se establece la configuración del hardware, después una tarea cíclica es ejecutada continuamente. Esta tarea contiene una rutina que procesa las activaciones de comandos de clic y movimientos, así como también prepara las transacciones del endpoint 1 UsbBusReset Esta es una rutina de interrupción que inicializa los estados de los endpoints y salta a la rutina Main para inicializar todo el hardware y software cada vez que el dispositivo reciba un BUS RESET por parte del servidor. 81 CAPÍTULO 4 Usb1msTimer Cada milisegundo esta rutina de interrupción maneja los aspectos del dispositivo que son relacionadas con el tiempo. El pin donde se reciben los comandos de clic es leído cada milisegundo y procesado en la tarea cíclica del Main. La actividad del Bus es monitoreada cada milisegundo, si existe un periodo mayor de 3 milisegundos sin actividad en el bus, entonces el dispositivo puede asumir confiablemente que el servidor se encuentra en estado de suspensión por lo que el dispositivo entra en estado de suspensión también. Si se encuentra habilitada en el servidor la opción de RemoteWakeup, cuando existe un cambio de estado en el dispositivo, este es despertado y por tanto envía señales al servidor con el fin de que salga del estado de suspensión. UsbEndpoint0 Esta rutina de interrupción maneja las transacciones de control de lectura del endpoint 0. Este manejo esta basado en una máquina de estados determinada por el tipo de transacción. Cambios de datos, aborto de transacciones y conteo de datos son manejados automáticamente por la máquina de estados. El dispositivo maneja un paquete de una transacción cada vez y regresa al ciclo principal para manejar las tareas relacionadas con el endpoint 1. UsbEndpoint1 Esta rutina de interrupción responde a transacciones IN (Interrupt Request) en el Endpoint1. La rutina simplemente cambia valores de 0 y 1 para la siguiente transacción y limpia los buffers de movimiento. El modo de Endpoint 1 es inicializado a NAK o STALL basándose en la configuración actual del endpoint. 82 DESCRIPCIÓN DE LA PROGRAMACIÓN ReadProcessOptics Esta rutina lee los estados de cuadratura de las señales de entrada y los compara con el estado actual que es el último medido. Si existe un cambio entonces la rutina determina la dirección del movimiento, guarda la información de la dirección en el FIFO del endpoint1 y activa la bandera de evento pendiente para que la rutina principal del Main envía un paquete de reporte al servidor vía el endpoint 1. ProcessButtons Esta rutina monitorea y procesa eventos relacionados con la activación del botón (léase clic). Si un estado del botón presenta un cambio y este cambio permanece estático durante el intervalo BUTTON_DEBOUNCE entonces el software conoce que existe un nuevo estado en el botón que debe ser reportado al servidor. En este caso igual que en la rutina anterior, el nuevo estado del botón es guardado en el FIFO del endpoint 1 y una bandera de evento pendiente es activada para que la rutina principal del Main envíe un paquete de reporte al servidor vía el endpoint 1. 4.2 Implementación de software del 87C51 En esta sección del capítulo se ofrece una descripción detallada sobre el software que se desarrolló para la etapa de Adquisición y Simulación de la Unidad de Procesamiento Externa. Es responsabilidad de esta etapa la de detectar y adquirir por medio de la red de infrarrojos las coordenadas provistas por el usuario, también es su responsabilidad validar estas coordenadas para después codificarlas, que es donde se preparan para poder calcular el desplazamiento. Por último, una vez calculado el desplazamiento necesario para actualizar la posición, esta etapa debe generar y enviar al chip USB las señales moduladas en cuadratura que representan el movimiento calculado para que el micro USB las reciba, procese y mande la cuenta necesaria para que la computadora actualice la posición del cursor. 83 CAPÍTULO 4 4.2.1 Diagrama a bloques Este software se divide en cinco etapas principales, considérese el siguiente diagrama a bloques para visualizar las partes: Inicialización Obtención de Coordenadas Validación & Codificación Cálculo del Desplazamiento Generación de Señales Moduladas en Cuadratura 4.2.2 Inicialización Esta parte se ejecuta una sola vez al encender el periférico, es de vital importancia porque es aquí donde se inicializan las variables, estados, banderas y sobre todo se determina la primera posición del apuntador del mouse para poder desarrollar correctamente las siguientes etapas del programa. La estructura de la inicialización es como sigue: Se inicializan todas las señales de cuadraturas en cero imponiendo el estado cero como inicial en el micro USB de acuerdo al diagrama de estados. 84 DESCRIPCIÓN DE LA PROGRAMACIÓN Además de que se levanta el bit del clic para simular el interruptor ya que se activa en bajo. Como es necesario conocer la coordenada inicial para poder realizar el primer cálculo de desplazamiento, se inicializa el cursor en la esquina inferior izquierda, (coordenada [1,1]): Una vez concluida la etapa de inicialización ya es posible empezar a detectar coordenadas ya que se cuentan con todos los elementos necesarios para comenzar. 4.2.3 Adquisición, Validación y Codificación de Coordenadas Esta es la rutina principal encargada de detectar una nueva coordenada, adquirirla y ver si cumple los requerimientos necesarios que piden las siguientes etapas, como por ejemplo que no se den más de una coordenadas a la vez o coordenadas incompletas. La última función de esta etapa es asignarle un valor numérico a esa coordenada como preparación para la etapa de cálculo del desplazamiento. La estructura de este bloque es como sigue: Se inicia un ciclo donde se monitorean los pines de los puertos donde se encuentran conectados todos los sensores horizontales. Cuando se detecta una coordenada, se valida que sólo sea una la que se recibe ya que coordenadas múltiples en una dimensión son ignoradas por el programa. Una vez obtenida la coordenada, se codifica asignándole un valor entre 1 y 16, este valor se asigna dependiendo del número del sensor horizontal que se encuentre detectando la presencia del dedo en ese eje. Por último, se repite el proceso pero ahora con los sensores verticales y con un intervalo de asignación de valores entre 1 y 11. 85 CAPÍTULO 4 Una vez concluida esta etapa, se cuenta con un valor de posición en el eje horizontal (entre 1 y 16) y otro en el eje vertical (entre 1 y 11) formando la coordenada completa de la posición donde el usuario se encuentra posicionando el dedo. Ejemplo de coordenada deseada: [2,8]. 4.2.4 Cálculo del Desplazamiento Este bloque esta conformado por una rutina la cual realiza el cálculo de la distancia (si es que existe) entre la coordenada actual y la nueva coordenada, con el fin de conocer el desplazamiento necesario que se debe de implementar y así actualizar la posición del apuntador. La estructura de esta etapa es como sigue: Compara el valor de la posición actual en el eje x contra el valor de la posición deseada en ese mismo eje, si son iguales omite el cálculo del desplazamiento para este eje, si no continua. Se realiza una resta entre el valor actual en x menos el valor deseado en x. Si el resultado de la resta es positivo se determina que se requiere tantos movimientos hacia la derecha como nos de el resultado de la resta , por otro lado, si el resultado es negativo nos indica que se requieren el mismo número de movimientos pero hacia la izquierda . Se repite el proceso sólo que ahora con el eje y, si la diferencia es positiva el movimiento es hacia arriba y si es negativa es hacia abajo. Se guardan los resultados y los sentidos. Una vez concluida esta etapa, se obtiene la separación tanto en el eje horizontal como en el vertical entre la posición actual del apuntador y la posición deseada. La finalidad principal de esta etapa es la de obtener el número de sensores que el apuntador debe moverse y en qué dirección para actualizarse. 86 DESCRIPCIÓN DE LA PROGRAMACIÓN 4.2.5 Generación de Señales Una vez que se conoce la serie de movimientos que se requieren para actualizar la posición del apuntador, es trabajo de esta etapa el de generar las señales moduladas en cuadratura apropiadas que representen el movimiento necesario que el chip USB debe recibir para mover el apuntador a la posición deseada vía la interfaz USB. La estructura de este bloque es como sigue: Se genera primero un par de señales moduladas en cuadratura que representan el movimiento en el eje x. Se parte del estado cero, es decir que las dos señales se encuentran en bajo, de acuerdo al diagrama de estados de la figura 3-4, si se desea un movimiento por ejemplo hacia la izquierda se pasa al estado 2 levantando la señal del P3.1, y después la del P3.2 para llegar al estado 3, después se pasa al estado 1 bajando P3.1 para después regresar al estado cero, este ciclo se repite las veces necesarias para mantener un movimiento a la izquierda constante hasta que el apuntador se mueva a la posición donde se encuentra el siguiente sensor a la izquierda. Una vez que se llega a la ubicación del siguiente sensor, se regresa a el estado cero y se detiene el movimiento. Se ha movido un sensor a la izquierda El proceso anterior se repite tantas veces como lo indique el resultado de la resta. Por ejemplo si el resultado de la resta es -3, se ejecuta el proceso anterior tres veces, por lo tanto se mueve 3 sensores a la izquierda. En caso de que el movimiento sea a la derecha, del estado cero se pasa al estado 1 levantando P3.2 y después P3.1 para llegar al estado tres, después se pasa al estado dos bajando P3.2 para después regresar al estado cero, se repite el ciclo hasta llegar a la ubicación del siguiente sensor a la derecha. Para movimientos verticales es exactamente igual, la única diferencia radica en que las señales se generan a través de los pines P3.3 y P3.4 conectados al decodificador vertical del chip USB. 87 CAPÍTULO 4 Primero se generan los patrones de cuadratura horizontales y después los verticales. La velocidad del movimiento esta determinada por la frecuencia de las señales generadas. La limitante radica en la frecuencia de muestreo del chip USB. Ya que se generaron los patrones de cuadratura tanto verticales como horizontales, el apuntador ha sido actualizado y entonces se regresa a la rutina principal de adquisición de coordenadas con el fin de detectar nuevas actualizaciones. 4.2.6 Reconocimiento de Comandos de Clic Un comando de clic se da cuando el usuario toca la pantalla y una coordenada es reconocida, es decir, al ser tocada la pantalla el apuntador se mueve a la posición deseada y al finalizar el movimiento desactiva el bit del clic (P3.5) conectado al P0.1 del chip USB( el cual es donde se reciben los comandos de clic y se activa en bajo) y no se vuelve a activar hasta que el programa deje de detectar coordenadas (cuando el usuario deje de tocar la pantalla), al activar de nuevo el bit del clic la computadora reconoce un comando de clic y lo ejecuta. Con este funcionamiento se logra que el usuario accione botones en pantalla, seleccione áreas de trabajo, dibuje, desactive comandos de clics, etc. 88 CONCLUSIONES C CONCLUSIONES Objetivos (no) logrados de los que se especificaron Objetivos logrados de los que no se especificaron Calificación del desempeño No es necesaria la resistencia de pull up en el 8751 No puse más sensores verticales porque ya no había puertos Utilidad de la pantalla anti deslumbrante Otras aplicaciones( arbys, sistemas sin retro, dibujo, calcar, etc) Errores de paralelaje en la malla Calibración contínua si la carga de trabajo es grande Conclusiones sobre el estándar USB Costos 89 APÉNDICES A APÉNDICES A-1 Principales características de los microcontroladores CY7C6300A y el MC68HC05JB2 CY7C63000A MC68HC05JB2 USB de baja velocidad (1.5Mbps) con 2 USB de baja velocidad (1.5Mbps) con 3 Endpoints Endpoints Microcontrolador RISC de 8 bits. Microcontrolador RISC de 8 bits. 2Kbytes de EPROM & 128bytes de RAM 2048bytes de EPROM & 128bytes de RAM 11 pines de entrada y salida de propósito 11 I/O pines bidirecionales y una salida de general, con soporte de alta corriente (hasta dc de 3.3 volts para resistencias de pullup 16mA). USB. Un contador de carrera libre de 8 bits Un contador Multi función. A-2 características eléctricas USB. viene de pag 31 pag 178 del estandar USB ver 2.0 y la pagina 144 A-3 90 APÉNDICES Los valores máximos absolutos y las características eléctricas de cy7c63000a. Viene de pag 50 A-4 Identificación de los pines del µC 87C51 en su presentación en el formato de 40 pin DIP.A-4 A-5 El contenido de cada uno de los descriptores junto con su descripción . viene de pag 81 91 APÉNDICES A-6 Código en ensamblador del programa del 87C51 92 GLOSARIO G GLOSARIO Capítulo 1 UPE MDC USB SAW RS232 PLUG N’ PLAY Capítulo 2 Acknowledge.AWG.Biased.Bit stuffing.Buffer.Bulk.CRC.Descriptor.Downstream.Endpoint.FIFO.Handshake.Hub.93 GLOSARIO Isochronous.OTP.Pipe.Stack.Stream.Token.Transceiver.UART.Upstream.USB.- Universal Serial Bus Capítulo 3 Resolución: La resolución es el movimiento más pequeño que un mouse puede detectar y se mide en puntos por pulgada (DPI por sus siglas en ingles: dots per inch). Hardware: PCB: AWG: (SE REPITE) PLUG & PLAY: (SE REPITE) 94 BIBLIOGRAFÍA B Bibliografía o Axelson, Jan. “USB Complete”. Madison, WI: LakeView Research, 1999. o Especificaciones Oficiales USB ver. 2.0 http://www.usb.org o Especificaciones técnicas del CY7C63000A http://www.cypress.com o Especificaciones técnicas del 87C51: GONZÁLEZ, ADOLFO, “Introducción a los Microcontroladores”, Ed. McGraw Hill, 1992 o Especificaiones tecnicas sobre infrarrojos: o Tipler, Paul Allen, “Física II”, ver. española por J. Aguilar Peris Barcelona : Reverte, c1978 v. : il. ; 24 cm Traducción de Physics. QC 21.2 T58 o Abarca y Abaraca, Vidal y Zazueta “Propuesta para una aplicación “Touch Screen” en el área de comida rápida” Tesis, Universidad Iberoamericana. o Elo & Micro Touch “Boletín técnico sobre touch screens”, 2000 95