diseño e implementación de un touch screen con interfaz

Anuncio
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
500a 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 1s). 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 128s 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
128s. – 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.5s, 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.5s 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
Descargar