DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ...

206
1 DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ HUMANA (USB-HID) QUE CONTROLE PARAMETROS CONTINUOS DE SINTESIS DE AUDIO EN TIEMPO REAL MEDIANTE EL PROGRAMA MAX/MSP NELSON FABIÁN VALENZUELA LUGO FABIÁN LEONARDO LARROTA OJASILD MIGUEL DAVID GÓMEZ ACUÑA UNIVERSIDAD DE SAN BUENAVENTURABOGOTÁ FACULTAD DE INGENIERIA DE SONIDO AREA DE INVESTIGACION BOGOTA, D.C. 2007

Transcript of DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ...

Page 1: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

1

DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ HUMANA

(USB-HID) QUE CONTROLE PARAMETROS CONTINUOS DE SINTESIS DE

AUDIO EN TIEMPO REAL MEDIANTE EL PROGRAMA MAX/MSP

NELSON FABIÁN VALENZUELA LUGO

FABIÁN LEONARDO LARROTA OJASILD

MIGUEL DAVID GÓMEZ ACUÑA

UNIVERSIDAD DE SAN BUENAVENTURABOGOTÁ

FACULTAD DE INGENIERIA DE SONIDO

AREA DE INVESTIGACION

BOGOTA, D.C.

2007

Page 2: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

2

DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ HUMANA

(USB-HID) QUE CONTROLE PARAMETROS CONTINUOS DE SINTESIS DE

AUDIO EN TIEMPO REAL MEDIANTE EL PROGRAMA MAX/MSP

NELSON FABIÁN VALENZUELA LUGO

FABIÁN LEONARDO LARROTA OJASILD

MIGUEL DAVID GÓMEZ ACUÑA

Proyecto De Grado

Para Optar Al Titulo De Ingeniero De Sonido

UNIVERSIDAD DE SAN BUENAVENTURABOGOTÁ

FACULTAD DE INGENIERIA DE SONIDO

AREA DE INVESTIGACION

BOGOTA, D.C.

2007

Page 3: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

3

NOTA DE ACEPTACION

________________________________

________________________________

________________________________

________________________________

________________________________

________________________________ Presidente del Jurado

________________________________ Jurado

________________________________ Jurado

Bogota, 12 de Junio de 2007

Page 4: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

4

DEDICATORIA

Las palabras construyen imperios, derrotan ejércitos, dan y quitan la vida, pero por encima de todo son la mayor muestra de que existe la magia. Este proyecto fue concebido en algún rincón del subconsciente, la razón y el estudio lo hizo tomar forma y las palabras lo hicieron un echo; mucho trabajo arduo y momentos de desesperación acompañaron su crecimiento, padres y madres acompañaron su madures, no solo con palabras bellas y alientos sublimes, sino con su propio trabajo, paciencia y fortaleza que brindaron además de los medios, un piso fuerte y las alas para partir hacia la inmortalidad. El amor fue parte fundamental de su adultez como proyecto sensato y diligente, muchas noches donde la compañía y la dedicación de personas indispensables nunca falló, fueron el camino justo para que la madrugada llegara con un nuevo respiro y la visión de un comienzo iluminado por el alba. El futuro, se ve distante, el pasado es un murmullo perdido en miles de momentos, el ahora, es solo la esperanza y la fortaleza, el amor propio y un sueño. Un sueño materializado en un designio, en un proyecto que no es mas que miles de esfuerzos unidos en un solo fin, el último paso de esta peregrinación, que llevara a caminos mas arduos y mas sublimes, donde seguramente la compañía será la misma, el esfuerzo será mayor y la recompensa un botín aun mas etéreo. Botín que entregamos con honor a nuestros padres, incansables motores de nuestros sueños, a aquellas personas que poseen nuestro corazón, una inagotable fuente de inspiración, y a Dios, precursor absoluto, esperanza infinita.

Page 5: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

5

AGRADECIMIENTOS

La mayor virtud del ser humano es mostrar gratitud, por eso damos sinceros reconocimientos a estas personas, indispensables y primordiales en todo el proceso de este proyecto. Álvaro Larrota Romero Patricia Ojasild Vera L´hoeste de Ojasild Laura Marcela Ramirez Oscar Ramirez Alba Nubia Acuña Miguel Ángel Gómez María Estella Lugo Zarate Nelson Valenzuela Martínez

Page 6: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

6

CONTENIDO

Pág.

INTRODUCCION 1 1. PLANTEAMIENTO DEL PROBLEMA 3 1.1 ANTECEDENTES 3 1.2 DESCRIPCION Y FORMULACION DEL PROBLEMA 5 1.3 JUSTIFICACION 5 1.4 OBJETIVOS DE LA INVESTIGACION 6 1.4.1 Objetivo General 6 1.4.2 Objetivos Específicos 6 1.5 ALCANCES Y LIMITACIONES DEL PROYECTO 7 1.5.1 Alcances 7 1.5.2 Limitaciones 7 2. MARCO DE REFERENCIA 8 2.1 MARCO CONCEPTUAL 8 2.1.1 Sonido Digital 8 2.1.2 Equipos Digitales Musicales 9 2.1.3 Transductores 9 2.1.4 Programación 11 2.1.5 Software 13 2.1.6 Sistema Operativo 13

Page 7: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

7

2.1.7 Síntesis de Sonido 15 2.1.8 Interfaz 16 2.2 MARCO LEGAL O NORMATIVO 17 2.3 MARCO TEORICO 17 2.3.1 Los Microcontroladores 17 2.3.2 ¿Qué es Un Microprocesador? 18 2.3.3 ¿Qué es Un Microcontrolador? 19 2.3.4 Diferencias Entre Microprocesador y Microcontrolador 20 2.3.5 Arquitectura Interna de Un Microcontrolador 22 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) 22 2.3.5.1.1 Tipos de Arquitecturas de Procesadores 23 2.3.5.1.1.1 Arquitectura Von Neumann 23 2.3.5.1.1.2 Arquitectura Hardvard 23 2.3.5.1.2 Lenguaje o Instrucciones del Procesador 24 2.3.5.1.3 Estructura Interna del Procesador 26 2.3.5.1.3.1 Unidad Aritmético-lógica 26 2.3.5.1.3.2 Decodificador de Instrucciones 26 2.3.5.1.3.3 Bloque de Registros 26 2.3.5.1.3.4 Bloque de Control de Buses Internos y Externos 26 2.3.5.2 Memoria de Programa 27 2.3.5.2.1 ROM con Mascara 27 2.3.5.2.2 EPROM 28

Page 8: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

8

2.3.5.2.3 OTP 28 2.3.5.2.4 EEPROM 28 2.3.5.2.5 Flash 29 2.3.5.3 Memoria de Datos 29 2.3.5.4 Líneas o Puertas de Entrada y Salida E/S 29 2.3.5.5 Reloj Principal 30 2.3.5.6 Recursos Especiales 30 2.3.5.6.1 Temporizadores o “Timers” 31 2.3.5.6.2 Perro Guardián o “WatchDog” 31 2.3.5.6.3 Protección Ante Fallo de Alimentación “Brownout” 31 2.3.5.6.4 Estado de Reposo o de Bajo Consumo 31 2.3.5.6.5 Conversor A/D (CAD) 32 2.3.5.6.6 Conversor D/A (CDA) 32 2.3.5.6.7 Comparador Analógico 32 2.3.5.6.8 Modulador de Anchura de Impulsos o PWM 32 2.3.5.6.9 Puertos de E/S Digitales 33 2.3.5.6.10 Puertos de Comunicación 33 2.3.6 Herramientas para Desarrollo con Aplicaciones en Micro- Controladores 33 2.3.6.1 Lenguaje de Maquina 34 2.3.6.2 Lenguajes de Programación 36 2.3.6.2.1 Lenguaje Ensamblador (Lenguaje de Bajo Nivel) 36

Page 9: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

9

2.3.6.2.1.1 Ventajas del Lenguaje Ensamblador 37 2.3.6.2.1.2 Desventajas del Lenguaje Ensamblador 37 2.3.6.2.1.3 Relación entre el Código Binario y el Lenguaje Ensamblador 38 2.3.6.2.2 Lenguaje de Alto Nivel 38 2.3.6.2.2.1 Lenguaje de Programación C 39 2.3.6.3 Compiladores 41 2.3.6.3.1 Funciones de un Compilador 42 2.3.6.3.2 Estructura de un Compilador 42 2.3.6.3.2.1 Análisis Léxico 43 2.3.6.3.3.2.2 Análisis Sintáctico 43 2.3.6.3.2.3 Análisis Semántico 43 2.3.6.3.2.4 Generación de Código Intermedio 44 2.3.6.3.2.5 Optimización de Código 44 2.3.6.3.2.6 Generación de Código 44 2.3.6.3.2.7 Administrador de la Tabla de Símbolos 44 2.3.6.3.2.8 Manejador de Errores 44 2.3.7 Conversión Digital/Análogo y Análogo/Digital 45 2.3.7.1 Conversores D/A 46 2.3.7.2 Conversores A/D 50 2.3.7.3 Resolución, Linealidad y Errores en los Conversores 56 2.3.7.3.1 Resolución: Rango y Sensibilidad 57

Page 10: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

10

2.3.7.3.2 Proporcionalidad Lineal y Errores 58 2.3.7.4 Limitación respecto a la frecuencia de muestro 61 2.3.8 El Puerto USB 63 2.3.8.1 Descripción General 63 2.3.8.2 Ventajas del USB 64 2.3.8.3 Componentes del Sistema USB 64 2.3.8.3.1 El Host Controlador 64 2.3.8.3.2 Hubs o concentradores 65 2.3.8.3.3 Periféricos 67 2.3.8.4 Conectores USB 67 2.3.8.5 Potencia Suministrada por los Cables USB 69 2.3.8.6 Flujo de Datos del Sistema USB 70 2.3.8.6.1 Capas del Sistema de Comunicaciones USB 71 2.3.8.6.1.1 Capa de Función 72 2.3.8.6.1.2 Capa Lógica 72 2.3.8.6.1.3 Capa Física 73 2.3.8.6.2 Sistema Mínimo I/O 74 2.3.8.6.3 EndPoints y Direcciones de Dispositivo 75 2.3.8.7 Transmisión del USB 76 2.3.8.7.1 Transmisión de Serie Asincrónica 77 2.3.8.7.2 Transmisión Sincrónica 78

Page 11: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

11

2.3.8.8 Modos de Transferencia de Información y Estructura de los Paquetes usados en Sistemas USB. 78 2.3.8.8.1 Transferencia de Datos en Modo de Control 83 2.3.8.8.2 Transferencia de Datos por Interrupciones 83 2.3.8.8.3 Transferencia de Datos en Modo Isócrono 84 2.3.8.8.4 Transferencia de Datos en Modo Bulk o Masivo 84 2.3.8.9 Enumeración de Dispositivos USB 85 2.3.8.10 Estados de los Dispositivos USB 87 2.3.8.11 Descriptores USB 88 2.3.8.11.1 Descriptor de Dispositivo 89 2.3.8.11.2 Descriptor de Configuración 90 2.3.8.11.3 Descriptor de Interfaz 91 2.3.8.11.4 Descriptor de EndPoint 92 2.3.8.11.5 Descriptor HID 92 2.3.8.11.6 Descriptor de Reporte 93 2.3.8.12 Clases de dispositivo USB 94 2.3.8.13 Controladores bajo el sistema operativo Windows XP 95 2.3.8.13.1 Modelo de controladores Win32 97 2.3.8.13.2 Proceso de selección de controladores y flujo de información 98 2.3.9 MIDI 99 2.3.9.1 Sistema Binario 100 2.3.9.1.1 Conversión de Notación Binaria a Decimal 100

Page 12: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

12

2.3.9.1.2 Conversión de Notación Decimal a Binaria 101 2.3.9.2 Sistema Hexadecimal 102 2.3.9.3 UART/USART 102 2.3.9.4 Puertos MIDI 103 2.3.9.5 Canales MIDI 104 2.3.9.6 Mensajes MIDI 104 2.3.9.6.1 Bytes de Estado y Bytes de Datos 105 2.3.9.6.2 Tipos de Mensajes MIDI 105 2.3.10 Síntesis de sonido 107 2.3.10.1 Tipos de síntesis 110 2.3.10.1.1 Síntesis Aditiva 110 2.3.10.1.2 Síntesis Sustractiva 111 2.3.10.1.3 Síntesis FM 112 2.3.11 Entornos Virtuales de Control y Generación de audio 113 2.3.12 Max/Msp 115 2.3.13 Instrumentos Acústicos y Digitales 116 2.3.14 Dispositivos de Entrada y Controladores Gestuales 118 2.3.15 Sensores 120 2.3.15.1 Introducción 120 2.3.15.2 Definición 121 2.3.15.3 Sensor Táctil por Infrarrojos 121 2.3.14.4 Sensor Táctil Mediante TouchPad Capacitivo 122

Page 13: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

13

2.3.15.5 Sensor Táctil de Onda Acústica Superficial (SAW) 123 2.3.15.6 Sensores Resistivos (De Presión) 124 2.3.15.6.1 Características Estáticas de los Sensores Resistivos 126 2.3.15.6.2 Características Dinámicas 126 3. METODOLOGIA 126 3.1 ENFOQUE DE LA INVESTIGACION 126 3.2 LINEA DE INVESTIGACION DE USB/ SUB-LINEA DE FACULTAD /CAMPO TEMATICO DEL PROGRAMA 127 3.3 HIPOTESIS 127 3.4 VARIABLES 128 3.4.1 Variables Independientes 128 3.4.2 Variables Dependientes 128 4. DESARROLLO INGENIERIL 128 4.1 Implementación de la interfaz USB-HID 129 4.1.1 Elementos Hardware 130 4.1.1.1 Microcontrolador ATMEGA 16 130 4.1.1.2 Conector USB 131 4.1.1.3 Cristal 131 4.1.1.4 Socket de 40 Pines 131 4.1.1.5 Puertos de los Sensores Resistivos y los Potenciómetros 131 4.1.1.6 Resistencias 131 4.1.1.7 Diodo LED 132

Page 14: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

14

4.1.1.8 Cable USB Macho-Macho 132 4.1.1.9 Cable Paralelo 132 4.1.1.10 Baquela 10 x10 132 4.1.1.11 Circuito 133 4.1.2 Herramientas de software 133 4.1.2.1 WinAVR 134 4.1.2.2 Ponyprog 135 4.1.2.3 USBlyzer 137 4.1.3 Firmware 137 4.1.4 Programación de la interfaz USB 138 4.1.5 Código de programación 138 4.1.6 Utilización de la interfaz USB 144 4.2 Mecanismo de control 145 4.3 Construcción y ergonomía 146 4.3.1 Construcción del Controlador de Cinta 146 4.3.2 Implementación del Sensor de Contacto Bidimensional (Touch Pad) 152 4.4 Conexión del Dispositivo HID a Max/Msp: Entrada HID 156 4.5 Relación entre el Dispositivo HID y el Computador 158 4.6 Asignación de Variables Gestuales a Parámetros de Síntesis 158 5. PRESENTACION Y ANALISIS DE RESULTADOS 162 6. CONCLUSIONES 167

Page 15: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

15

7. RECOMENDACIONES 168 BIBLIOGRAFIA 169 ANEXOS 172

Page 16: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

16

LISTA DE TABLAS Pág.

Tabla 1. Representación de Opcodes 35

Tabla 2. Velocidades de transferencia USB 63 Tabla 3. Pines del cable USB 68 Tabla 4. Transferencia y paquetes USB 81 Tabla 5. Descripción de paquetes USB 82 Tabla 6. Características de Transmisión [Kilobytes/segundo] 85 Tabla 7. Descriptores USB 88 Tabla 8. Descriptor de dispositivo 89 Tabla 9. Descriptor de configuración 90 Tabla 10. Descriptor de interfaz 91 Tabla 11. Descriptor de Endpoint 92 Tabla 12. Descriptor HID 93 Tabla 13. Conversión de valores binarios, decimales hexadecimales y octales. 101 Tabla 14. Tipos de mensaje MIDI 106 Tabla 15. Resistencias necesarias para el montaje de la interfaz USB 133 Tabla 16. Especificaciones técnicas del sensor Slide Wide v 1.1 153 Tabla 17. Relación entre distancia, resistencia y voltaje de la cinta Hi8 163

Page 17: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

17

LISTA DE DE FIGURAS Pág.

Figura 1. Joel Chadabe interpretando el Theremin 3 Figura 2. Continumm fingerboard 4 Figura 3. Una Señal análoga y su equivalente muestreada 8 Figura 4. Microprocesador Intel 80486DX2 19 Figura 5. Microcontrolador ATMEL 20 Figura 6. Estructura de un sistema abierto basado en un microproce- sador 21 Figura 7. Estructura del sistema cerrado de un microcontrolador 22 Figura 8. Arquitectura Von Neumann 23

Figura 9. Arquitectura Harvard 24

Figura 10. Esquema de un traductor 41

Figura 11. Diagrama a bloques de la operación de un buen compilador 43

Figura 12. Circuito sumador 46 Figura 13. Circuito sumador con una única tensión de referencia e Interruptores en las resistencias 47 Figura 14. Red de resistencias R-2R 48 Figura 15. Esquema de un conversor D/A con únicamente 2 valores de resistencias (R y 2R) 48 Figura 16. Multiplexor Análogo formado por puertas de transmisión 50 Figura 17. Contador bidireccional 51

Page 18: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

18

Figura 18. Diagrama de los estados de un Circuito Secuencial que actúa por aproximaciones sucesivas 52

Figura 19. Diagrama de bloques de un Conversor por Aproximaciones Sucesivas 53 Figura 20. Circuito Flash de conversión A/D 55 Figura 21. Funciones de transferencia tipo escalonado para conversores D/A y A/D 57

Figura 22. Error de cero o de “Offset” en conversores A/D y D/A 59

Figura 23. Error de Ganancia en conversores A/D y D/A 59 Figura 24. Error de linealidad en conversores A/D y D/A 60 Figura 25. Muestreo de una señal digitalizada 62 Figura 26. Hub USB 66 Figura 27. Posible esquema de conexiones del bus USB mediante Hubs 66 Figura 28. Esquema de dispositivos USB conectados a un PC mediante HUBS 67 Figura 29. Diseño cable USB 68 Figura 30. Forma física de los conectores USB 68 Figura 31. Medidas de los conectores USB 69 Figura 32. Capas del sistema de comunicaciones USB 71 Figura 33. Estructura de las Capas del modelo USB 71 Figura 34. Esquema de la arquitectura lógica del sistema USB 73 Figura 35. Sistema Mínimo USB 74 Figura 36. Representación grafica de las capas USB 75

Page 19: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

19

Figura 37. Esquema de transmisión asincrónica 77 Figura 38. Esquema de la transmisión sincrónica 78 Figura 39. Esquema de Enumeración USB 86 Figura 40. Estados de conexión en dispositivos USB 87 Figura 41. Comunicación entre controladores. 96 Figura 42. Controladores con Filtro 97 Figura 43. Puertos y cables MIDI 103 Figura 44. Representación binaria de un mensaje MIDI genérico 106 Figura 45. Representación visual de una onda de sonido 107 Figura 46. Evolución temporal de la amplitud del sonido de un piano y de una flauta 108

Figura 47. Representación de una Envolvente 109

Figura 48. Esquema de la síntesis aditiva 111

Figura 49. Filtros: Pasa bajos, Pasa altos, Pasa banda y rechaza Banda 112

Figura 50. Ejemplo de síntesis FM 113

Figura 51. Sintetizador virtual FM7 y sintetizador Yamaha DX 7 114 Figura 52. Controlador MIDI de viento inspirado en un saxofón. 119 Figura 53. John Maclaughlin y Nicolas Collins 119 Figura 54. Michel Waisvisz interpretando el instrumento “The Hands” 120 Figura 55. Sensor táctil por Infrarrojos 122 Figura 56. Sensor táctil Mediante Touchpad Capacitivo 123

Page 20: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

20

Figura 57. Sensor táctil de onda acústica superficial 123 Figura 58. Sensor resistivo de Presión 124 Figura 59. Pines del microcontrolador ATMEGA16 130 Figura 60. Circuito de montaje de la interfaz AVR-HID 133 Figura 61. Montaje de programación del microcontrolador ATMEGA16 135 Figura 62. Fotos del montaje de programación del microcontrolador ATMEGA16 136 Figura 63. Vista de la programación dentro del programa “Programmers Notepad 2” del WinAVR 142 Figura 64. Archivo .hex en el programa Ponyprog 143 Figura 65. Esquema electrónico del controlador de cinta 146 Figura 66. Ambos lados de la cinta, uno resistivo y otro nulo 148 Figura 67. Inicio de la construcción del dispositivo 149 Figura 68. Fijando la base de triplex al controlador de cinta. 149 Figura 69. Espuma utilizada y fijada en la vara 150 Figura 70. Disposición de los cables y forma de pegado 150 Figura 71. Cables de cobre y espuma en el controlador de cinta 151 Figura 72. Adhesión de la cinta HI8 a la licra 151 Figura 73. Sensor bidimensional (Tocuh Pad) 154 Figura 74. Boceto del dispositivo con el sensor en dos ejes 154 Figura 75. Caja donde se colocó el sensor bidimensional (touch pad) 155 Figura 76. Mensaje de Windows XP indicando nuevo hardware Encontrado 156

Page 21: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

21

Figura 77. Patch “Entrada HID” 157 Figura 78. Representación esquemática de un instrumento musical Digital 158 Figura 79. Patch diseñado para generar modulación por anillo 159

Figura 80. Patch diseñado para generar síntesis FM. 161

Figura 81. Patch diseñado para generar síntesis sustractiva 162 Figura 82. Mensaje de Windows XP indicando nuevo hardware Encontrado 164 Figura 83. Propiedades de dispopsitivos de interfaz humana USB 164 Figura 84. Esquema del circuito del controlador de cinta 165 Figura 85. Patch que cumple la función de escalar y suavizar los datos de entrada. 166

Page 22: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

22

LISTA DE ANEXOS Pág.

Anexo A. Código de programación primera parte 173 Anexo B. Código de programación segunda parte 174 Anexo C. Código de programación tercera parte 175 Anexo D. Código de programación cuarta parte 176 Anexo E. Código de programación quinta parte 177 Anexo F. Código de programación sexta parte 178 Anexo G. Firmware del USB 179

Page 23: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

1

INTRODUCCION

A lo largo de la historia, ha existido una evolución muy marcada en el ámbito tecnológico, donde se pueden apreciar diferentes procesos a través de los cuales, los seres humanos diseñan herramientas y maquinas para incrementar su control y comprensión del entorno material. Hoy en día, gracias a esa evolución tecnológica, en el mundo musical existen dos opciones a la hora de comprar un instrumento: comprar uno digital o uno acústico. Los instrumentos musicales digitales poseen diferencias respecto a los acústicos, sean estos instrumentos de percusión, cuerdas o viento. Este hecho proporciona una amplia gama de posibilidades en cuanto a la generación de sonido, sin embargo, la forma de diseñar y ejecutar instrumentos digitales necesita ser pensada con el fin de proporcionar el mismo nivel de control presente en los instrumentos acústicos. Al mismo tiempo que se han diseñado y creado nuevos instrumentos digitales, la música por computador ha evolucionado en forma sorprendente, trayendo consigo una gran cantidad de métodos de síntesis de sonido como también de software, permitiendo que los usuarios tengan acceso a la generación de sonido en tiempo real por medio de una computadora con los llamados instrumentos virtuales. Tanto los modelos de instrumentos físicos como instrumentos virtuales, actualmente han sido considerados suficientemente maduros para ser utilizados en entornos de conciertos o actuaciones en vivo, sin embargo, no se deja de investigar en este tema con el fin de poder ofrecer soluciones a problemas, realizar innovaciones tecnológicas y finalmente con todo esto lograr un importante desarrollo en el mundo musical. De acuerdo a lo anterior, existe una fuerte relación o interacción entre el hombre, las computadoras y la música, donde, el control gestual del sonido generado por computador para crear música puede ser visto como una rama especializada de la interacción hombre-computador, involucrando el control simultaneo de parámetros múltiples, tiempo, ritmo y entrenamiento del usuario. Finalmente, este proyecto pretende el control gestual de parámetros de síntesis por software en tiempo real de una forma diferente a como lo hacen los controladores convencionales. El propósito es no basarse en la implementación del protocolo MIDI dentro del dispositivo controlador como lenguaje de comunicación y control de parámetros de síntesis de audio, sino, programar el dispositivo controlador de forma que se pueda conectar a un computador por USB

Page 24: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

2

y sea reconocido como un dispositivo de interface humana (HID), permitiendo el control de parámetros de un Patch o algoritmo de síntesis del programa MAX/MSP bajo el sistema operativo Windows XP.

Page 25: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

3

1. PLANTEAMIENTO DEL PROBLEMA 1.1 ANTECEDENTES Los sistemas musicales interactivos se remontan a finales de los años sesenta, cuando se desarrollan los primeros sintetizadores analógicos controlados por ordenador para uso en conciertos e instalaciones interactivas. En la siguiente década, las aplicaciones de composición algorítmica en tiempo real se multiplican con los trabajos de compositores y artistas como David Behrman, Joel Chadabe, Salvatore Martirano, Gordon Mumma o Laurie Spiegel. Pero el crecimiento más importante en esta área se produce a mediados de los años ochenta, gracias a la estandardización que conlleva el MIDI y, poco después, con la llegada de los lenguajes de programación gráficos como Max, que facilitan enormemente el diseño y la implementación de sistemas musicales interactivos. Lamentablemente, casi cuatro décadas después de los primeros pioneros, el diseño de instrumentos musicales basados en ordenador así como, de forma más general, la improvisación musical empleando ordenadores, son todavía áreas multidisciplinarias inmaduras en las cuales los conocimientos no parecen sedimentarse de forma incremental o acumulativa. En 1967, GROOVE system, creado por Max Mathews, F.Richard Moore y Bell Labs, se basa en un ordenador que puede controlar todos los parámetros de un sintetizador analógico. Ghent, Moore y Laurie Spiegel, trabajan con este sistema hasta 1978, en 1977, época pre-MIDI, Chadabe utiliza un theremin modificado para controlar un sintetizador synclavier con sus movimientos corporales, si embargo este sistema resultaba limitado en cuanto a que solo funcionaba al acercarse y alejarse del dispositivo.

Figura 1. Joel Chadabe interpretando el Theremin

(www.google.com/image_Chadabe/)

Page 26: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

4

Con el avance tecnológico de las computadoras se fueron implementando interfaces y puertos que permitieran la comunicación entre instrumentos y computadoras. A partir del MIDI en 1982, surgen controladores comerciales para teclistas, guitarristas, percusionistas y saxofonistas, siendo el MIDI la interfaz más comercial para estos controladores y permitiendo la conexión con computadoras a través del puerto de joystick. Más tarde en 1984 Michel Waisvisz presenta el instrumento “The hands” que controla sonidos de un sintetizador vía MIDI, este instrumento traduce las señales análogas que se recogen del movimiento de las manos.

En 1990, Peter Beyls construyó un arreglo de sensores infrarrojos de proximidad en un violín convencional con el fin de medir la posición de los dedos y la depresión del arco. Años más tarde, en 1996 con el nacimiento de los puertos USB, infrarrojos, Firewire/1349 etc, nacen modos de transferencia de datos más eficientemente permitiendo el uso de sensores conectados directamente a un computador sin el uso de una interface externa que convierta esos datos en MIDI, logrando comunicación directa entre hardware y software en muchas aplicaciones de control musical.

Actualmente existe un instrumento controlador el cual funciona tocando una superficie que utiliza sensores de efecto hall para percibir la posición en donde fue tocado y con esta información enviar datos que controlan parámetros en tiempo real de algún software de síntesis de sonido, y se conecta directamente con un computador mediante puerto MIDI o USB, algunos modelos están implementando puertos Firewire.

Figura 2. Continumm fingerboard

(www.hakenaudio.com)

En el contexto interno se tiene poca información, pues el diseño y construcción de controladores es realizada por empresas extranjeras, por ejemplo, está la empresa M-Audio la cual entre sus productos incluye una extensa gama de controladores MIDI en formato de teclado; Cabe anotar que puede haber una serie de

Page 27: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

5

antecedentes de construcción de controladores en el contexto interno, pero de una manera aficionada, por lo cual, es difícil encontrar documentación acerca del diseño y construcción de estos dispositivos. 1.2 DESCRIPCIÓN Y FORMULACIÓN DEL PROBLEMA

Siendo el computador una herramienta tecnológica que hoy en día se aplica ampliamente en el campo musical, se hace cada vez mas necesario la creación de interfaces innovadoras de comunicación entre hardware y software, que permitan una mejor interacción entre el hombre y el computador como también mayores prestaciones y facilidad en el control de sonidos generados. La forma de lograr la comunicación entre dispositivos musicales y computadores es por medio del protocolo MIDI implementado en interfaces con conectores DIN de entrada y salida, sin embargo en la actualidad se usa el envío de datos MIDI a través del protocolo USB, permitiendo una mayor facilidad en la conexión entre el dispositivo y cualquier computador. Según lo anterior, la especificación USB-MIDI se ha convertido en una herramienta importante y al mismo tiempo esencial a la hora de conectar un dispositivo destinado a controlar parámetros de síntesis de audio bajo un entorno virtual, pero al mismo tiempo excluye otras clases de dispositivos USB para este tipo de control. Por lo tanto, la pregunta que guía esta investigación es: ¿Como desarrollar un dispositivo que se comunique con un computador vía USB-HID para controlar parámetros continuos de generación de sonido en tiempo real mediante el programa Max/MSP? 1.3 JUSTIFICACIÓN

En la actualidad la interconexión entre computadores y el mundo exterior es un aspecto mas que importante, promoviendo la creación de nuevas interfaces y dispositivos controladores para la música hecha por computador. Estas interfaces y dispositivos permiten ejercer control sobre diferente software de audio mediante una relación estrecha entre usuario-hardware-computador, lo que abre nuevas posibilidades, prestaciones y facilidades en el campo de la composición e interpretación musical mediante tecnología digital.

Page 28: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

6

La industria de la informática musical se ha orientado hacia programas que permiten y facilitan “el paso de un mundo real a uno virtual”. En segundo instancia y donde se enfatiza el proceso de este proyecto es “el paso de un mundo virtual a uno real”. Mediante el diseño e implementación de un dispositivo controlador, que sea innovador por lo menos en el contexto colombiano, se pretende lograr aspectos relevantes como el control en tiempo real de parámetros de generación de audio o síntesis a través de un Software. Además al mismo tiempo, este proyecto busca obtener un método diferente de control y comunicación entre hardware y software de audio en el que no necesite el envío de datos MIDI, dando una alternativa en la interconexión de instrumentos musicales digitales a un computador. Finalmente, el proyecto es de interés para todas aquellas personas que busquen una forma diferente de realizar sus interpretaciones musicales mediante el uso de herramientas digitales. Al mismo tiempo, es un proyecto original debido a que aporta resultados del proceso de implementación de un dispositivo innovador como una fuente de información e incentivo para promover la construcción de nuevos instrumentos digitales de audio en Colombia, área demasiado pobre y sin exploración actualmente en el país. 1.4 OBJETIVOS DE LA INVESTIGACION 1.4.1 Objetivo General

• Diseñar e implementar un dispositivo USB-HID que controle parámetros de síntesis de audio mediante el programa Max/MSP.

1.4.2 Objetivos Específicos

• Permitir mediante un mecanismo de control la variación de voltaje en un rango de 0 a 5 Voltios.

• Proporcionar mediante el dispositivo controlador la conversión análoga a

digital de los voltajes obtenidos por medio del mecanismo de control.

Page 29: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

7

• Lograr que Windows XP reconozca el dispositivo controlador como un dispositivo USB-HID.

• Permitir la comunicación del dispositivo controlador con el software

Max/MSP para realizar el control de parámetros continuos de síntesis en tiempo real.

1.5 ALCANCES Y LIMITACIONES DEL PROYECTO 1.5.1 Alcances

• Construir un dispositivo innovador que se conecte a un computador por USB permitiendo el control continuo de parámetros de síntesis en un entorno virtual sin necesidad de enviar datos MIDI, y funcione como una herramienta alternativa para la interconexión de instrumentos controladores a un computador y para el control de procesos de generación de audio.

• Mediante el producto promover el diseño y construcción de nuevos

instrumentos digitales de audio en el país, ya que esta es un área que poco se ha explorado en el contexto interno y que puede convertirse en una importante herramienta de desarrollo tecnológico en el ámbito musical e ingenieríl.

1.5.2 Limitaciones Los posibles obstáculos que se pueden presentar para el desarrollo del proyecto son:

• Posible incompatibilidad del dispositivo con el programa Max/MSP. • Posible incompatibilidad del dispositivo con el Sistema Operativo Windows

XP. • Necesidad de importar algunos componentes que pueden ser escasos en el

mercado colombiano, retrasando de esta forma el desarrollo y culminación del proyecto.

• Elevado costo de los componentes en el mercado colombiano y/o elevados costos de importación que no estén dentro del presupuesto estimado.

Page 30: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

8

2. MARCO DE REFERENCIA

2.1 MARCO CONCEPTUAL 2.1.1 Sonido Digital Se entiende como el sonido que es almacenado en un muestreador de forma digital, es decir que cualquier señal análoga se transformara en datos binarios y estos se transformaran en una señal análoga a la salida del muestreador1, lo que producirá sonido. Esto proceso de conversión Análogo a Digital transforma una onda eléctrica enviada por un dispositivo en una serie de números binarios, cada uno de los cuales representa la amplitud de la señal en un punto determinado en el tiempo. La señal de audio analógica (Variación temporal de voltaje eléctrico) pasa a través del convertidor donde se transforme de voltaje continuamente variable a una serie de muestras. Las muestras pueden considerarse como una especie de fotogramas aislados instantáneos de una señal de audio, los cuales estando juntos y en secuencia forman una representación de la onda continua.

Figura 3. Una Señal análoga y su equivalente muestreada

(http://es.wikipedia.org/wiki/Muestreo_digital) Cada muestra de amplitud se convierte en un número binario en el proceso llamado de cuantificación. La cuantificación2 consiste en representar el valor de la señal en binario. Por ejemplo, utilizando cuantificación lineal, una codificación lineal de 8 bits discriminará entre 256 niveles de señal equidistantes (28). También se pueden hacer cuantificaciones no lineales, como es el caso de cuantificadores logarítmicos como la Ley Mu3 o la Ley A4, que, a modo de ejemplo, aún usando 8

1 RONA CARL, Jeffrey, The MIDI Companion, New York: Hal-Leonardy, 1994 2 Definición de cuantificación tomada de la pagina Web: http://es.wikipedia.org/wiki/Audio_digital 3 Para definición de la Ley Mu referirse a: http://es.wikipedia.org/wiki/Ley_Mu

Page 31: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

9

bits, funcionan perceptualmente como 10 bits lineales para señales de baja amplitud en promedio, como la voz humana. En la reproducción los datos alimentan un conversor de Digital a Análogo que transforma estos datos numéricos en una señal de audio continua en el tiempo. 2.1.2 Equipos Musicales Digitales Los aparatos electrónicos para música o sonido se pueden clasificar en los siguientes grupos: generadores, procesadores, grabadores, reproductores y transductores5. Cada uno de ellos tiene una misión determinada; los generadores producen un sonido, los procesadores lo modifican, los grabadores lo almacenan en un medio determinado para su posterior reproducción. Lo que tienen todos en común, es que operan o producen sonido no como una onda de presión, sino como una representación de esta en forma de fluctuación de tensión eléctrica. El enlace entre la onda de presión y la fluctuación de tensión eléctrica se realiza mediante transductores. 2.1.3 Transductores Un transductor es un dispositivo capaz de transformar o convertir un determinado tipo de energía de entrada, en otra diferente de salida. El nombre del transductor indica cual es la transformación que realiza, aunque no necesariamente la dirección de la misma. El transductor es un dispositivo usado principalmente en las ciencias eléctricas para obtener la información de entornos físicos y conseguir (a partir de esta información) señales o impulsos eléctricos o viceversa. Ejemplos:

• Un micrófono es un transductor electroacústico que convierte la energía acústica (vibraciones sonoras: oscilaciones en la presión del aire) en energía eléctrica (variaciones de voltaje).

• Un altavoz también es un transductor electroacústico, pero sigue el camino contrario, pues transforma la corriente eléctrica en vibraciones sonoras.

• Otros ejemplos son los teclados comunes que transforman el impulso de los dedos sobre las membranas en un código con información de la tecla presionada.

4 Para la definición de la Ley A referirse a: http://es.wikipedia.org/wiki/Ley_A 5 Definición tomada de la pagina Web, http://www.ehu.es/acustica/espanol/electricidad/transes/transes.html

Page 32: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

10

• Otro ejemplo es el sistema de alarma de un automóvil, el cual transforma los cambios de presión dentro del vehículo en información para la activación de dicha alarma.

Los transductores y los sensores pueden clasificarse en dos tipos básicos, dependiendo de la forma de la señal convertida6. Los dos tipos son:

• Transductores Analógicos: Los transductores analógicos proporcionan una señal continua, por ejemplo voltaje o corriente eléctrica. Esta señal puede ser tomada como el valor de la variable física que se mide

• Transductores Digitales: Los transductores digitales producen una señal

de salida digital formada por un conjunto de bits de estado en paralelo o formando una serie de pulsaciones que pueden ser contadas. En una u otra forma, las señales digitales representan el valor de la variable medida. Los transductores digitales suelen ofrecer la ventaja de ser más compatibles con los computadores que los sensores analógicos en la automatización y en el control de procesos.

Las características que se buscan en un transductor son:

• Exactitud: La exactitud de la medición debe ser tan alta como fuese posible. Se entiende por exactitud que le valor verdadero de la variable se pueda detectar sin errores sistemáticos positivos o negativos en la medición. Sobre varias mediciones de la variable, el promedio de error entre el valor real y el valor detectado deberá tender a ser cero.

• Precisión: La precisión de la medición debe ser tan alta como fuese

posible. La precisión significa que existe o no una pequeña variación aleatoria en la edición de la variable. La dispersión en los valores de una serie de mediciones debe ser mínima.

• Rango de Funcionamiento: El sensor debe tener un amplio rango de

funcionamiento y debe ser exacto y preciso en todo el rango.

• Velocidad de Respuesta: El transductor debe ser capaz de responder a los cambios de la variable detectada en un tiempo mínimo. Lo ideal sería una respuesta instantánea.

6 Sobre tipos de transductores referirse a la pagina Web, http://www.elprisma.com/apuntes/ingenieria_industrial/transductoressensores/

Page 33: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

11

2.1.4 Programación La programación corresponde a la creación de un conjunto concreto de instrucciones (Código maquina compilado e interpretado directamente desde el núcleo del sistema) o de un Script (código fuente interpretado) que finalmente un computador ejecutará. El programa se escribe en un lenguaje de programación, aunque también se puede escribir directamente en lenguaje de máquina, con cierta dificultad. Un programa se puede dividir en diversas partes, que pueden estar escritas en lenguajes distintos7.

Como parte esencial de la programación existe lo que se llama algoritmo, el cual es una secuencia no ambigua, finita y ordenada de instrucciones que han de seguirse para resolver un problema. Un programa normalmente implementa (traduce a un lenguaje de programación concreto) un algoritmo. Se debe tener en cuenta que es la secuencia de instrucciones en sí la que debe ser finita, no el número de pasos realizados como la ejecución de ellas.

Los programas suelen subdividirse en partes menores (módulos), de modo que la complejidad algorítmica de cada una de las partes sea menor que la del programa completo, lo cual ayuda al desarrollo del programa.

Para que el programa creado por medio de algoritmos dentro de módulos separados comience el proceso de funcionamiento se debe realizar la compilación aunque también puede ser ejecutado mediante un intérprete informático

El código fuente del programa se debe someter a un proceso de transformación para convertirse en lenguaje máquina, interpretable por el procesador. A este proceso se le llama compilación.

Normalmente la creación de un programa ejecutable (un típico “.exe” para Microsoft Windows) conlleva dos pasos. El primer paso se llama compilación (propiamente dicho) y traduce el código fuente escrito en un lenguaje de programación almacenado en un archivo de código de bajo nivel (normalmente en código objeto y no directamente en lenguaje máquina). El segundo paso se llama enlazado (del inglés “Link” o “Linker”) y es donde se junta el código de bajo nivel generado de todos los ficheros que se han compilado con el código de las funciones que hay en las bibliotecas del compilador, para que el ejecutable pueda

7 Definición de programación tomada de la pagina Web, http://es.wikipedia.org/wiki/Programaci%C3%B3n

Page 34: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

12

comunicarse con el sistema operativo traduciendo el código objeto a código máquina8.

Estos dos pasos se pueden hacer por separado: primero, almacenando el resultado de la fase de compilación en archivos objetos9 (“.obj” para Microsoft Windows, “.o” para Unix10) para enlazarlos posteriormente, o segundo, creando directamente el ejecutable, por lo que la fase de compilación se almacena sólo temporalmente. Un programa podría tener partes escritas en varios lenguajes (generalmente C, C++ y Asm) que se pueden compilar de forma independiente y enlazar para formar un único ejecutable.

Estos lenguajes que son utilizados para controlar el comportamiento de una máquina, particularmente una computadora, consisten en un conjunto de reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos, respectivamente.

Un lenguaje de programación permite especificar de manera precisa qué datos debe operar un computador, cómo deben ser estos almacenados y transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Los lenguajes de programación usualmente intentan estar relativamente próximos al lenguaje humano o natural, tal como sucede con el lenguaje Léxico, por lo cual, estos se dividen según el nivel de abstracción, según la forma de ejecución y según el paradigma de programación11 clasificándose de la siguiente manera:

• Lenguajes de bajo nivel: Los lenguajes de bajo nivel son lenguajes de programación que se acercan al funcionamiento de una computadora. El lenguaje de más bajo nivel es, por excelencia, el código máquina. A éste le sigue el lenguaje ensamblador, el cual trabaja con los registros de memoria de la computadora de forma directa.

• Lenguajes de medio nivel: Hay lenguajes de programación que son

considerados por algunos expertos como lenguajes de medio nivel (como es el caso del lenguaje C) debido a que tienen ciertas características que los acercan a los lenguajes de bajo nivel pero al mismo tiempo, ciertas cualidades que lo hacen un lenguaje más cercano al humano y, por tanto, de alto nivel.

8 Sobre el lenguaje de maquina y código de maquina referirse a la pagina Web, http://es.wikipedia.org/wiki/Lenguaje_de_m%C3%A1quina 9 Sobre código objeto referirse a la pagina Web, http://es.wikipedia.org/wiki/C%C3%B3digo_objeto 10 Para información sobre UNIX referirse a la pagina Web, http://es.wikipedia.org/wiki/UNIX 11 Sobre la clasificación por forma de ejecución y paradigma referirse a la pagina Web, http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n

Page 35: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

13

• Lenguajes de alto nivel: Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales, como el inglés. En “BASIC”, el lenguaje de alto nivel más conocido, los comandos como "IF CONTADOR = 10 THEN STOP" pueden utilizarse para pedir al computador que pare si el CONTADOR es igual a 10. Por desgracia para muchas personas esta forma de trabajar es un poco frustrante, dado que a pesar de que los computadores parecen comprender un lenguaje natural, lo hacen en realidad de una forma rígida y sistemática.

Por medio de estos lenguajes de programación es posible crear cualquier tipo de Entorno Virtual que puede ser usado en múltiples aplicaciones. Estos Entornos Virtuales son comúnmente llamados “Software”. 2.1.5 Software Corresponde a todos los componentes intangibles de una computadora, es decir, al conjunto de programas y procedimientos necesarios para hacer posible la realización de una tarea específica, en contraposición a los componentes físicos del sistema (Hardware). Esto incluye aplicaciones informáticas tales como un Procesador de Textos, que permite al usuario realizar una tarea, y Software de Sistema como un Sistema Operativo que permite al resto de programas funcionar adecuadamente facilitando la interacción con los componentes físicos y el resto de aplicaciones. La IEEE12 en su estándar 729 da la siguiente definición de Software: “La suma total de los programas de cómputo, procedimientos, reglas documentación y datos asociados que forman parte de las operaciones de un sistema de cómputo”13. Bajo esta definición, el concepto de Software va más allá de los programas de cómputo en sus distintas formas: código fuente, binario o ejecutable, además de su documentación: es decir, todo lo intangible. 2.1.6 Sistema Operativo Un sistema operativo (cuyo acrónimo es SO) es un conjunto de programas destinados a permitir la comunicación del usuario con un computador y gestionar sus recursos de manera eficiente. El sistema operativo comienza a trabajar

12 Sobre definición de la IEEE referirse a la pagina Web, http://es.wikipedia.org/wiki/IEEE 13 Definición tomada de la pagina Web, http://es.wikipedia.org/wiki/Software

Page 36: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

14

cuando se enciende el computador, y gestiona el hardware de la máquina desde los niveles más básicos14.

Los sistemas operativos mas comunes y de mayor uso son:

• Microsoft Windows: es un sistema operativo con interfaz gráfica para computadoras personales cuyo propietario es la empresa Microsoft. Las distintas versiones de Windows, las cuales ofrecen un entorno gráfico amigable y sencillo, principalmente desde la versión Windows 95, han convertido a Windows en el sistema operativo más utilizado en el mundo. Debido a ello la mayoría de las empresas fabricantes de hardware y software en el mundo tienden a desarrollar sus aplicaciones basadas en dicho sistema.

Windows ha incorporado a través de sus diferentes versiones múltiples herramientas como Internet Explorer y el Reproductor de Windows Media, los cuales se han convertido en el navegador de internet y reproductor multimedia, respectivamente, más populares.

Windows es utilizado principalmente en computadores personales existiendo también diferentes versiones para servidores y dispositivos móviles.

• Linux:15 Corresponde a la denominación de un sistema operativo tipo-Unix y el nombre de un núcleo. Linux es uno de los paradigmas más prominentes del software libre y del desarrollo del código abierto, cuyo código fuente está disponible públicamente y cualquier persona puede libremente usarlo, estudiarlo, redistribuirlo y, con los conocimientos informáticos adecuados modificarlo.

Los primeros sistemas Linux se originaron en 1992, al combinar utilidades de sistema y librerías del proyecto GNU con el núcleo Linux, completando un sistema también conocido como GNU/Linux]. Desde fines de 1990 Linux ha obtenido el apoyo de diversas empresas multinacionales del mundo de la informática, tales como IBM, Sun Microsystems, Hewlett-Packard y Novell.

14 Definición tomada de la pagina Web, http://es.wikipedia.org/wiki/Sistema_operativo 15 Definición de Linux tomada de la pagina Web: http://es.wikipedia.org/wiki/Linux

Page 37: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

15

Linux es usado como sistema operativo en una amplia variedad de plataformas de hardware y computadores, incluyendo los computadores de escritorio (PCs, Macintosh y PowerPC), servidores, supercomputadores, mainframes, y dispositivos empotrados así como teléfonos celulares.

• Mac OS X: es el actual sistema operativo de la familia de computadores Macintosh. Mac OS X es un sistema operativo de la familia UNIX, pero donde el “gestor de ventanas X11”16, característico de estos sistemas, ha sido sustituido por otro denominado Aqua17, desarrollado íntegramente por Apple. Su fundación de bajo nivel se llama Darwin y tiene licencia APSL, una licencia “open source” y “software libre” en sus últimas versiones. Sin embargo, las capas superiores del sistema (por ejemplo el subsistema gráfico en general) son “código cerrado”18.

2.1.7 Síntesis de Sonido Existe software especializado en producción, grabación y ejecución musical, que permite tanto la manipulación como la transformación y generación de señales de audio, lo que se conoce por el nombre de síntesis.

La síntesis19, de sonido, consiste en la obtención de sonidos a partir de medios no acústicos, como variaciones de voltaje, en el caso de la síntesis analógica o por medio de programas de computador, en el caso de la síntesis digital.

Existen diferentes métodos de síntesis, entre ellos:

• Síntesis Aditiva: Consiste en la superposición o mezcla de ondas simples para construir ondas complejas, de manera similar a como funciona un órgano de tubos.

• Síntesis Sustractiva: Se sintetiza el sonido mediante la filtración de una

onda compleja. La señal pasa a través de un filtro que modifica su contenido armónico, atenuando o reforzando determinadas áreas del espectro de la señal.

16 Para ampliar la información referirse a la pagina Web, http://es.wikipedia.org/wiki/X11 17 Para información sobre Aqua referirse a la pagina Web, http://es.wikipedia.org/wiki/Aqua_%28Mac_OS_X%29 18 Para la definición de código cerrado referirse a la pagina Web, http://es.wikipedia.org/wiki/C%C3%B3digo_cerrado 19 Definición de síntesis de sonido tomada de la pagina Web, http://es.wikipedia.org/wiki/S%C3%ADntesis_%28sonido%29

Page 38: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

16

• Síntesis por Modulación: Comprende los métodos en los que se altera algún parámetro de una onda en razón de otra onda, para producir ondas con espectros complejos. En esta categoría podemos notar dos métodos bastante usuales: Síntesis por modulación de amplitud (AM), que consiste en alterar la amplitud de una señal portadora en función de la moduladora y síntesis por modulación de frecuencias (FM), que consiste básicamente en variar la frecuencia de una portadora en función de la forma de otra moduladora.

• Síntesis por Modelos Físicos: La síntesis se hace a partir de la simulación

de un objeto físico y sus características mediante un computador.

• Síntesis Granular: La síntesis granular es una técnica que parte de una visión atomista del sonido, en la que los elementos mínimos son pequeños fragmentos de sonido llamados 'granos'.

Para que exista la posibilidad de manipular este tipo de software, existen ciertos instrumentos físicos que facilitan la interacción hombre-computador; estos dispositivos que permiten dicha comunicación se denominan Interfaces. 2.1.8 Interfaz Una interfaz20 es el punto, el área, o la superficie a lo largo de la cual dos cosas de naturaleza distinta convergen. Por extensión, se denomina interfaz a cualquier medio que permita la interconexión de dos procesos diferenciados con un único propósito común. En software, una interfaz de usuario es la parte del programa informático que permite el flujo de información entre varias aplicaciones o entre el propio programa y el usuario. Metafóricamente se entiende por Interfaz como la conversación entre el usuario y el sistema; durante muchos años se vio a la interacción como un diálogo hombre-máquina. En electrónica, telecomunicaciones y hardware, una interfaz es el puerto (circuito físico) a través del que se envían o reciben señales desde un sistema o subsistemas hacia otros. No existe un interfaz universal, sino que existen diferentes estándares (Interfaz USB, interfaz SCSI, etc.) que establecen especificaciones técnicas concretas (características comunes), con lo que la interconexión sólo es posible utilizando el mismo interfaz en origen y destino. En 20 Definición de Interfaz tomada de la pagina Web, http://es.wikipedia.org/wiki/Interfaz

Page 39: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

17

materia de hardware encontramos términos que se refieren a las interfaces: puerto, puerto de datos, bus21, bus de datos, slot, slot de expansión, etc. 2.2 MARCO LEGAL O NORMATIVO Todos los dispositivos USB trabajan bajo las reglas que establece la “Especificación USB”, ya sea bajo versión 1.x o 2.0, por lo tanto, el diseño y construcción del dispositivo de este proyecto estará basado en el documento “Device Class Definition for Human Interface Devices (HID) Version 1.11” suministrado por el “USB Implementers Forum”, donde se proporcionan los detalles técnicos que permiten entender los requerimientos y diseño de cualquier producto compatible con USB.22 2.3 MARCO TEORICO 2.3.1 Los Microcontroladores Para entender el concepto y funcionamiento de un microcontrolador, primero se debe conocer y entender el concepto y funcionamiento de un controlador. Por lo tanto, el Controlador es definido como un dispositivo que se emplea para el gobierno de uno o varios procesos23. Por ejemplo, el controlador que regula el funcionamiento de un horno dispone de un sensor que mide constantemente su temperatura interna y, cuando traspasa los límites prefijados, genera las señales adecuadas que accionan los efectores que intentan llevar el valor de la temperatura dentro del rango estipulado. Aunque el concepto de controlador ha permanecido invariable a través del tiempo, su implementación física ha variado frecuentemente. Hace tres décadas, los controladores se construían exclusivamente con componentes de lógica discreta, posteriormente se emplearon los microprocesadores, que se rodeaban con chips de memoria y E/S24 sobre una tarjeta de circuito impreso. En la actualidad, todos los elementos del controlador se

21 sobre definición de bus, bus de datos referirse a la pagina Web, http://es.wikipedia.org/wiki/Bus_de_datos 22 “DEVICE CLASS DEFINITION FOR HUMAN INTERFACE DEVICES (HID) VERSION 1.11” suministrado en la pagina Web, http://www.usb.org/developers/devclass_docs/HID1_11.pdf 23 Definición tomada de la pagina Web: http://www.monografias.com/trabajos12/microco/microco.shtml 24 Sobre los puertos Entrada/Salida (E/S) referirse a la pagina Web: http://www.zator.com/Hardware/H2_5.htm

Page 40: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

18

han podido incluir en un chip, el cual recibe el nombre de microcontrolador. Realmente consiste en un sencillo pero completo computador contenido en el corazón (chip) de un circuito integrado. Según lo que se menciono anteriormente, puede existir un error al confundir los términos de microcontrolador y microprocesador como se presenta habitualmente, por lo tanto, debemos mencionar las diferencias que existen entre estos dispositivos. Las preguntas para resolver este problema serian: 2.3.2 ¿Qué es un Microprocesador? Es un dispositivo integrado digital capaz de interpretar y ejecutar un conjunto secuencial de instrucciones (programa), actuando de esta forma como una unidad central de procesos. Básicamente contiene circuitos electrónicos que realizan operaciones aritméticas, lógicas y de control. Los microprocesadores se utilizan en sistemas informáticos avanzados, como impresoras, computadores, automóviles o aviones. Se trata de un sistema muy complejo, por eso debe ir integrado en chips. Estos chips, microchips o circuitos integrados, son circuitos electrónicos complejos formados por componentes extremadamente pequeños formados en una única pieza plana de poco espesor de un material conocido como semiconductor25. Hay microprocesadores que incorporan hasta 10 millones de transistores (que actúan como amplificadores electrónicos, osciladores o, más a menudo, como conmutadores), además de otros componentes como resistencias, diodos, condensadores y conexiones, todo ello en una superficie comparable a la de un sello postal.

Un microprocesador consta de varias secciones diferentes. La unidad aritmético-lógica (ALU, siglas en inglés) efectúa cálculos con números y toma decisiones lógicas; los registros son zonas de memoria especiales para almacenar información temporalmente; la unidad de control descodifica los programas; los buses transportan información digital a través del chip y de la computadora; la memoria local se emplea para los cómputos realizados en el mismo chip. Los microprocesadores más complejos contienen a menudo otras secciones; por ejemplo, secciones de memoria especializada denominadas memoria caché, que sirven para acelerar el acceso a los dispositivos externos de almacenamiento de datos. Los microprocesadores modernos funcionan con una anchura de bus de 64 bits26; esto significa que pueden transmitirse simultáneamente 64 bits de datos.

25 Referirse a Materiales Semiconductores en la página Web, http://es.wikipedia.org/wiki/Semiconductor 26 Para la definición e información de Bit referirse a la pagina Web, http://es.wikipedia.org/wiki/Bit

Page 41: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

19

Finalmente, los microprocesadores no trabajan solos, sino que forman parte de un sistema mayor. El microprocesador es el "cerebro" o parte inteligente de este sistema. El ejemplo más conocido es el de los computadores personales, en los que el microprocesador pasa a ser el componente que primero se nombra en las características del computador (Intel, AMD, etc.).

Figura 4. Microprocesador Intel 80486DX2.

(http://es.wikipedia.org/wiki/Microprocesador)

2.3.3 ¿Qué es un Microcontrolador? Un microcontrolador es un sistema completo, con unas prestaciones limitadas que no pueden modificarse y que puede llevar a cabo las tareas para las que ha sido programado de forma autónoma llevando a cabo procesos lógicos27. Estos procesos o acciones son programados en lenguaje ensamblador por el usuario, y son introducidos en este a través de un programador.

Básicamente, un microcontrolador es un circuito integrado o chip que incluye en su interior las tres unidades funcionales de un computador: CPU28 o unidad central de procesos, Memoria y Unidades de E/S, es decir, se trata de un computador completo en un solo circuito integrado. Aunque sus prestaciones son limitadas, además de dicha integración, su característica principal es su alto nivel de especialización. Aunque los hay del tamaño de un sello de correo, lo normal es que sean incluso más pequeños, ya que, lógicamente, forman parte del dispositivo que controlan. Los microcontroladores pueden encontrarse en casi cualquier dispositivo eléctrico como automóviles, lavadoras, hornos microondas, teléfonos.

Son muy apropiados para aplicaciones industriales, donde la integración es importante al conseguir menor espacio y mayor robustez, por lo cual existe una amplia gama de productos y fabricantes.

27 Definición tomada de la pagina Web, http://www.unicrom.com/Tut_PICs1.asp 28 Para la definición e información de CPU referirse a la página Web, http://es.wikipedia.org/wiki/CPU

Page 42: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

20

Los microcontroladores mas comunes en uso son:

• Atmel • Freescale (antes Motorota) • Hitachi • Holtek • Intel • National Semiconductor • Microchip • Nec • Parallax • ST • Texas Instruments • Zilog

Figura 5. Microcontrolador ATMEL.

(http://www.kit8051.com.br/images/AT89S8253.jpg)

2.3.4 Diferencias entre Microprocesador y Microcontrolador Si se realiza el diseño de un microprocesador se observa que dependiendo del circuito, se requieren algunos circuitos integrados adicionales además del microprocesador, como por ejemplo: memorias RAM29 para almacenar los datos

29 Para información sobre Memoria RAM referirse a la página Web, http://es.wikipedia.org/wiki/Memoria_RAM

Page 43: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

21

temporalmente y memorias ROM30 para almacenar el programa que se encargaría del proceso del equipo, un circuito integrado para los puertos de entrada y salida y finalmente un decodificador de direcciones.

Figura 6. Estructura de un sistema abierto basado en un microprocesador.

(http://usuarios.lycos.es/sfriswolker/pic/uno.htm) Un microcontrolador es un solo circuito integrado que contiene todos los elementos electrónicos que se utilizaban para hacer funcionar un sistema basado con un microprocesador; es decir contiene en un solo integrado la Unidad de Proceso, la memoria RAM, memoria ROM, puertos de entrada/salida y otros periféricos, con la consiguiente reducción de espacio. El microcontrolador es en definitiva un circuito integrado que incluye todos los componentes de un computador. Debido a su reducido tamaño es posible montar el controlador en el propio dispositivo al que gobierna. En este caso el controlador recibe el nombre de controlador empotrado (Embedded Controller).

30 Para información sobre Memoria ROM referirse ala página Web, http://es.wikipedia.org/wiki/ROM

Page 44: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

22

Figura 7. Estructura del sistema cerrado de un microcontrolador

(http://usuarios.lycos.es/sfriswolker/pic/uno.htm)

En general, un microcontrolador es, como ya se ha comentado previamente, un sistema completo con unas prestaciones limitadas que no pueden modificarse y que puede llevar a cabo las tareas para las que ha sido programado de forma autónoma. Un microprocesador, en cambio, es simplemente un componente que conforma el microcontrolador, que lleva a cabo ciertas tareas y que, en conjunto con otros componentes, forman un microcontrolador. Finalmente y a modo de conclusión las diferencias entre microcontrolador y microprocesador son que: el primero es un sistema autónomo e independiente, mientras que el segundo forma parte esencial de un sistema mayor. 2.3.5 Arquitectura Interna de un Microcontrolador Como ya se ha visto, un microcontrolador es un dispositivo complejo formado por otros más sencillos. A continuación se explican sus partes constitutivas: 2.3.5.1 Procesador o CPU (Unidad Central de Procesos) Es la parte o elemento mas importante del microcontrolador, el cual, determina sus principales características tanto a nivel hardware como software y se encarga del procesamiento de las instrucciones y de llevar a cabo o ejecutar programas. Viene a ser el cerebro, motor y corazón del microcontrolador, ejecutando instrucciones a muy bajo nivel para hacer operaciones lógicas simples, como sumar, restar, multiplicar y dividir. Se encarga de direccionar la memoria de instrucciones, recibir el código de la instrucción en curso, su decodificación y la ejecución de la operación que implica la instrucción, así como la búsqueda de los operandos y el almacenamiento del resultado.

Page 45: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

23

2.3.5.1.1 Tipos de Arquitecturas de Procesadores Debido a la necesidad de conseguir elevados rendimientos en los procesos internos de un microcontrolador, se ha desembocado en el empleo generalizado de procesadores de arquitectura Harvard frente a los tradicionales que seguían la arquitectura de Von Neumann. 2.3.5.1.1.1 Arquitectura Von Neumann Se caracteriza porque la CPU se conecta con una memoria única, donde coexisten datos e instrucciones, a través de un sistema de buses, dicho en otras palabras, la arquitectura de Von Neumann se caracteriza por disponer de una sola memoria principal donde se almacenan datos e instrucciones del programa de forma indistinta. A dicha memoria se accede a través de un sistema de buses único (direcciones, datos y control).

Las principales limitaciones que nos encontramos con la arquitectura Von Neumann son:

1º. La limitación de la longitud de las instrucciones por el bus de datos, que hace que el microprocesador tenga que realizar varios accesos a memoria para buscar instrucciones complejas.

2º. La limitación de la velocidad de operación a causa del bus único para datos e instrucciones que no deja acceder simultáneamente a unos y otras, lo cual impide superponer ambos tiempos de acceso.

Figura 8. Arquitectura Von Neumann

(http://www.unicrom.com/Tut_PICs1.asp)

2.3.5.1.1.2 Arquitectura Hardvard

La arquitectura Harvard tiene la CPU conectada a dos memorias (una con las instrucciones y otra con los datos) por medio de dos buses diferentes.

Page 46: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

24

Una de las memorias contiene solamente las instrucciones del programa (Memoria de Programa), y la otra solo almacena datos (Memoria de Datos).

Ambos buses son totalmente independientes y pueden ser de distintos anchos. Para un procesador de Set de Instrucciones Reducido, o RISC (Reduced Instrucción Set Computer), el Set de instrucciones y el bus de memoria de programa pueden diseñarse de tal manera que todas las instrucciones tengan una sola posición de memoria de programa de longitud.

Además, al ser los buses independientes, la CPU puede acceder a los datos para completar la ejecución de una instrucción, y al mismo tiempo leer la siguiente instrucción a ejecutar.

Ventajas de esta arquitectura31: 1º. El tamaño de las instrucciones no esta relacionado con el de los datos, y por lo tanto puede ser optimizado para que cualquier instrucción ocupe una sola posición de memoria de programa, logrando así mayor velocidad y menor longitud de programa.

2º. El tiempo de acceso a las instrucciones puede superponerse con el de los datos, logrando una mayor velocidad en cada operación.

Una pequeña desventaja de los procesadores con arquitectura Harvard, es que deben poseer instrucciones especiales para acceder a tablas de valores constantes que pueda ser necesario incluir en los programas, ya que estas tablas se encontraran físicamente en la memoria de programa (por ejemplo en la EPROM de un microprocesador).

Figura 9. Arquitectura Harvard

(http://www.unicrom.com/Tut_PICs1.asp)

2.3.5.1.2 Lenguaje o Instrucciones del Procesador

Hablando un poco sobre la arquitectura de un procesador se puede decir que, uno de los elementos importantes en el diseño de estos es determinar cual es el

31 Tomado de la pagina Web, http://www.geocities.com/micros_uan/cap11.html

Page 47: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

25

juego de instrucciones. Este conjunto de instrucciones (órdenes) es el lenguaje que realmente entiende el procesador, y constituye lo que se conoce como “lenguaje ensamblador” o “lenguaje-máquina”32. Esto es importante debido a dos razones:

a. El juego de instrucciones decide el diseño físico del conjunto b. Cualquier operación que deba ejecutarse con el procesador deberá poder

ser descrita en términos de este "lenguaje" elemental (debido a que los compiladores e intérpretes son en realidad traductores desde el lenguaje de alto nivel (fuente) a este lenguaje-máquina.

Frente a esta cuestión caben tres filosofías de diseño en cuanto a la arquitectura y funcionalidad de los procesadores actuales. La primera conduce a máquinas denominadas CISC ("Complex Instruction Set Computer"); las máquinas construidas según el otro criterio se denominan RISC ("Reduced Instruction Set Computer") y por ultimo tenemos las maquinas denominadas SISC. Como puede deducirse de sus propios nombres, las máquinas CISC utilizan instrucciones muy complejas, descriptivas y específicas, lo que necesariamente se traduce en varias consecuencias:

• El lenguaje debe contener un amplio surtido de instrucciones (una para cada circunstancia distinta). Son instrucciones complejas, por tanto de ejecución lenta. La circuitería del procesador también es compleja.

• Para un trabajo específico se requieren pocas instrucciones (siempre hay una que resuelve el problema).

Las máquinas RISC representan el enfoque opuesto. Utilizan instrucciones muy simples, que deben ser cuidadosamente escogidas, porque cualquier operación debe ser expresada como una secuencia de estas pocas instrucciones. Las consecuencias son justamente opuestas a las anteriores:

• El lenguaje contiene un conjunto pequeño de instrucciones. • Las instrucciones son muy simples, por tanto de ejecución rápida. La

circuitería es más simple que en los procesadores CISC. • Para cualquier operación se requieren varias instrucciones elementales.

Naturalmente cada criterio tiene sus ventajas y desventajas en lo que a rendimiento se refiere. En las máquinas CISC, lentitud de cada instrucción frente

32 Referirse a la pagina Web, http://www.zator.com/Hardware/H3_2.htm

Page 48: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

26

a poca cantidad de ellas; en las RISC, rapidez individual aunque hay que ejecutar un mayor número.

Por ultimo la filosofía SISC (Computadores de Juego de Instrucciones Específico) existe en microcontroladores destinados a aplicaciones muy concretas, donde el juego de instrucciones, además de ser reducido, es "específico", o sea, las instrucciones se adaptan a las necesidades de la aplicación prevista. 2.3.5.1.3 Estructura Interna del Procesador El procesador esta compuesto por las siguientes partes: 2.3.5.1.3.1 Unidad Aritmético-Lógica Es donde se efectúan las operaciones aritméticas (suma, resta, y a veces producto y división) y lógicas33 (and, or, not, etc.). 2.3.5.1.3.2 Decodificador de Instrucciones Allí se interpretan las instrucciones que van llegando y que componen el programa. 2.3.5.1.3.3 Bloque de Registros Los registros son celdas de memoria en donde queda almacenado un dato temporalmente. Existe un registro especial llamado de indicadores, estado o flags, que refleja el estado operativo del procesador. 2.3.5.1.3.4 Bloque de Control de Buses Internos y Externos Supervisa todo el proceso de transferencias de información dentro del procesador y fuera de él. 33 Referirse a Operaciones Lógicas de la pagina Web, http://www.zator.com/Hardware/H3_2.htm

Page 49: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

27

2.3.5.2 Memoria de Programa En los microcontroladores la memoria de instrucciones y datos está integrada en el propio chip. Una parte debe ser no volátil, tipo ROM, y se destina a contener el programa de instrucciones que gobierna la aplicación. Otra parte de memoria será tipo RAM, volátil, y se destina a guardar las variables y los datos.

Hay dos peculiaridades que diferencian a los microcontroladores de los computadores personales:

• No existen sistemas de almacenamiento masivo como disco duro o disquetes.

• Como el microcontrolador sólo se destina a una tarea en la memoria ROM, sólo hay que almacenar un único programa de trabajo.

El microcontrolador está diseñado para que en su memoria de programa se almacenen todas las instrucciones del programa de control y como éste siempre es el mismo, debe estar grabado de forma permanente. La RAM en estos dispositivos es de poca capacidad pues sólo debe contener las variables y los cambios de información que se produzcan en el transcurso del programa. Por otra parte, como sólo existe un programa activo, no se requiere guardar una copia del mismo en la RAM pues se ejecuta directamente desde la ROM.

Los usuarios de computadores personales están habituados a manejar Megabytes de memoria, pero, los diseñadores de microcontroladores trabajan con capacidades comprendidas entre 512 bytes y 8 kbytes de ROM y 20 a 512 bytes de RAM.

Según el tipo de memoria ROM que dispongan los microcontroladores, la aplicación y utilización de los mismos es diferente. A continuación se describen las cinco versiones de memoria no volátil que se pueden encontrar en los microcontroladores del mercado. 2.3.5.2.1 ROM con Máscara Es una memoria no volátil de sólo lectura cuyo contenido se graba durante la fabricación del chip. El elevado costo del diseño de la máscara sólo hace aconsejable el empleo de los microcontroladores con este tipo de memoria cuando se precisan cantidades superiores a varios miles de unidades.

Page 50: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

28

2.3.5.2.2 EPROM Los microcontroladores que disponen de memoria EPROM (“Erasable Programmable Read OnIy Memory”) pueden borrarse y grabarse muchas veces. La grabación se realiza, con un grabador gobernado desde un computador. Si, posteriormente, se desea borrar el contenido, disponen de una ventana de cristal en su superficie por la que se somete a la EPROM a rayos ultravioleta durante varios minutos. Las cápsulas son de material cerámico y son más caros que los microcontroladores con memoria OTP, lo cuales están hechos con material plástico. 2.3.5.2.3 OTP El microcontrolador contiene una memoria no volátil de sólo lectura "programable una sola vez" por el usuario denominada OTP (“One Time Programmable”). Es el usuario quien puede escribir el programa en el chip mediante un sencillo grabador controlado por un programa desde un computador. La versión OTP es recomendable cuando es muy corto el ciclo de diseño del producto, o bien, en la construcción de prototipos y series muy pequeñas. Tanto en este tipo de memoria como en la EPROM, se suele usar la encriptación mediante fusibles para proteger el código contenido. 2.3.5.2.4 EEPROM Se trata de memorias de sólo lectura, programables y borrables eléctricamente (Electrical Erasable Programmable Read OnIy Memory). Tanto la programación como el borrado, se realizan eléctricamente desde el propio grabador y bajo el control programado de un computador. Es muy cómoda y rápida la operación de grabado y la de borrado. No disponen de ventana de cristal en la superficie.

Los microcontroladores dotados de memoria EEPROM una vez instalados en el circuito, pueden grabarse y borrarse cuantas veces se quiera sin ser retirados de dicho circuito. Para ello se usan "grabadores en circuito" que ofrecen una gran flexibilidad y rapidez a la hora de realizar modificaciones en el programa de trabajo. El número de veces que puede grabarse y borrarse una memoria EEPROM es finito, por lo que no es recomendable una reprogramación continua. Son muy idóneos para la enseñanza y la Ingeniería de diseño.

Los diferentes fabricantes han extendiendo la tendencia de incluir una pequeña zona de memoria EEPROM en los circuitos programables para guardar y modificar

Page 51: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

29

cómodamente una serie de parámetros que adecuan el dispositivo a las condiciones del entorno. Este tipo de memoria es relativamente lenta. 2.3.5.2.5 Flash Se trata de una memoria no volátil, de bajo consumo, que se puede escribir y borrar, funciona como una ROM y una RAM pero consume menos energía y es más pequeña. La alternativa FLASH está recomendada frente a la EEPROM cuando se precisa gran cantidad de memoria de programa no volátil, además es más veloz y tolera más ciclos de escritura/borrado. Las memorias EEPROM y Flash son muy útiles al permitir que los microcontroladores que las incorporan puedan ser reprogramados "en circuito", es decir, sin tener que sacar el circuito integrado de la tarjeta. Así, un dispositivo con este tipo de memoria incorporado al control del motor de un automóvil permite que pueda modificarse el programa durante la rutina de mantenimiento periódico, compensando los desgastes y otros factores tales como la compresión, la instalación de nuevas piezas, etc. La reprogramación del microcontrolador puede convertirse en una labor rutinaria dentro de la puesta a punto. 2.3.5.3 Memoria de Datos Los datos que manejan los programas varían continuamente, y esto exige que la memoria que los contiene debe ser de lectura y escritura, por lo que la memoria RAM estática (SRAM) es la más adecuada, aunque sea volátil. Hay microcontroladores que disponen como memoria de datos una de lectura y escritura no volátil, del tipo EEPROM. De esta forma, un corte en el suministro de la alimentación no ocasiona la pérdida de la información, que está disponible al reiniciarse el programa. 2.3.5.4 Líneas o Puertas de Entrada y Salida E/S A excepción de dos patas destinadas a recibir la alimentación, otras dos para el cristal de cuarzo que regula la frecuencia de trabajo, y una más para provocar el Reset, las patas restantes de un microcontrolador sirven para soportar su comunicación con los periféricos externos que controla.

Page 52: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

30

Las líneas de E/S que se adaptan con los periféricos manejan información en paralelo y se agrupan en conjuntos de ocho, recibiendo el nombre de Puertas. Hay modelos con líneas que soportan la comunicación en serie; otros disponen de conjuntos de líneas que implementan puertas de comunicación para diversos protocolos, como el I2C, el USB, etc.

A modo de resumen se puede decir que la principal utilidad de las patas que posee la cápsula que contiene un microcontrolador es soportar las líneas de E/S que comunican al computador interno con los periféricos exteriores. Según los controladores de periféricos que posea cada modelo de microcontrolador, las líneas de E/S se destinan a proporcionar el soporte a las señales de entrada, salida y control. 2.3.5.5 Reloj Principal Todos los microcontroladores disponen de un circuito oscilador que genera una onda cuadrada de alta frecuencia, la cual configura los impulsos de reloj usados en la sincronización de todas las operaciones del sistema.

Generalmente, el circuito de reloj está incorporado en el microcontrolador y sólo se necesitan unos pocos componentes exteriores para seleccionar y estabilizar la frecuencia de trabajo. Dichos componentes suelen consistir en un cristal de cuarzo junto a elementos pasivos o bien un resonador cerámico o una red R-C.

Aumentar la frecuencia de reloj supone disminuir el tiempo en que se ejecutan las instrucciones pero lleva aparejado un incremento del consumo de energía. 2.3.5.6 Recursos Especiales Cada fabricante ofrece numerosas versiones de una arquitectura básica de microcontrolador. En algunas amplía las capacidades de las memorias, en otras incorpora nuevos recursos, en otras reduce las prestaciones al mínimo para aplicaciones muy simples, etc. La labor del diseñador es encontrar el modelo mínimo que satisfaga todos los requerimientos de su aplicación. De esta forma, se minimizará el costo, el hardware y el software. Los principales recursos específicos que incorporan los microcontroladores son:

Page 53: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

31

2.3.5.6.1 Temporizadores o "Timers" Se emplean para controlar periodos de tiempo (temporizadores) y para llevar la cuenta de acontecimientos que suceden en el exterior (contadores). Para la medida de tiempos se carga un registro con el valor adecuado y a continuación dicho valor se va incrementando o decrementando al ritmo de los impulsos de reloj o algún múltiplo hasta que se desborde y llegue a 0, momento en el que se produce un aviso. Cuando se desean contar acontecimientos que se materializan por cambios de nivel o flancos en alguna de las patas del microcontrolador, el mencionado registro se va incrementando o decrementando al ritmo de dichos impulsos. 2.3.5.6.2 Perro Guardián o "Watchdog" Cuando el computador personal se bloquea por un fallo del software u otra causa, se pulsa el botón del reset y se reinicializa el sistema. Pero un microcontrolador funciona sin el control de un supervisor y de forma continua las 24 horas del día. El Perro guardián consiste en un temporizador que, cuando se desborda y pasa por 0, provoca un reset automáticamente en el sistema. 2.3.5.6.3 Protección Ante Fallo de Alimentación o "Brownout" Se trata de un circuito que resetea al microcontrolador cuando el voltaje de alimentación (VDD) es inferior a un voltaje mínimo "Brownout".34 Mientras el voltaje de alimentación sea inferior al de Brownout el dispositivo se mantiene reseteado, comenzando a funcionar normalmente cuando sobrepasa dicho valor. 2.3.5.6.4 Estado de Reposo o de Bajo Consumo Son abundantes las situaciones reales de trabajo en que el microcontrolador debe esperar, sin hacer nada, a que se produzca algún acontecimiento externo que lo ponga de nuevo en funcionamiento. Para ahorrar energía, (factor clave en los aparatos portátiles), los microcontroladores disponen de una instrucción especial (SLEEP en los PIC35), que les pasa al estado de reposo o de bajo consumo, en el

34 Referencias sobre “Brownout” en las páginas Web, http://www.elrebujito.es/wikipic/index.php/BrownOut y http://ustpower.com/ESP_ProblemasEnergiaElectrica.htm. 35 Sobre el concepto de PIC referirse a la pagina Web, http://es.wikipedia.org/wiki/Microcontrolador_PIC

Page 54: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

32

cual los requerimientos de potencia son mínimos. En dicho estado se detiene el reloj principal y se "congelan" sus circuitos asociados, quedando sumido en un profundo "sueño" el microcontrolador. Al activarse una interrupción ocasionada por el acontecimiento esperado, el microcontrolador se despierta y reanuda su trabajo. 2.3.5.6.5 Conversor A/D (CAD) Los microcontroladores que incorporan un conversor A/D36 (Analógico/Digital) pueden procesar señales analógicas encontradas en diferentes aplicaciones. Suelen disponer de un multiplexor que permite aplicar a la entrada del CAD diversas señales analógicas desde las patas del circuito integrado. 2.3.5.6.6 Conversor D/A (CDA) El conversor D/A37 (Digital/Análogo) transforma los datos digitales obtenidos del procesamiento del computador en su correspondiente señal analógica que saca al exterior por una de las patas de la cápsula. 2.3.5.6.7 Comparador Analógico Algunos modelos de microcontroladores disponen internamente de un Amplificador Operacional38 que actúa como comparador entre una señal fija de referencia y otra variable que se aplica por una de las patas de la cápsula. La salida del comparador proporciona un nivel lógico 1 ó 0 según una señal sea mayor o menor que la otra. También hay modelos de microcontroladores con un módulo de tensión de referencia que proporciona diversas tensiones de referencia que se pueden aplicar en los comparadores. 2.3.5.6.8 Modulador de Anchura de Impulsos o PWM Son circuitos que proporcionan en su salida impulsos de anchura variable, que se ofrecen al exterior a través de las patas del encapsulado.

36 Ver información sobre conversores A/D en el capitulo 2.3.7.2, Pág. 75 de este proyecto. 37 Ver información sobre conversores D/A en el capitulo 2.3.7.1, Pág. (71) de este proyecto. 38 Para información sobre Amplificadores operacionales referirse a la pagina Web, http://es.wikipedia.org/wiki/Amplificador_operacional

Page 55: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

33

2.3.5.6.9 Puertos de E/S Digitales Todos los microcontroladores destinan algunas de sus patas a soportar líneas de E/S digitales. Por lo general, estas líneas se agrupan de ocho en ocho formando Puertos. Las líneas digitales de los Puertos pueden configurarse como entrada o como salida cargando un 1 ó un 0 en el bit correspondiente de un registro destinado a su configuración. 2.3.5.6.10 Puertos de Comunicación Tienen como objetivo dotar al microcontrolador de la posibilidad de comunicarse con otros dispositivos externos, otros buses de microprocesadores, buses de sistemas, buses de redes y poder adaptarlos con otros elementos bajo otras normas y protocolos. Algunos modelos disponen de recursos que permiten directamente esta tarea, entre los que destacan:

• UART, adaptador de comunicación serie asíncrona. • USART, adaptador de comunicación serie síncrona y asíncrona.

• Puerta paralela esclava para poder conectarse con los buses de otros

microprocesadores.

• USB (Universal Serial Bus), que es un moderno bus serie para los PC. (Este puerto de comunicación es el más importante para el desarrollo de este proyecto).39

• Bus I2C, que es un interfaz serie de dos hilos desarrollado por Philips.

• CAN (Controller Area Network), para permitir la adaptación con redes de

conexionado multiplexado desarrollado conjuntamente por Bosch e Intel para el cableado de dispositivos en automóviles.

2.3.6 Herramientas Para Desarrollo de Aplicaciones con Microcontroladores Uno de los factores que más importancia tiene a la hora de seleccionar un microcontrolador entre todos los demás es el soporte tanto software como hardware que este dispone. Un buen conjunto de herramientas de desarrollo

39 Ampliación detallada sobre USB en el capito 2.3.8, Pág. 90 de este proyecto.

Page 56: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

34

puede ser decisivo en la elección, ya que pueden suponer una ayuda inestimable en el desarrollo del proyecto. Las principales herramientas de ayuda al desarrollo de sistemas basados en Microcontroladores son realizados a través de diferente Software que permite la comunicación entre el lenguaje de programación de bajo o alto nivel con el lenguaje de maquina. 2.3.6.1 Lenguaje de Maquina Un lenguaje de máquina es aquel con el que trabaja el microprocesador; para reaccionar y efectuar la operación que se desea, necesita de una secuencia de señales eléctricas almacenadas como "unos" y "ceros" en las posiciones de la memoria, lo cual es denominado “código binario”40. Una y solo una secuencia de señales concreta, realiza una determinada operación. Llamamos a esto un código porque es una correspondencia que asigna a cada símbolo de un conjunto dado de números, una determinada correspondencia de otro conjunto, según reglas determinadas de conversión.

El código de maquina, en lo fundamental es el único código de mando que un computador entiende. Según todo lo anterior se puede afirmar que el código de las maquinas en un lenguaje extremadamente dificultoso para un programador. Por ejemplo, si un programador quiere escribir una instrucción que agregue el contenido de una palabra de memoria a una segunda, debe entender el símbolo de ocho dígitos de esta instrucción de adición en una tabla, así como las direcciones de las dos palabras. El resultado es una hilera de tal vez 32 dígitos, que el programador puede equivocar a la hora de copiar. Por ello, un programa que contenga varias docenas de estas instrucciones será una pesadilla en cuanto a su escritura y a su corrección.

A pesar de ello en los primeros años de la computación los ingenieros trabajaron directamente en el lenguaje de la máquina. Luego empezaron a desarrollar códigos más legibles, aprovechando recursos mnemotécnicos. A estos nuevos códigos se les dio el nombre de lenguajes en conjunto o lenguajes ensambladores como también lenguajes de alto nivel. Como complemento de esto, a continuación se detalla el proceso de creación del lenguaje maquina:

Al desarrollarse las primeras computadoras electrónicas, se vio la necesidad de programarlas, es decir, de almacenar en memoria la información sobre la tarea

40 Ampliación sobre el código binario en el capitulo (2.3.9.1), Pág. (100) de este proyecto.

Page 57: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

35

que iban a ejecutar. Las primeras se usaban como calculadoras simples; se les indicaban los pasos de cálculo, uno por uno.

John Von Neumann41 desarrolló el modelo que lleva su nombre, para describir este concepto de "programa almacenado". En este modelo, se tiene una abstracción de la memoria como un conjunto de celdas, que almacenan simplemente números. Estos números pueden representar dos cosas: los datos, sobre los que va a trabajar el programa; o bien, el programa en sí. Inicialmente se tenía el problema de representar las acciones que iba a realizar la computadora, y que la memoria, al estar compuesta por “switches”42 correspondientes al concepto de bit, solamente permitía almacenar números binarios. La solución que se tomó fue la siguiente: a cada acción que era capaz de realizar la computadora se le asoció un número, el cual, se convirtió en su código de operación (Opcode). Por ejemplo, una calculadora programable simple puede asignar los opcodes:

1 = SUMA, 2 = RESTA, 3 = MULTIPLICA, 4 = DIVIDE.

Tabla 1. Representación de Opcodes

Localidad Opcode Significado Comentario

0 5 5 En esta localidad, tenemos el primer número de la fórmula

1 3 * En esta localidad, tenemos el opcode que representa la multiplicación.

2 3 3 En esta localidad, tenemos el segundo número de la fórmula

3 1 + En esta localidad, tenemos el opcode que representa la suma.

4 2 2 En esta localidad, tenemos el último número de la fórmula

(http://www.sinergia-web.com.mx/clases/asm9708/Temas/clase02.htm)

Con esta representación, es simple expresar las operaciones de las que es capaz el hardware, en la memoria.

41 Referirse a la Arquitectura Von Neumann 42 Para la definición de “Switch” referirse a la pagina Web, http://www.wordreference.com/definicion/switch

Page 58: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

36

La descripción y uso de los opcodes es lo que se denomina “lenguaje de máquina”, es decir, la lista de códigos que la máquina va a interpretar como instrucciones describe las capacidades de programación que se tiene de ella; es el lenguaje más primitivo, depende directamente del hardware, y requiere que el programador conozca el funcionamiento de la máquina al más bajo nivel. Cuando se abstrae los opcodes y se sustituyen por una palabra que es clave de su significado y comúnmente se le conoce como “mnemónico”43, se tiene el concepto de “Lenguaje Ensamblador”. 2.3.6.2 Lenguajes de Programación Un lenguaje de programación está formado por un conjunto de símbolos básicos (alfabeto) y un conjunto de reglas que especifican como manipularlos. También debe darle significado a las cadenas formadas al manipular los símbolos básicos. Los lenguajes de programación pueden clasificarse de acuerdo a su semejanza con el lenguajes maquina o a su semejanza con el lenguaje humano (generalmente inglés). Los lenguajes que tiene mayor semejanza con el lenguaje humano se les llama lenguajes de alto nivel, mientras que los lenguajes más parecidos al lenguaje de maquina son conocidos como de bajo nivel. 2.3.6.2.1 Lenguaje Ensamblador (Lenguaje de Bajo Nivel) La programación en lenguaje ensamblador puede resultar un tanto ardua para el principiante, pero permite desarrollar programas muy eficientes, ya que otorga al programador el dominio absoluto del sistema. Los fabricantes suelen proporcionar el programa ensamblador de forma gratuita y en cualquier caso siempre se puede encontrar una versión gratuita para los microcontroladores más populares. La importancia del lenguaje ensamblador radica principalmente en que se trabaja directamente con el microprocesador, por lo cual se debe conocer el funcionamiento interno de este; tiene la ventaja de que en él, se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no se pueden realizar. Otro punto importante es que los programas en lenguaje ensamblador ocupan menos espacio en memoria.

43 Para definición sobre el termino “Mnemónico” referirse a la pagina Web, http://es.wikipedia.org/wiki/Mnem%C3%B3nico

Page 59: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

37

2.3.6.2.1.1 Ventajas del Lenguaje Ensamblador: • Velocidad

Como este lenguaje se trabaja directamente con el microprocesador al ejecutar un programa. Como este lenguaje es el más cercano a la máquina, la computadora lo procesa mas rápido.

• Eficiencia de tamaño

Un programa en ensamblador no ocupa mucho espacio en memoria porque no tiene que cargar librerías y demás como son los lenguajes de alto nivel

• Flexibilidad

Es flexible porque todo lo que puede hacerse con una máquina, puede hacerse en el lenguaje ensamblador de esta misma; los lenguajes de alto nivel tienen en una u otra forma limitantes para explotar al máximo los recursos de la máquina, esto quiere decir que en lenguaje ensamblador se pueden hacer tareas específicas que en un lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas limitantes que no se lo permite. 2.3.6.2.1.2 Desventajas del Lenguaje Ensamblador

• Tiempo de programación

Como es un lenguaje de bajo nivel requiere más instrucciones para realizar el mismo proceso, en comparación con un lenguaje de alto nivel. Por otro lado, requiere de más cuidado por parte del programador, pues es propenso a que los errores de lógica se reflejen más fuertemente en la ejecución.

• Programas fuente grandes

Por las mismas razones que aumenta el tiempo, crecen los programas fuentes; simplemente requerimos más instrucciones primitivas para describir procesos equivalentes. Esto es una desventaja porque dificulta el mantenimiento de los programas, y nuevamente reduce la productividad de los programadores.

Page 60: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

38

• Peligro de afectar recursos inesperadamente

Todo error que se cometa, o todo riesgo que se pueda tener, puede afectar los recursos de la maquina. Al programar en este lenguaje, lo más común que puede pasar es que la máquina se bloquee o se reinicialize, porque con este lenguaje es perfectamente posible y sencillo realizar secuencias de instrucciones inválidas, que normalmente no aparecen al usar un lenguaje de alto nivel.

• Falta de portabilidad

Para cada máquina existe un lenguaje ensamblador; por ello, este no es una selección apropiada de lenguaje en el caso de que se desee codificar en una máquina y luego llevar los programas a otros sistemas operativos o modelos de computadoras. 2.3.6.2.1.3 Relación Entre el Código Binario y el Lenguaje Ensamblador En el código binario se utilizan ceros y unos, mientras que el lenguaje ensamblador es una colección de símbolos mnemónicos que representan: operaciones, nombres simbólicos, operadores y símbolos especiales. La relación entre estos dos lenguajes radica en que el binario es el lenguaje que la máquina entiende y el ensamblador se acerca más al lenguaje de esta. 2.3.6.2.2 Lenguaje de Alto Nivel A finales de los años 1950 surgió un nuevo tipo de lenguaje que evitaba los inconvenientes, a costa de ceder un poco en las ventajas. Estos lenguajes se llaman "de tercera generación" o "de alto nivel", en contraposición a los de "bajo nivel" o " nivel próximo a la máquina".

Los lenguajes de Alto Nivel se caracterizan por expresar los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de a la capacidad ejecutora de las máquinas. En los primeros lenguajes de alto nivel la limitación era que se orientaban a un área específica y sus instrucciones requerían de una sintaxis predefinida, clasificándose como lenguajes procedimentales. Otra limitación de los lenguajes de alto nivel es que se requiere de ciertos conocimientos de programación para realizar las secuencias de instrucciones lógicas.

Page 61: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

39

Los lenguajes de muy alto nivel se crearon para que el usuario común pudiese solucionar tal problema de procesamiento de datos de una manera más fácil y rápida.

La programación en un lenguaje de alto nivel permite disminuir el tiempo de desarrollo de un producto. No obstante, si no se programa con cuidado, el código resultante puede ser mucho más ineficiente que el programado en ensamblador. Las versiones más potentes suelen ser muy caras, aunque para los microcontroladores más populares pueden encontrarse versiones demo limitadas e incluso compiladores gratuitos.

Algunos ejemplos de lenguajes de alto nivel son:

• Algol • Basic • C • Cobol • Fortran • Modula 2 • Pascal • Prolog

El lenguaje en el que se basará el desarrollo de este proyecto es el “lenguaje C”. 2.3.6.2.2.1 Lenguaje de Programación C “C” es un lenguaje de programación relativamente minimalista. Uno de los objetivos de diseño de este lenguaje fue que sólo fueran necesarias unas pocas instrucciones en lenguaje máquina para traducir cada elemento del lenguaje, sin que hiciera falta un soporte intenso en tiempo de ejecución. Es muy posible escribir C a bajo nivel de abstracción; de hecho, C se usó como intermediario entre diferentes lenguajes.

En parte a causa de ser de relativamente bajo nivel y de tener un conjunto de características modesto, se pueden desarrollar compiladores de C fácilmente. En consecuencia, el lenguaje C está disponible en un amplio abanico de plataformas. Además, a pesar de su naturaleza de bajo nivel, el lenguaje se desarrolló para incentivar la programación independiente de la máquina. Un programa escrito cumpliendo los estándares e intentando que sea portable puede compilarse en muchos computadores.

Page 62: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

40

“C” se desarrolló originalmente por programadores para programadores. Sin embargo, ha alcanzado una popularidad enorme, y se ha usado en contextos muy alejados de la programación de sistemas, para la que se diseñó originalmente.

“C” tiene las siguientes características de importancia:

• Un núcleo del lenguaje simple, con funcionalidades añadidas importantes, como funciones matemáticas y de manejo de ficheros, proporcionadas por “bibliotecas”44.

• Es un lenguaje muy flexible que permite programar con múltiples estilos.

Uno de los más empleados es el estructurado no llevado al extremo (permitiendo ciertas licencias rupturistas).

• Un sistema de tipos que impide operaciones sin sentido.

• Usa un lenguaje de preprocesado, el preprocesador de C, para tareas como

definir “macros”45 e incluir múltiples ficheros de “código fuente”46.

• Acceso a memoria de bajo nivel mediante el uso de “punteros”47. • Uso de un conjunto reducido de palabras clave.

• Los parámetros se pasan por valor. El paso por referencia se puede simular

pasando explícitamente el valor de los punteros.

• Punteros a funciones y variables estáticas, que permiten una forma rudimentaria de “encapsulado”48 y “polimorfismo”49.

• Tipos de datos agregados (Struct) que permiten que datos relacionados se

combinen y se manipulen como un todo.

44 Para la definición de “biblioteca” referirse a la pagina Web, http://es.wikipedia.org/wiki/Biblioteca_%28programaci%C3%B3n%29 45 Para definición de Macro referirse a la pagina Web, http://es.wikipedia.org/wiki/Macro 46 Para definición y explicación de Código Fuente referirse a la pagina Web, http://es.wikipedia.org/wiki/C%C3%B3digo_fuente 47 Para la definición de puntero referirse a la parte “Puntero (programación)” de la pagina Web, http://es.wikipedia.org/wiki/Puntero 48 Para la definición de encapsulado referirse a la pagina Web, http://es.wikipedia.org/wiki/Encapsulado 49 Para la definición de polimorfismo referirse a la pagina Web, http://es.wikipedia.org/wiki/Polimorfismo_%28programaci%C3%B3n_orientada_a_objetos%29

Page 63: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

41

Algunas características de las que C carece que se encuentran en otros lenguajes:

• Recolección de basura. • Soporte para “programación orientada a objetos”50, aunque la

implementación original de C++ fue un preprocesador que traducía código fuente de C++ a C.

• Encapsulación. • Funciones anidadas.

• Polimorfismo en tiempo de código en forma de sobrecarga, sobrecarga de

operadores y sólo dispone de un soporte rudimentario para la programación genérica.

Aunque la lista de las características útiles de las que carece C es larga, este factor ha sido importante para su aceptación, porque escribir rápidamente nuevos compiladores para nuevas plataformas, mantiene lo que realmente hace el programa bajo el control directo del programador, y permite implementar la solución más natural para cada plataforma. Ésta es la causa de que a menudo C sea más eficiente que otros lenguajes. Típicamente, sólo la programación cuidadosa en lenguaje ensamblador produce un código más rápido, pues da control total sobre la máquina, aunque los avances en los compiladores de C y la complejidad creciente de los microprocesadores modernos han reducido gradualmente esta diferencia. 2.3.6.3 Compiladores Un traductor es cualquier programa que toma como entrada un texto escrito en un lenguaje, llamado “fuente” y da como salida otro texto en un lenguaje, denominado “objeto”.

Figura 10. Esquema de un traductor

(http://www.monografias.com/trabajos11/compil/compil.shtml)

50 Referirse a pagina Web, http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos

Page 64: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

42

En el caso de que el lenguaje fuente sea un lenguaje de programación de alto nivel y el objeto sea un lenguaje de bajo nivel (ensamblador o código de máquina), a dicho traductor se le denomina “compilador”. Un ensamblador es un compilador cuyo lenguaje fuente es el lenguaje ensamblador. Un intérprete no genera un programa equivalente, sino que toma una sentencia del programa fuente en un lenguaje de alto nivel y la traduce al código equivalente y al mismo tiempo lo ejecuta. 2.3.6.3.1 Funciones de un Compilador Como se ha mencionado anteriormente un compilador es un programa que lee un programa escrito de un lenguaje (el lenguaje fuente), y lo traduce a un programa equivalente en otro lenguaje (el lenguaje objeto). Como parte importante de este proceso de traducción, el compilador informa a su usuario de la presencia de errores en el programa fuente. A primera vista, la diversidad de compiladores puede parecer abrumadora, hay miles de lenguajes fuente, desde los lenguajes de programación tradicionales, como FORTRAN o PASCAL, hasta los lenguajes especializados que han surgido virtualmente en todas las áreas de aplicación de la informática. Los lenguajes objeto son igualmente variados; un lenguaje objeto puede ser otro lenguaje de programación o el lenguaje de máquina de cualquier computador entre un microprocesador y un supercomputador. A pesar de existir una aparente complejidad por la clasificación de los compiladores, las tareas básicas que debe realizar cualquier compilador son esencialmente las mismas. Al comprender tales tareas, se pueden construir compiladores para una gran diversidad de lenguajes fuente y máquinas objeto utilizando las mismas técnicas básicas. 2.3.6.3.2 Estructura de un Compilador Para el estudio de un compilador, es necesario dividir su trabajo en fases. Cada fase representa una transformación al código fuente para obtener el código objeto. Las tres primeras fases realizan la tarea de análisis, y las demás la síntesis. En cada una de las fases se utiliza un administrador de la tabla de símbolos y un manejador de errores. Este es el proceso estándar que un compilador comercial sigue para cualquier programa:

Page 65: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

43

2.3.6.3.2.1 Análisis Léxico En la fase de análisis léxico se leen los caracteres del programa fuente y se agrupan en cadenas que representan los componentes léxicos. Cada componente léxico es una secuencia lógicamente coherente de caracteres relativa a un identificador, una palabra reservada, un operador o un carácter de puntuación. A la secuencia de caracteres que representa un componente léxico se le llama lexema (o con su nombre en inglés Token). En el caso de los identificadores creados por el programador no solo se genera un componente léxico, sino que se genera otro lexema en la tabla de símbolos. 2.3.6.3.2.2 Análisis Sintáctico En esta fase, los componentes léxicos se agrupan en frases gramaticales que el compilador utiliza para sintetizar la salida. 2.3.6.3.2.3 Análisis Semántico En la fase de análisis semántico se intenta detectar instrucciones que tengan la estructura sintáctica correcta, pero que no tengan significado para la operación implicada.

Figura 11. Diagrama a bloques de la operación de un buen compilador.

(http://es.wikipedia.org/wiki/Compilador)

Page 66: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

44

2.3.6.3.2.4 Generación de Código Intermedio Algunos compiladores generan una representación intermedia explícita del programa fuente, una vez que se han realizado las fases de análisis. Se puede considerar esta operación intermedia como un subprograma para una máquina abstracta. Esta representación intermedia debe tener dos propiedades importantes: debe ser fácil de producir y fácil de traducir al programa objeto. 2.3.6.3.2.5 Optimización de Código En esta fase se trata de mejorar el código intermedio, de modo que resulte un código de máquina más rápido de ejecutar. 2.3.6.3.2.6 Generación de Código Esta constituye la fase final de un compilador. En ella se genera el código objeto que por lo general consiste en un código de lenguaje máquina (código relocalizable) o código en lenguaje ensamblador. 2.3.6.3.2.7 Administrador de la Tabla de Símbolos Una tabla de símbolos es una estructura de datos que contiene un registro por cada identificador. El registro incluye los campos para los atributos del identificador. El administrador de la tabla de símbolos se encarga de manejar los accesos a la tabla de símbolos, en cada una de las etapas de compilación de un programa. 2.3.6.3.2.8 Manejador de Errores En cada fase del proceso de compilación es posibles encontrar errores. Es conveniente que el tratamiento de los errores se haga de manera centralizada a través de un manejador de errores. De esta forma podrán controlarse más eficientemente los errores encontrados en cada una de las fases de la compilación de un programa.

Page 67: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

45

2.3.7 Conversión Digital/Análogo y Análogo/Digital51 El mundo real es básicamente analógico. La medida directa de una magnitud física (sonido, temperatura, presión, etc.) es convertida por el correspondiente transductor (sensor) a un valor de tensión analógica capaz de ser procesada por un sistema electrónico. Asimismo, el sistema electrónico proporcionará a los correspondientes efectores (altavoces, motores, calefactores, etc.) una tensión analógica que determine su actuación. Los sistemas digitales emplean los valores numéricos codificados en binario, en palabras digitales compuestas por ceros y unos; ello proporciona a los sistemas digitales alta fiabilidad y precisión, conseguidas por la perfecta distinción física entre el 0 y el 1, y una gran potencia de cálculo, derivada de la utilización de un sistema de numeración y de la capacidad de integración de funciones booleanas de altísima complejidad. En la frontera (interfaz) entre las señales analógicas procedentes del medio físico o destinadas a interferir con él y las señales digitales que procesa el sistema electrónico se requieren conversores que pasen los valores numéricos del campo analógico al digital y viceversa: conversores A/D y D/A. Mediante una suma ponderada de los dígitos de valor 1 se consigue, en forma muy simple, un conversor digital-analógico rápido; la ponderación puede hacerse con una serie de resistencias en progresión geométrica (cada una mitad de la anterior), lo cual obliga a utilizar un amplio rango de resistencias, o bien mediante una red R-2R que efectúa sucesivas divisiones por 2. Puede convertirse una tensión en número binario utilizando un conversor opuesto D/A, a través de la comparación entre la tensión de entrada y la proporcionada por dicho conversor D/A aplicado a un generador de números binarios; se trata de aproximar el número-resultado a aquel cuya correspondiente tensión analógica es igual a la de entrada. La aproximación puede hacerse de unidad en unidad, mediante un simple contador, o dígito a dígito mediante un circuito secuencial específico. En los sistemas digitales la precisión viene dada por la utilización de dos símbolos 1/0 y por la separación entre las tensiones que los representan. En cambio, en el tratamiento de tensiones analógicas y, por tanto, en los conversores D/A y A/D, debe existir una preocupación por la precisión y las diversas causas de error que le afectan: desplazamiento del origen, linealidad, resolución.

51 Ampliación sobre tipos de conversores correspondientes a la arquitectura interna de un microcontrolador, viene de los capítulos 2.3.5.6.5 y 2.3.5.6.6 de este proyecto.

Page 68: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

46

2.3.7.1 Conversores D/A52 Conceptualmente la conversión analógica-digital consiste en realizar la suma ponderada de los diversos dígitos que configuran el número binario; el valor relativo de cada uno de ellos viene dado por la correspondiente potencia de 2:

Esta suma puede realizarse mediante un sencillo circuito sumador con resistencias ponderadas (según la relación R, R/2, R/4, R/8,...) como el de la figura 12:

Figura 12. Circuito sumador

Supuesto que las tensiones que corresponden a los valores booleanos sean 0 y +V:

El último paréntesis de la expresión anterior expresa el valor del número binario... D3, D2, D1, D0 y el factor inicial V.R'/R determina el valor de tensión asignado a cada unidad; las resistencias R' y R permiten ajustar dicho valor a la tensión unitaria que se desee. Resulta un circuito sumamente sencillo para obtener una tensión analógica a partir de las tensiones de los dígitos binarios del número que se desea convertir. Habida

52 TOMAS POLLAN, Santamaría, Electrónica Digital. Universidad de Zaragoza. Pág. 246.

Page 69: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

47

cuenta de que la etapa sumadora es inversora, se obtendrá una tensión negativa, que puede transformarse fácilmente en positiva mediante una segunda etapa amplificadora inversora de ganancia unidad. Las tensiones booleanas que presentan los diversos dígitos de un número binario (salidas de los correspondientes terminales del circuito digital, generalmente salidas de circuitos integrados) no ofrecen adecuada precisión: ambas tensiones, VoL ≈ 0 V, y VoH ≈ +V , no son valores muy precisos. Por ello, para aumentar la precisión del conversor, no se utilizan directamente las tensiones de los dígitos a convertir sino una tensión única de referencia de alta precisión, la cual se conecta (caso de dígito de valor 1) o no (valor 0) a las correspondientes resistencias sumadoras mediante interruptores; además, para disminuir los efectos capacitivos propios de los conmutadores y aumentar la velocidad de conmutación, ésta se efectúa entre dos posiciones de igual tensión. Figura 13. Circuito sumador con una única tensión de referencia e interruptores en las resistencias

Cada conmutador se conecta hacia la entrada del amplificador cuando el valor del correspondiente dígito es 1; en otro caso, se conecta directamente hacia la línea de 0 V.

La precisión de este conversor depende de la precisión de las resistencias y de la tensión de referencia así como de las características del amplificador operacional, especialmente en lo relativo a tensión y corrientes de offset53.

53 Referirse al tema Tension offset y Corrientes de la pagina Web, http://es.wikipedia.org/wiki/Amplificador_operacional#Corrientes

Page 70: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

48

Ahora bien, esta red sumadora requiere resistencias de valores muy diferentes (por ejemplo para 12 bits ha de llegarse desde R hasta R/4096), siendo extremadamente difícil integrar tal diversidad de resistencias con la precisión necesaria. Por ello, resulta preferible utilizar una red de resistencias R-2R en escalera o red divisora de tensión, que posee la propiedad de que la resistencia de carga vista desde cualquier nudo de la red hacia adelante es de idéntico valor: 2R.

Figura 14. Red de resistencias R-2R

Esta red de resistencias tiene la propiedad de que en cada nudo se encuentran en paralelo sendas de resistencias de igual valor 2R, una de las cuales es la equivalente del resto del circuito; de forma que en cada nudo la intensidad de divide en dos partes iguales y, de esta forma, cada nudo realiza una división de la tensión del nudo anterior por 2. Utilizando este tipo de red como sumadora, mediante conmutadores entre dos posiciones (ambas con tensión de referencia 0 V) según el esquema siguiente, puede obtenerse un conversor D/A que solamente utiliza dos valores de resistencias R y 2R. Figura 15. Esquema de un conversor D/A con únicamente 2 valores de resistencias (R y 2R)

Page 71: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

49

La segunda etapa amplificadora sirve para que la tensión de salida sea positiva e introduce la amplificación con el factor R'/R. Habida cuenta la sucesiva división de tensiones e intensidades que se produce en cada nudo:

En tecnología MOS los conmutadores se realizan mediante transistores NMOS alternativos, entre cuyos terminales de puerta se conecta un inversor; se consiguen tiempos de respuesta globales (desde que se presenta el valor digital, hasta que aparece el correspondiente valor analógico) inferiores al microsegundo. Además, en aplicaciones relativas a la generación de ondas, en las cuales la salida va siguiendo sucesivamente valores próximos de la onda a generar, el tiempo de transición entre un valor y otro resulta mucho menor, pudiéndose alcanzar frecuencias superiores a 10 MHz. En el caso bipolar se configuran generadores de intensidad ponderados, mediante redes R-2R incluyendo transistores en las mismas; la configuración en amplificador diferencial permite conmutar tales intensidades entre las dos posiciones con altas velocidades de respuesta, consiguiéndose tiempos de conmutación del orden de 10 ns. La utilización de una referencia de tensión negativa evita la necesidad de utilizar el segundo amplificador inversor. En todos los conversores D/A anteriormente considerados la tensión de salida es proporcional al número binario aplicado a sus entradas: Vo = Vu.N, siendo Vu el paso en tensión correspondiente a una unidad; a veces (por ejemplo en la generación digital de ondas senoidales o de otras formas de onda) interesa otro tipo de funciones Vo = f(N) distintas de la simple proporcionalidad. Para ello puede efectuarse una transformación digital previa del número N a un número N' tal que f(N) = Vu.N', de manera que un conversor D/A proporcional aplicado sobre N' servirá para generar la tensión analógica deseada; la conversión intermedia (de N a N') puede ser realizada por un conversor de código o codificador ROM. Cuando no se requiere gran precisión en la tensión de salida, puede obtenerse directamente la función Vo = f(N) mediante un multiplexor analógico (formado por puertas de transmisión) controlado por el número N, según el esquema siguiente.

Page 72: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

50

Figura 16. Multiplexor Análogo formado por puertas de transmisión

A un valor concreto N le corresponderá una tensión Vo = R'.Vref./ RN, que puede ser ajustada al valor deseado mediante la resistencia RN; caso de que la función f(N) adopte también valores negativos, bastará conectar las resistencias correspondientes a una tensión de referencia positiva +Vref.. 2.3.7.2 Conversores A/D54 La utilización de los conversores D/A permite realizar la conversión inversa, analógica-digital A/D, a través de un sencillo esquema funcional basado en la comparación entre la señal a digitalizar y la proporcionada por el conversor D/A; un circuito secuencial de aproximación deberá generar los números binarios cuya correspondiente tensión analógica es comparada con la tensión a convertir, de forma que la conversión finaliza en el momento en que ambas tensiones se igualan. El circuito de aproximación más sencillo lo constituye un contador bidireccional (up/down), que cuente “hacia arriba” o “hacia abajo” según que el resultado de la comparación entre la tensión de entrada y la tensión generada por el conversor D/A sea favorable a la primera o a la segunda de dichas tensiones.

54 TOMAS POLLAN, Op.cit., Pág. 249

Page 73: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

51

Figura 17. Contador bidireccional

Cuando los valores de tensión (la exterior y la resultante del conversor D/A) se igualan el contador se sitúa en una secuencia alternativa (contar-descontar), oscilando entre dos números contiguos; para evitarlo se añade un comparador de ventana, cuya tensión central se sitúa en la tensión a medir y la anchura de la ventana se hace algo mayor que el paso en tensión correspondiente a una unidad. Para realizar una medida de tensión, estos conversores han de efectuar una cuenta de pulsos desde la situación en que se encuentre el contador hasta la correspondiente a la medida, empleando para ello los ciclos de reloj necesarios: en el peor de los casos tiene que llegar a realizar 2n pasos (4096 pulsos de reloj para una conversión de 12 bits). Por ello este conversor resulta lento para efectuar conversiones aisladas, como, por ejemplo, para efectuar las medidas sucesivas de varias señales multiplexadas. Sin embargo, la cuenta hacia arriba y hacia abajo resulta apropiado para seguir la evolución de una señal en un proceso de medida continuada; para tales aplicaciones este esquema de conversión A/D resulta muy atractivo por su sencillez. Conversores A/D más rápidos se consiguen utilizando, en lugar del contador, un circuito secuencial que actúe por aproximaciones sucesivas, bit a bit:

Page 74: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

52

• Inicialmente se pone a 1 el dígito más significativo y el resto de ellos a 0

• Se compara la tensión analógica correspondiente (dada por el conversor D/A) con la tensión de entrada a medir: si es mayor esta última se consolida el valor 1, en otro caso se pasa a 0 dicho dígito.

• Se procede de igual forma con el dígito siguiente, de modo que cada bit se

sitúa a valor 1 y se respeta dicho valor si la tensión correspondiente es menor que la tensión a medir, pasándolo a 0 en caso contrario.

Designando con M el valor booleano que expresa el resultado de la comparación entre la tensión de entrada y la tensión del conversor D/A, M = "Vi > Vconversor", el diagrama de estados del circuito secuencial es el mostrado en la figura 18. De esta forma, para realizar la conversión se requieren solamente n pulsos de reloj, tantos como dígitos ha de tener el número digital resultante. El proceso comienza con una señal de inicio que pone a 1 el bit más significativo y borra todos los demás, a partir de la cual cada pulso de reloj determina una de las transiciones del grafo de estados anterior.

Figura 18. Diagrama de los estados de un Circuito Secuencial que actúa por aproximaciones

sucesivas

Page 75: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

53

El circuito secuencial que efectúa las aproximaciones sucesivas, bit a bit a partir del más significativo, estará compuesto por n biestables cuyas condiciones booleanas de marcado y de borrado son las siguientes: El pulso de comienzo (start) marca el biestable correspondiente al dígito más significativo (primer biestable) y borra todos los demás biestables; Cualquier biestable, salvo el primero, debe marcarse al llegar un pulso de reloj, cuando el anterior biestable se encuentra a 1 y todos los siguientes, incluido el mismo, a 0:

01211 ....... qqqqqJ iiii −−+=

Cualquier biestable, incluido el primero, debe borrarse con un pulso de reloj cuando el mismo se encuentre a 1 y todos los siguientes están a 0 y, además, el resultado de la comparación M es 0:

MqqqqqJ iiii ........ 0121 −−=

El diagrama de bloques del conversor por aproximaciones sucesivas será el siguiente:

Figura 19. Diagrama de bloques de un Conversor por Aproximaciones sucesivas

Page 76: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

54

Éste es el esquema conceptual típico de los conversores A/D integrados de uso general, siendo los más frecuentes los de 8 ó 12 bits, con intervalos de conversión de [0,5], [0,10], [-5, +5] ó [-10, +10] voltios, con precisión equivalente al paso en tensión correspondiente al último bit y con tiempos de respuesta que se sitúan en el orden de los microsegundos (1-100 µs.). Los conversores A/D requieren que la tensión analógica a convertir permanezca constante durante el tiempo de conversión; para ello, si es necesario, se utilizan circuitos específicos de muestreo y mantenimiento (Sample and Hold) que toman un valor puntual de la señal presente en su entrada (muestreo) y lo mantienen en su salida (por efecto capacitivo) durante un cierto intervalo de tiempo. Velocidades de conversión muy altas requieren convertidores de tipo paralelo, muy rápidos (flash), que comparan internamente la tensión a medir con los 2m-1 niveles de tensión intermedia posibles (siendo m el número de bits del resultado). Dichos 2m-1 niveles se generan por división de tensión sobre 2m resistencias y, a partir de ellos, un conjunto de 2m-1 comparadores realiza la comparación de la tensión exterior con cada uno de los niveles. El vector de salida de dichos comparadores será un número digital formado por dos conjuntos sucesivos de ceros y unos; el número de unos presentes determina el nivel al que equivale la tensión exterior; un “codificador de prioridad” efectúa la conversión de dicho vector en el número binario que expresa el número de “unos” contenidos en él. Para evitar errores debidos a transiciones durante la comparación suelen incluirse 2m-1 biestables tipo D que reciben las salidas de los comparadores después de haberse estabilizado la comparación. El circuito de conversión A/D mostrado en la figura 20 es sumamente rápido, existiendo series comerciales para 4 y 8 bits con tiempos de conversión inferiores a los 100 ns. El inconveniente es el gran número de bloques circuitales repetidos necesarios para realizar la conversión en paralelo (para 8 bits se necesitan 255 comparadores), lo cual limita el número de dígitos a obtener y eleva el costo de estos integrados. Otros conversores de 8 y 12 bits utilizan un proceso de división en intervalos en dos pasos sucesivos (Conversores Pipeline) mediante dos conjuntos de redes de resistencias y comparadores, el primero de los cuales realiza una división “gruesa” (bits más significativos) y, restando de la tensión de entrada la tensión analógica correspondiente a tales dígitos más significativos, obtiene la diferencia de tensión sobre la cual realiza la comparación “fina” la segunda red. De esta forma para 8

Page 77: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

55

bits bastan dos redes de 15 comparadores y para 12 bits se requieren dos redes de 63 comparadores. Asimismo existen conversores A/D integrados que utilizan a la vez la conversión en paralelo y la conversión mediante aproximaciones sucesivas (Semiflash); la conversión en paralelo se utiliza para una parte de los dígitos (más significativos) y se resta la tensión correspondiente a ellos, para efectuar luego, por aproximaciones sucesivas, la conversión “fina” que produce la otra parte de ellos (los de menor valor relativo).

Figura 20. Circuito Flash de conversión A/D

Page 78: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

56

2.3.7.3 Resolución, Linealidad y Errores en los Conversores55 Los conversores D/A y A/D de tipo lineal, son aquellos donde la correspondencia entre tensión analógica y valor numérico binario (en sistema de numeración de base 2) es de proporcionalidad directa. El «recorrido» del conversor irá de 0 a N en cuanto a valor numérico digital (N = 2m – 1,siendo m el número de dígitos del conversor) y de Vmín a Vmáx en lo que se refiere a tensión analógica; de forma que a una unidad digital (bit menos significativo MSB) le corresponderá una tensión analógica Vu (tensión unitaria), tal que:

N

VVVu

minmax−= , que es el paso o salto en tensión entre un número digital y el

siguiente (entre dos valores digitales consecutivos). Así, pues, en toda conversión (entre digital y analógica) se aplica un proceso de cuantificación de la tensión analógica, teniendo en cuenta que los valores digitales son discretos; la tensión analógica no interviene en su forma propia de “rango continuo” de valores (entre dos extremos Vmáx y Vmín) sino que actúa a través de “escalones”:

• La conversión D/A presenta un “paso” o “escalón” vertical, dado por la diferencia entre las dos tensiones que corresponden a dos números binarios sucesivos; los valores de tensión situados “dentro” de dicho “escalón” (entre las dos tensiones citadas) nunca se producirán como tensiones de salida;

• En la conversión A/D, a cada número binario de salida le corresponde todo

un “intervalo” o “escalón” horizontal de tensiones analógicas; las tensiones situadas dentro de un mismo “escalón” son indistinguibles en cuanto a que proporcionan la misma salida digital.

Se produce, de por sí, un error de cuantificación o discriminación, pues valores de tensión próximos pero diferentes corresponden al mismo valor digital, no pueden ser diferenciados por el conversor: si éste es analógico/digital no distingue entre ellos y si es digital/analógico no los genera como tensiones de salida. De esta forma las funciones de transferencia (salida – entrada: Vo-n en el conversor D/A y n-Vi en el A/D) son de tipo “escalonado” (como se muestra en la figura 21); si la conversión es lineal la anchura de los “escalones” es constante: todos ellos son de la misma “altura” Vu (conversor D/A) o de la misma “longitud” Vu (conversor A/D).

55 TOMAS POLLAN, Op.cit., Pág. 253

Page 79: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

57

La función de transferencia de los conversores lineales viene caracterizada por una línea recta (que se denomina “recta de conversión”), que pasa por el origen (0, Vmín):

• En el caso D/A, esta recta contiene los “puntos de conversión”, es decir, de correspondencia entre los números binarios de entrada – eje X – y los valores de tensión analógica de salida – eje Y –

• En el caso A/D, la recta de conversión pasa por los puntos medios de los

“escalones”, o sea, de los intervalos de correspondencia entre las tensiones analógicas de entrada – eje X – y los números binarios de salida – eje Y –.

Figura 21. Funciones de transferencia tipo escalonado para conversores D/A y A/D

2.3.7.3.1 Resolución: Rango y Sensibilidad56 La resolución de un conversor vendrá dada, desde el lado digital, por el número de dígitos (bits) que admite para el número binario y, desde el lado analógico, por la anchura del “escalón” (su “altura” en el conversor D/A y su “longitud’ en A/D).

• Resolución Digital: m dígitos. • Resolución Analógica o Sensibilidad: Vu, anchura del escalón.

56 TOMAS POLLAN, Op.cit., Pág. 254

Page 80: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

58

Por ejemplo, un conversor cuya tensión analógica varíe entre –10 y +10 V y su número binario sea de 12 dígitos (resolución digital, 12 bits) tendrá una anchura de escalón Vu = 20 / 212 = 20 / 4096 ≈ 5 mV; tal será su resolución analógica. El número de dígitos determina el rango numérico dentro del cual se efectúa la conversión: 0 – N, siendo N = 2m - 1. La anchura de escalón o “paso” entre tensiones analógicas, Vu, expresa la sensibilidad con que actúa el conversor: la mínima diferencia entre tensiones que es percibida por el conversor como correspondiente a dos números binarios diferentes (dos números consecutivos). El intervalo de tensión va de Vmín a Vmáx, siendo Vmáx = Vmín + N.Vu. 2.3.7.3.2 Proporcionalidad Lineal y Errores57 En los sistemas digitales la precisión queda garantizada por la codificación en dos símbolos diferenciados 0/1 y por la separación de los valores de tensión que los representan: salvo problemas de ruido electromagnético o de mal funcionamiento, un circuito digital proporciona con absoluta precisión los vectores de salida que corresponden a su diseño lógico. No ocurre así en los circuitos analógicos, como son los conversores D/A y A/D, en los cuales hay múltiples causas de imprecisión que determinan desviaciones entre los resultados que teóricamente deberían proporcionar y los que realmente suministran. Los posibles errores de estos conversores pueden detectarse y clasificarse en relación con la “recta de conversión”:

• cuando esta recta no pasa por el origen: error de cero o de offset; • cuando la pendiente de la recta no es la apropiada: error de ganancia; • cuando dicha línea no es una recta: error de linealidad.

El error de cero (offset) existe cuando no corresponde el valor numérico 0 (00...0) con la tensión analógica inicial Vmín, es decir, cuando la «recta de conversión» está desplazada y no corta al eje de tensiones analógicas en dicho valor Vmín y, por tanto, el valor numérico máximo N (11..1) tampoco corresponde con la tensión Vmáx.

57 TOMAS POLLAN, Op.cit., Pág. 255

Page 81: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

59

Figura 22. Error de cero o de “Offset” en conversores A/D y D/A

En las figuras 22, 23 y 24 se representa “en gris” la escala de conversión sin error, como referencia para apreciar la desviación provocada por el error; asimismo se representa en línea de raya y dos puntos la “recta de conversión” teórica. Si solamente hay error de cero (offset), el intervalo de tensión [Vmín , Vmáx] se desplaza: [Vmín + Voffset, Vmáx + Voffset], pudiendo Voffset ser positiva o negativa. El error de ganancia se presenta cuando la pendiente de la “recta de conversión” es mayor o menor del valor que le corresponde según la relación de conversión. Tal error se produce cuando la anchura de los escalones no coincide con la tensión unitaria Vu, sino que es mayor o menor a la que corresponde al cociente (Vmáx – Vmín)/N.

Figura 23. Error de Ganancia en conversores A/D y D/A

Page 82: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

60

Si existe error de ganancia el rango de la tensión analógica no coincidirá con el previsto; V'máx = Vmín + N.V'u será mayor o menor que Vmáx, según que V'u > Vu o V'u < Vu. El intervalo de conversión [Vmín , V'máx] será más amplio o más pequeño que el previsto [Vmín , Vmáx]. Cuando la anchura de los escalones no es constante la “recta de conversión” deja de ser un línea recta y decimos que hay error de linealidad. Dicho error puede ser puntual, referido a un escalón específico o general, afectando a un conjunto de escalones seguidos.

Figura 24. Error de linealidad en conversores A/D y D/A

El error de linealidad puede expresarse (para cada valor binario) en forma integral por la desviación respecto de la recta de conversión ideal y en forma diferencial por la diferencia entre la anchura real de cada escalón y la anchura (Vu) que deberían tener todos ellos. Sea un valor numérico digital a: -Sea V'a el valor de tensión analógica que corresponde a dicho número a (en el caso de un conversor D/A el valor V'a es, obviamente, la tensión de salida para entrada a, en el caso A/D V'a será el punto medio del intervalo de tensiones que generan a como valor digital de salida); -Habida cuenta que la pendiente de la “recta de conversión” es el cociente entre el intervalo de tensiones V(N) - V(0) y el intervalo de números N – 0; el valor Va que corresponde a “a” según la linealidad es Va = V(0) + a.(V(N) - V(0))/N;

Page 83: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

61

-Sea ∆V'a el valor de la anchura del escalón correspondiente al número binario a; la anchura ∆V que deben tener todos los escalones, en un conversor lineal, coincide con la pendiente de la “recta de conversión”: ∆V = (V(N) - V(0))/N

• Error de linealidad (integral) en el punto a = V'a – Va: diferencia entre la tensión analógica real y la teórica (si fuera lineal).

• Error de linealidad (diferencial) en el punto a = ∆V'a – ∆V: diferencia entre

la anchura de escalón real y la teórica (para ser lineal). La forma integral expresa la desviación global respecto a la linealidad en el punto considerado, mientras que la forma diferencial expresa el error “puntual”, es decir, en que medida la diferencia con el valor anterior es errónea (en que medida contribuye el punto “a” al error de linealidad). Obviamente, los tres tipos de error (cero, ganancia y linealidad) no son excluyentes sino que pueden darse a la vez: consideraremos como “error absoluto” o desviación máxima la mayor de las diferencias entre la “recta de conversión” teórica y la “línea real de conversión”: En el caso del conversor digital-analógico el “error absoluto” cada diferencia se calcula entre la tensión de salida real y la tensión de salida teórica para un valor numérico de entrada, V'a – (Vmín + a.Vu), y de las N+1 diferencias (para los valores digitales de 0 a N) se toma la mayor de ellas. Respecto al conversor analógico-digital para cada valor digital se toman los valores de tensión analógica máximo y mínimo que proporcionan dicho valor de salida y se calcula su diferencia con el valor de tensión teórico según la “recta de conversión” (punto medio del escalón de tensión que corresponde a ese valor digital); del conjunto de estas 2(N+1) diferencias (para cada valor numérico se calculan en ambos extremos de tensión) se toma la mayor de ellas. De esta forma, el error absoluto incluye, también, el error de cuantificación (½Vu): si no hubiera otro tipo de errores, el error absoluto no sería nulo sino igual al error de cuantificación. 2.3.7.4 Limitación Respecto a la Frecuencia de Muestreo (Efecto de Aliasing) La conversión analógico-digital de una señal implica tomar “muestras” puntuales de la misma cada cierto intervalo de tiempo ∆t, lo cual da lugar a una frecuencia de muestreo fm = 1/∆t.

Page 84: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

62

El “Teorema de Shannon”58 aplicado a este “muestreo” de la señal (conversión de la misma en pulsos de anchura mínima y frecuencia fm) reclama que, para asegurar la integridad de la señal, la frecuencia de muestreo ha de ser superior al doble de la frecuencia máxima presente en la señal analógica. Si no se respeta esta limitación, se corre el peligro de que la señal digitalizada sea muy diferente a la señal analógica de entrada al conversor.

Figura 25. Muestreo de una señal digitalizada

Efecto exagerado de Aliasing (muestreo a una frecuencia excesivamente baja): la señal continua

es la entrada analógica y la discontinua el resultado de la digitalización Una señal real suele tener una “ancho de banda” amplio, es decir, en las señales reales suele haber múltiples frecuencias (incluso “ruido”, generalmente de frecuencias más altas que las propias de la señal) y, normalmente, interesan las componentes de la señal por debajo de una frecuencia dada. El teorema de Shannon obliga, de un lado, a muestrear y efectuar la conversión A/D a una frecuencia superior al doble de la máxima frecuencia de interés y, por otro, a filtrar previamente la señal eliminando sus componentes por encima de dicha frecuencia. En toda conversión analógico-digital, es sumamente conveniente incluir un filtro “antialiasing” previo, con frecuencia de corte inferior a la mitad de la frecuencia a la cual se realiza la conversión. 58 Para información sobre el teorema de Shannon referirse a la pagina Web, http://es.wikipedia.org/wiki/Teorema_de_muestreo_de_Nyquist-Shannon

Page 85: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

63

2.3.8 El Puerto USB 2.3.8.1 Descripción General Resulta muy interesante observar los avances tecnológicos que hacen cada vez más fácil el uso de instrumentos avanzados para cualquier persona, es decir, no se necesita ser un experto para poder instalarlos, comprender su funcionamiento y finalmente usarlos; este es el caso del “Universal Serial Bus”, mejor conocido como USB, que consiste en una norma para bus periférico, desarrollado tanto por industrias de computación, como de telecomunicaciones.

El Universal Serial Bus (Bus serie universal o simplemente USB) es un estándar diseñado para conectar dispositivos, a través de un bus serie. Fue originalmente pensado para conectar dispositivos a computadores, eliminando la necesidad de conectar tarjetas PCI o similares, como también conectar y desconectar dispositivos sin tener que reiniciar el computador (Hot-Swap o Conexión en Caliente) mediante el esquema PnP (Plug and Play). Sin embargo, hoy en día también se utiliza en consolas de juegos e incluso en algunos equipos de audio y video. La importancia de los puertos USB radica en su versatilidad de uso, sus posibilidades de expansión y su respetable velocidad.

Por medio de un par de conectores USB se pueden conectar todos los dispositivos que se tengan: teclado, modem, ratones, impresoras, altavoces, monitores, cámaras digitales,… sin necesidad de que el computador disponga de un conector determinado para cada uno de estos elementos, lo cual permite ahorrar espacio y dinero. Los puertos cuentan con tres velocidades de acceso: una baja de 1.5 Mbps para dispositivos lentos, otra alta de 12 Mbps y otra muy alta de 480 Mbps para los dispositivos que necesiten mayor velocidad.

Tabla 2. Velocidades de transferencia USB

(http://pablohoffman.com/cgi-bin/twiki/bin/view/Oscusb/DocCap03Usb)

Page 86: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

64

2.3.8.2 Ventajas del USB

• Permite la conexión en caliente o Hot-Pluggable: el dispositivo puede conectarse sin necesidad de que se tenga que reiniciar el computador.

• La configuración del dispositivo es automática. • Posee conectores estándar para cualquier dispositivo. • Permite diferentes velocidades de transmisión (hasta 480 Mbps). • Se pueden conectar hasta 127 dispositivos simultáneamente. • Los dispositivos se “auto suspenden” si es necesario. • No es necesario tener tarjetas internas que hacen incomoda la instalación. • Permite la alimentación del dispositivo a través del bus USB.

A continuación, se describen las principales partes de un sistema USB. Posteriormente se detalla la manera en que se transmiten los datos entre los dispositivos USB y el Host. 2.3.8.3 Componentes del Sistema USB El sistema de bus serie universal USB consta de tres componentes basados en todo un sistema de interconexión, en el cual los dispositivos USB se conectan y comunican con el Host, esto incluye la topología del bus o el modelo de conexión entre los dispositivos USB y el Host, los modelos de flujo de datos (es decir la forma en la que la información se mueve en el sistema entre los diversos elementos del mismo), la planificación USB que define la secuencia en la cual los dispositivos accederán al bus y finalmente las relaciones entre capas del modelo con sus determinadas funciones. Estos componentes de interconexión del sistema USB son:

• El Host Controlador • Hubs o Concentradores • Periféricos

2.3.8.3.1 El Host Controlador Reside dentro del computador y es responsable de las comunicaciones entre los periféricos USB y la CPU. Es también responsable de la admisión de los periféricos dentro del bus, tanto si se detecta una conexión como una desconexión. Para cada periférico añadido, el controlador determina su tipo y le asigna una dirección lógica para utilizarla siempre en las comunicaciones con el

Page 87: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

65

mismo. Si se producen errores durante la conexión, el controlador lo comunica a la CPU, que a su vez, lo transmite al usuario. Una vez se ha producido la conexión correctamente, el controlador asigna al periférico los recursos del sistema que éste precise para su funcionamiento. El controlador también es responsable del control de flujo de datos entre el periférico y el computador. Solo puede existir un Host dentro de un sistema USB. Este componente es el sector del computador denominado “Controlador USB del Host” y tiene la misión de interconectar el microprocesador a los diferentes dispositivos. Su implementación es una combinación de hardware y software, denominado “Firmware”. El Firmware o “Programación en Firme”, es un bloque de instrucciones de programa para propósitos específicos, grabado en una memoria tipo ROM, que establece la lógica de mas bajo nivel controlando los circuitos electrónicos de un dispositivo de cualquier tipo. Al estar integrado en la parte electrónica del dispositivo es en parte hardware, pero también es software ya que proporciona lógica y se dispone en algún tipo de lenguaje de programación. Funcionalmente, el Firmware es el intermediario (interfaz) entre las órdenes externas que recibe el dispositivo y su electrónica, encargándose de controlar a ésta última para ejecutar correctamente dichas órdenes externas. El Firmware puede proveer uno o dos puntos de conexión iniciales, denominados Hub Raíz, a partir de los cuales, ramificándose, se conectarán los periféricos dependiendo de las necesidades propias de la Red USB. El Host es la parte más inteligente de un sistema USB, ya que controla el flujo de información como también toda actividad realizada por los dispositivos conectados al puerto serial universal. 2.3.8.3.2 Hubs o Concentradores Los concentradores o Hubs USB, son dispositivos que permiten tener varios puertos USB a partir de uno solo, o sea, son distribuidores inteligentes de datos y alimentación. Estos dispositivos pueden conectarse entre ellos ampliando la cantidad de puertos disponibles para diferentes periféricos, lo que permite la conexión de 127 dispositivos a un único puerto USB. De una forma selectiva reparten datos y alimentación hacia sus puertas descendentes y permiten la comunicación hacia su puerta de retorno o ascendente. Los concentradores ofrecen la posibilidad de aislar a los puertos de baja velocidad de las transferencias a alta velocidad.

Page 88: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

66

El “Concentrador Raíz” contenido en la CPU es el primer concentrador de toda la cadena que permite a los datos y a la energía pasar a uno o dos conectores USB del computador, y de allí a los 127 periféricos que, como máximo, puede soportar el sistema.

Por ejemplo, si el computador tiene una única puerta USB y a ella le conectamos un Hub de 4 puertas, la CPU se queda sin más puertas disponibles. Sin embargo, el Hub de 4 puertas permite realizar 4 conexiones descendentes. Conectando otro Hub de 4 puertas a una de las 4 puertas del primero, habremos creado un total de 7 puertas a partir de una puerta del computador. La mayoría de los concentradores se encontrarán incorporados en los “Periféricos”. Por ejemplo, un monitor USB puede contener un concentrador de 7 puertas incluido dentro de su chasis. El monitor utilizará una de ellas para sus datos y control y le quedarán 6 para conectar allí otros periféricos.

Figura 26. Hub USB

(http://es.wikipedia.org/wiki/Hub_USB)

Figura 27. Posible esquema de conexiones del bus USB mediante Hubs

(http://www.monografias.com/trabajos11/usbmem/usbmem.shtml)

Page 89: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

67

Figura 28. Esquema de dispositivos USB conectados a un PC mediante Hubs

(http://www.monografias.com/trabajos11/usbmem/usbmem.shtml)

2.3.8.3.3 Periféricos USB soporta periféricos de baja, media y alta velocidad. Empleando dos velocidades para la transmisión de datos de 1.5, 12 y 480 Mbps se consigue una utilización más eficiente de sus recursos del sistema. Los periféricos de baja velocidad tales como teclados, ratones, joysticks, y otros periféricos para juegos, no requieren 12 Mbps. Empleando para ellos 1,5 Mbps, se puede dedicar más recursos del sistema a periféricos tales como monitores, impresoras, módems, scanners, equipos de audio…, los cuales precisan de velocidades más altas para transmitir mayor volumen de datos, o datos cuya dependencia temporal es más estricta . 2.3.8.4 Conectores USB Las señales USB son transmitidas en un par trenzado (cuyos hilos son denominados D+ y D-) utilizando señalización diferencial “Half-Duplex”59 que minimiza el ruido electromagnético en tramos largos. El diseño eléctrico permite un largo máximo de 5 metros, sin necesidad de un repetidor intermediario.

59 Para información sobre Half-Duplex referirse a la pagina Web, http://es.wikipedia.org/wiki/D%C3%BAplex_%28telecomunicaciones%29

Page 90: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

68

Figura 29. Diseño cable USB

(http://www.monografias.com/trabajos11/usbmem/usbmem.shtml) Existen dos tipos de conectores: “Estándar” y “Mini”. Los Estándar son los que típicamente encontramos en un computador y vienen en dos tipos: A y B. El tipo A es de forma achatada y se encuentra del lado del Host controlador, mientras que el tipo B es cuadrado y se encuentra del lado del dispositivo. Todos los cables son machos, mientras que los enchufes (ya sea en el computador o los dispositivos) son hembra. No existen intercambiadores de género puesto que las conexiones cíclicas no están permitidas en un bus USB. Los conectores Mini siguen la misma política que los Estándar pero son utilizados para dispositivos pequeños como Palm y celulares.

Tabla 3. Pines del cable USB

(http://pablohoffman.com/cgi-bin/twiki/bin/view/Oscusb/DocCap03Usb)

Figura 30. Forma física de los conectores USB a) Cable A-B, b) Cable A-Mini B

Page 91: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

69

A continuación se muestra un diagrama de los conectores. Las medidas están en milímetros y los números de los pines corresponden con la tabla 3.

Figura 31. Medidas de los conectores USB

(http://pablohoffman.com/cgi-bin/twiki/bin/view/Oscusb/DocCap03Usb)

2.3.8.5 Potencia Suministrada por los Cables USB Los cables USB transportan tanto datos como potencia. La potencia entregada a los dispositivos depende de la configuración activa determinada en los “descriptores de la interfaz USB-IDE”. El bus USB suministra 5V de continua regulados por cada uno de sus puertos, entre los pines 1 y 4. Por lo tanto, dispositivos de bajo consumo de potencia (que de otra forma vendrían con una fuente de alimentación externa) pueden obtener de allí la corriente necesaria para el funcionamiento. El límite de corriente suministrada es de 500mA por cada puerto. Además, el estándar exige no más de 5.25V en ningún caso, ni menos de 4.375V en el peor caso. Típicamente el voltaje se mantiene en los 5V.

Page 92: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

70

Algunos Hubs se alimentan directamente del bus USB, en cuyo caso la corriente total de todos los dispositivos conectados a él no puede superar los 500mA. Sin embargo, la “Especificación” permite solo un nivel de Hub alimentado por el bus, de forma que no es posible conectar un Hub sin alimentación a otro Hub. Los Hubs con alimentación propia no tienen esta restricción y generalmente son necesarios para conectar dispositivos de alto consumo como impresoras o discos duros. Cuando un dispositivo es conectado le reporta al Host controlador cuanta potencia va a consumir. De esta manera el Host controlador lleva un registro de los requisitos de cada puerto y cuando un dispositivo se excede generalmente se apaga, cortándole el suministro de corriente, de forma de no afectar al resto de los dispositivos. El estándar exige que los dispositivos se conecten en un modo de bajo consumo (100 mA máximo) y comuniquen al Host controlador cuanta corriente precisan, para luego cambiar a un modo de alto consumo (si el Host se lo permite). Los dispositivos que superen los límites de consumo deben utilizar su propia fuente de poder. Los dispositivos que no cumplan con los requisitos de potencia y consuman más corriente de la negociada con el Host, pueden dejar de funcionar sin previo aviso o, en algunos casos, dejar todo el bus sin operación, dependiendo del tipo de Host Controlador usado. 2.3.8.6 Flujo de Datos del Sistema USB El flujo de datos en un sistema USB necesita de la interacción entre tres capas o niveles lógicos:

• Capa de Función: Relación entre el Software Cliente y la Función • Capa de dispositivos USB (capa lógica): Relación entre el Software del

sistema USB y el dispositivo lógico (establece roles y responsabilidades de los elementos USB).

• Capa de interfaz del bus USB (capa física): Relación entre el controlador

del Host USB y la interfaz del bus USB

Page 93: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

71

2.3.8.6.1 Capas del Sistema de Comunicaciones USB

Figura 32. Capas del sistema de comunicaciones USB

(http://www.monografias.com/trabajos11/usbmem/usbmem.shtml)

Figura 33. Estructura de las Capas del modelo USB

(http://www.monografias.com/trabajos11/usbmem/usbmem.shtml)

Page 94: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

72

2.3.8.6.1.1 Capa de Función Este nivel superior lógico es el agente de transporte de datos que mueve la información entre el Software Cliente y el dispositivo. Un Software Cliente radica en el Host y corresponde a un dispositivo USB (se suministra con el sistema operativo o con el dispositivo USB), el Software de Atención se encuentra en cada una de las funciones o periféricos USB; el Host se comunica con cada uno de los periféricos en alguna de las varias formas posibles de transmisión que soporta USB. El Software Cliente solicita a los dispositivos diversas tareas y recibe respuestas de ellos a través de esta capa. 2.3.8.6.1.2 Capa Lógica La capa lógica intermedia trabaja con el Software de Sistema USB, el cual soporta USB en un determinado Sistema Operativo (se suministra con el sistema operativo independientemente de los dispositivos USB o del Software Cliente). Esta capa facilita las tareas particulares de comunicación a la capa superior, administra la parte del periférico con la que la capa superior desea comunicarse, maneja la información de control y comando del dispositivo, entre otras. Su objetivo es permitir a la capa superior concentrarse en las tareas especificas que buscan satisfacer las necesidades del usuario, adicionalmente gestiona el control interno de los periféricos.

La vista lógica de esta conexión es la mostrada en el esquema de la figura 34, donde podemos ver como el Host proporciona conexión al dispositivo; esta conexión es a través de un simple enlace USB. La mayoría de los demás buses como PCI, ISA, etc proporcionan múltiples conexiones a los dispositivos y los drivers lo manipulan mediante algunas combinaciones de estas conexiones (I/O y direcciones de memoria, interrupciones y canales DMA).

Físicamente el USB tiene sólo un cable simple de bus que es compartido por todos los dispositivos del bus. Sin embargo, desde el punto de vista lógico cada dispositivo tiene su propia conexión punto a punto al Host.

Aunque la mayoría de las actividades de los Hosts o de los dispositivos lógicos usan esta perspectiva lógica, el Host mantiene el conocimiento de la topología física para dar soporte al proceso de desconexión de los Hubs. Cuando se quita un Hub, todos los dispositivos conectados a él son quitados también de la vista lógica de la topología.

Page 95: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

73

Figura 34. Esquema de la arquitectura lógica del sistema USB

(http://usuarios.lycos.es/kurganz/datos_tecnicos/topologia/capalogica.html) 2.3.8.6.1.3 Capa Física La capa de interfaz de bus USB proporciona la conexión física entre el Host y el dispositivo; la capa física del modelo lógico USB comprende los puertos físicos, el cable, los voltajes, las señales, el hardware y su correspondiente funcionamiento. Las capas de función y dispositivos USB tienen cada una de ellas una visión de la comunicación lógica dentro de su nivel, aunque la comunicación entre ellas se hace realmente por la placa de interfaz de bus USB.

La arquitectura física del USB se centra en las piezas de plástico y de metal con las que el usuario debe tratar para construir un entorno USB. Cada entorno físico esta compuesto por cinco tipos de componentes:

• El Host • El Controlador del Host • Los Enlaces • Los Dispositivos • Los Hubs

Todas las comunicaciones físicas son iniciadas por el Host. Esto quiere decir que cada milisegundo, o en cada ventana de tiempo que el bus lo permita, el Host preguntará por nuevos dispositivos en el bus USB, además el Host inicia todas las transacciones físicas y soporta todas las transferencias de datos sobre la capa física.

Page 96: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

74

El acceso al bus se realiza bajo la modalidad de Paso de Testigo (“Token”), donde el computador proporciona el testigo al periférico seleccionado y seguidamente, éste le devuelve el testigo en su respuesta. Los algoritmos y procesos son administrados por el Host USB, reduciendo la complejidad del periférico y el costo final de los dispositivos. 2.3.8.6.2 Sistema Mínimo I/O En la figura 35 se ilustra el sistema mínimo de un dispositivo USB de entrada y salida:

Figura 35. Sistema Mínimo USB

(http://www.usb.org/developers/devclass_docs/HID1_11.pdf) El transceptor es la parte del sistema mínimo que se encarga de de convertir la señal diferencial bidireccional del bus a señal unidireccional y entendible por el dispositivo lógico. Existen dos tipos de transceptor: el transceptor de “Low-speed/Full-speed” y el de “Full-speed/High-speed”. El SIE o Serial interface Engine, es la sección del dispositivo que recibe los bits o bytes del transceptor para validarlos y recuperar la señal del reloj con los bits de sincronía60. El SIE contiene inteligencia para manejar el nivel del bus y el “Bit Stuffing”. La implementación del SIE depende del fabricante, algunos invierten mas en esta sección, otros tantos permiten que lleguen datos erróneos al controlador de protocolos. El controlador de protocolos en la mayoría de los casos es un microcontrolador programado para funciones determinadas.

60 Para información sobre “sincronía” referirse al capitulo (2.3.12) de este proyecto

Page 97: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

75

2.3.8.6.3 Endpoints y Direcciones de Dispositivo En la figura 36 se simplifica la conexión en capas de un dispositivo USB con un computador, donde se puede apreciar un proceso en el cual el sistema operativo otorga un Controlador o Driver al dispositivo. Este último posee una configuración activa que puede tener mas de una interfaz, y estas a su vez pueden tener varios “Endpoints” que se encargan de servir como etapa intermedia entre el exterior y el dispositivo.

Figura 36. Representación grafica de las capas USB

(http://www.usb.org/developers/devclass_docs/HID1_11.pdf)

El concepto Endpoint se usa para describir un punto en el cual los datos entran y salen de cualquier dispositivo, por lo tanto, cada dispositivo USB está compuesto por una colección de Endpoints independientes, y una dirección única asignada por el sistema en tiempo de conexión de forma dinámica. A su vez cada Endpoint dispone de un identificador único dentro del dispositivo al que pertenece; a este identificador se le conoce como número de Endpoint y viene asignado de fábrica. Cada Endpoint tiene una determinada orientación de flujo de datos.

La combinación de dirección, número de Endpoint y orientación, permite referenciar cada Endpoint de forma inequívoca. Cada endpoint es por si solo una

Page 98: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

76

conexión simple que soporta un flujo de datos en una única dirección, bien de entrada (In) o bien de salida (Out). Las siglas EP se usan para denominar estos puntos finales.

Como se puede observar, existen virtualmente distintos tipos de “Carreteras de Información”, correspondientes a datos y control. Dependiendo del dispositivo se determina el número de Endpoints a usar, por ejemplo, un teléfono puede usar un EP para mandar sonido y otro para recibirlo.

Finalmente, Cada Endpoint se caracteriza por:

• Frecuencia de acceso al bus requerida • Ancho de banda requerido • Número de endpoint • Tratamiento de errores requerido • Máximo tamaño de paquete que el endpoint puede enviar o recibir • Tipo de transferencia para el endpoint • La orientación en la que se transmiten los datos

Existen dos Endpoints especiales que todos los dispositivos deben tener, los Endpoints con número 0 de entrada y de salida, que deben de implementar un método de control por defecto al que se le asocia la tubería de control por defecto. Estos Endpoints están siempre accesibles mientras que el resto no lo estarán hasta que no hayan sido configurados por el Host. 2.3.8.7 Transmisión del Bus USB Toda transferencia de datos o transacción que emplee el bus, involucra al menos tres paquetes de datos. Cada transacción se da cuando el Controlador de Host decide qué dispositivo hará uso del bus, para ello envía un paquete al dispositivo específico. Cada uno de los mismos tiene un número de identificación, otorgado por el Controlador de Host cuando el computador arranca o bien cuando un dispositivo nuevo es conectado al sistema. De esta forma, cada uno de los periféricos puede determinar si un paquete de datos es o no para sí. Técnicamente este paquete de datos se denomina “Paquete Ficha” o “Token Packet”. Una vez que el periférico afectado recibe el permiso de transmitir, arranca la comunicación y sus tareas específicas; el mismo informará al Host con otro paquete que ya no tiene más datos que enviar y el proceso continuará con el siguiente dispositivo.

Page 99: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

77

Este protocolo tiene un sistema muy eficiente de recuperación de errores, empleando uno de los modelos más seguros como es el CRC (Código de Redundancia Cíclica) y puede estar implementado al nivel de software y/o hardware de manera configurable. De hecho si el control es al nivel de hardware, no vale la pena activar el control por Software, ya que sería duplicar tareas innecesariamente. 2.3.8.7.1 Transmisión de Serie Asincrónica En la transmisión serial la información generada en el transmisor es recuperada en la misma forma por el receptor, para lo cual es necesario ajustar adecuadamente un sincronismo entre ambos extremos de la comunicación. Para ello, tanto el receptor como el transmisor deben disponer de relojes que funcionen a la misma frecuencia y posibilite una transmisión exitosa. Como respuesta a este problema surgió la transmisión asincrónica, empleada masivamente años atrás para la comunicación entre los equipos servidores (Host) y sus terminales. En este modelo cabe entender que ambos equipos poseen relojes funcionando a la misma frecuencia, por lo cual, cuando uno de ellos desea transmitir, prepara un grupo de bits encabezados por un bit conocido como de “Arranque”, un conjunto de 7 u 8 bits de datos, un bit de “Paridad” (para control de errores), y uno o dos bits de “Parada”. El primero de los bits enviados anuncia al receptor la llegada de los siguientes, y la recepción de los mismos es efectuada. El receptor conoce perfectamente cuántos bits le llegarán, y da por recibida la información cuando verifica la llegada de los bits de parada. El esquema de los datos se muestra en la siguiente figura:

Figura 37. Esquema de transmisión asincrónica

(http://sipan.inictel.gob.pe/internet/alex/publi27.html)

Page 100: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

78

2.3.8.7.2 Transmisión Sincrónica En este tipo de transmisión, el sincronismo viaja en la misma señal, de esta forma la transmisión puede alcanzar distancias mucho mayores como también un mejor aprovechamiento de canal. En la transmisión asincrónica, los grupos de datos están compuestos por generalmente 10 bits, de los cuales 4 son de control. Evidentemente el rendimiento no es el mejor. En cambio, en la transmisión sincrónica, los grupos de datos o paquetes están compuestos por 128 bytes, 1024 bytes o más, dependiendo de la calidad del canal de comunicaciones. Las transmisiones sincrónicas ocupan en la actualidad gran parte del mundo de las comunicaciones seriales, especialmente las que emplean el canal telefónico.

Figura 38. Esquema de la transmisión sincrónica

(http://sipan.inictel.gob.pe/internet/alex/img545b.gif) 2.3.8.8 Modos de Transferencia de Información y Estructura de los Paquetes Usados en Sistemas USB La transferencia de información en un sistema conectado al USB puede realizarse en cuatro formas distintas mediante Enlaces Virtuales, Pipes o Tuberías. Estos Enlaces Virtuales son asociaciones entre uno o dos Endpoints en un dispositivo y el software en el Host; permiten mover datos entre software en el Host a través de un Buffer, y un Endopoint en un dispositivo. El enlace configura los parámetros asociados con el ancho de banda, el “tipo de transferencia a utilizar”, dirección del flujo de datos y el máximo y/o mínimo tamaño de los Paquetes/Buffers. Cada enlace esta caracterizado por su banda de paso (Token), su tipo de servicio, el número de punto Terminal (Endpoint) y el tamaño de los paquetes. Estos enlaces se definen y crean durante la inicialización del USB. Siempre existe un enlace virtual 0 que permite tener acceso a la información de configuración del periférico USB (estado, control e información). La norma USB define 2 tipos de Enlaces Virtuales (Pipes); “Stream” y “Message”.

Page 101: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

79

• Stream Pipes: No necesita que los datos se transmitan con una cierta estructura. Las tuberías Stream son siempre unidireccionales y los datos se transmiten de forma secuencial: "first in, first out". Están pensadas para interactuar con un único cliente, por lo que no se mantiene ninguna política de sincronización entre múltiples clientes en caso de que así sea. Un Stream siempre se asocia a un único Endpoint en una determinada orientación. Este tipo de Pipe soporta las transferencias Bulk o Masivas, Isócronas, y la de Interrupciones. Además tanto el Host como el dispositivo USB pueden realizar control.

• Message Pipes: este tipo de Enlace Virtual si tiene un formato USB

definido. A diferencia de lo que ocurre con los Sreams, en los mensajes la interacción de la tubería con el Endpoint consta de tres fases. Primero se realiza una petición desde el Host al dispositivo, después se transmiten los datos en la dirección apropiada, finalmente un tiempo después se pasa a la fase estado. Para poder llevar a acabo este paradigma es necesario que los datos se transmitan siguiendo una determinada estructura. Las tuberías de mensajes permiten la comunicación en ambos sentidos, de hecho la tubería de control por defecto es una tubería de mensajes. El software USB del sistema se encarga de que múltiples peticiones no se envíen a la tubería de mensajes concurrentemente. Un dispositivo ha de dar únicamente servicio a una petición de mensaje en cada instante por cada tubería de mensajes. Una tubería de mensajes se asocia a un par de Endpoints de orientaciones opuestas con el mismo número de Endpoint. Finalmente, este tipo de tubería solo puede soportar la transferencia de Control.

Es necesario mencionar que en los sistemas USB se usa la codificación NRZI (Non return to zero inverted) al momento de enviar los datos. La codificación y decodificación de datos se lleva a cabo en el transmisor y receptor. También es usado el método “bit stuffing”, el cual consiste en incluir un 0 lógico después de seis unos consecutivos. En base a lo mencionado en este capitulo, los tipos de transferencia establecidos en USB son:

• Control • “Bulk” o Masivo • Interrupciones • Isochronous

Page 102: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

80

En la tabla 4 se ilustran las fases y subfases de transmisión de cada uno de los tipos de transferencia mencionados. Las fases mostradas en dicha tabla y utilizadas en todas las transmisiones, tienen un formato determinado que siempre incluye un paquete llamado PID o “Packet ID”, el cual indica el tipo de paquete, el punto final al que es enviado, el numero de Frame61, tipo de datos, etc. Cuando se usa velocidad baja, se anteceden los Frames a enviar con un paquete llamado PRE o preámbulo, el cual se explica posteriormente. En la etapa de Token, el Host envía una solicitud mientras que el PID indica el tipo de transacción para que finalmente en la fase de datos o data se envíe la información en cuestión. Posterior a esto, en la fase de Handshake se establece el estado de la transmisión usando 4 posibles códigos:

• ACK (Acknowledge o Reconocimiento): indica que el dispositivo o Host en cuestión recibió correctamente los datos, ya sea en etapa de Setup (configuración) o de Datos (IN/OUT).

• NAK (Negative Acknowledge o No Reconocimiento): significa que el

dispositivo (nunca el Host) esta ocupado para recibir datos o no tiene listos los que se le piden; cuando se recibe un NAK se reintenta la transmisión mas tarde.

• STALL: este código tiene tres significados que pueden ser: solicitud de

control no soportada por el dispositivo, solicitud de control fallida o fallo de punto final o Endpoint.

• NYET: Solo se usa este código de Handshake en los dispositivos High-

Speed o de alta velocidad. El significado de NYET equivale a un “No Todavía” o un “Not Yet”. El uso de este código resulta muy interesante ya que cuando se reciben datos se envía un NYET por parte del dispositivo indicando que no puede recibir mas información ya que se encuentra ocupado, evitando un innecesario uso del bus mediante el método del NAK, en el cual se reenvía toda la información en cada intento del Host. Cuando el Host cree que ya se puede mandar información al dispositivo, se envía un PING62, el cual, si es contestado con un ACK indica que se puede enviar la información sin problema alguno.

61 Para Información sobre Frame referirse a la pagina Web, http://usuarios.lycos.es/kurganz/datos_tecnicos/flujo.html 62 Para información sobre PING referirse a la pagina Web, http://es.wikipedia.org/wiki/Ping

Page 103: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

81

Tabla 4. Transferencia y paquetes USB

(http://www.usb.org/developers/devclass_docs/HID1_11.pdf) Existe un uso adicional de la fase de “Token” llamado SOF o “Start Of Frame”, donde, el Host mediante el Token envía una señal que sirve de referencia de tiempo, la cual varia dependiendo de la velocidad del dispositivo, además en el Token se incluye un Frame que lleva una cuenta de transmisión que va incrementando. Los dispositivos de baja velocidad no detectan el SOF, en cambio usan un sistema llamado EOP o “End Of Packet”, el cual se usa como un latido o “Heardbeat” para mantenerlos activos. En la tabla 5 se muestran resumidos los diferentes paquetes usados en el USB, como también sus aplicaciones y principales características.

Page 104: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

82

Tabla 5. Descripción de paquetes USB

(http://www.usb.org/developers/devclass_docs/HID1_11.pdf)

Se debe recordar que el PID es la parte del “Frame” que describe distintos atributos del mismo. Las transacciones de SPLIT63 se llevan a cabo cuando el Host se comunica con un dispositivo de velocidad diferente a la más alta. Se requieren dos transacciones

63 Para información sobre la transacción SPLIT referirse a la pagina Web, http://usuarios.lycos.es/kurganz/datos_tecnicos/protocolo/split.html

Page 105: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

83

SPLIT para llevar a cabo una transacción de Low-Speed o Full-Speed en un bus High-Speed; una de ellas al inicio y otra al final. La excepción de esta regla se realiza en las transmisiones de tipo “Isochronous”. 2.3.8.8.1 Transferencia de Datos en Modo de Control

Es el único tipo de transferencia que utiliza tuberías de mensajes, soporta por lo tanto comunicaciones de tipo configuración/comando/estado entre el software cliente y su función.

Una transferencia de tipo control se compone de una transacción de Setup del Host a la función, cero o mas transacciones de datos en la dirección indicada en la fase de Setup, y por último una transacción de estado de la función al Host. La transacción de estado devolverá éxito cuando el Endpoint haya completado satisfactoriamente la operación que se había solicitado.

Según lo anterior, este tipo de transferencia esta pensado para configurar, obtener información, y en general para manipular el estado de los dispositivos. El tamaño máximo de datos que se transmiten por el bus viene determinado por el Endpoint. En dispositivos de velocidad media los posibles tamaños máximos son de 8, 16, 32 o 64 bytes, en velocidad baja el tamaño es de 8 bytes y en velocidad alta 64 bytes. El porcentaje de Microframe utilizado está alrrededor del 30% en velocidad baja, 5% en velocidad media y el 2% en alta.

2.3.8.8.2 Transferencia de Datos por Interrupciones Esta forma de transmisión utiliza tuberías Stream, por lo tanto está diseñada para servicios que envían o reciben datos de forma infrecuente. Esta transferencia garantiza el máximo servicio para la tubería durante el periodo en el que envía. En caso de error, los datos se reenvían en el próximo periodo de envío de datos. El tamaño de paquete de datos máximo es de 1024 bytes para alta velocidad, 64 bytes para velocidad media y 8 bytes para baja velocidad. En ningún caso se precisa que los paquetes sean de tamaño máximo, es decir, no es necesario rellenar los paquetes que no alcancen el máximo. Cuando en una transferencia de interrupción se necesite transmitir mas datos de los que permite el paquete máximo, todos los paquetes a excepción del último paquete deben tener el tamaño máximo de modo que la transmisión de un paquete se lleva a cabo cuando se ha recibido la cantidad exacta esperada o bien, se ha recibido un paquete que no alcanza el tamaño máximo. El porcentaje de Microframe utilizado está alrededor

Page 106: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

84

del 13% en velocidad baja y el 2.5% en velocidad media, mientras que en velocidad alta para cantidades similares utilizadas para obtener los anteriores porcentajes se obtienen resultados del 1%, pero para cantidades muy superiores se puede llegar a una utilización del 42%. La mayoría de los teclados, ratones y otros dispositivos del mismo tipo usan la transmisión por interrupciones. 2.3.8.8.3 Transferencia de Datos en Modo Isócrono Este tipo de transferencia hace uso de tuberías Stream. Garantiza un acceso al bus USB con una latencia limitada, asegura una transmisión constante de los datos a través de la tubería siempre y cuando se suministren datos, además en caso de que la entrega falle debido a errores no se intenta reenviar los datos. USB limita el máximo tamaño de datos con tipo de transferencia isócrona a 1023 bytes para los Endpoints de velocidad media y 1024 bytes para los de velocidad alta. De hecho las transferencias isócronas solo se pueden usar en dispositivos de velocidad alta o media. En función de la cantidad de datos que se estén transmitiendo en un momento dado, en velocidad media el porcentaje de Frame utilizado puede variar desde un 1% hasta un 69%, mientras que el porcentaje de Microframe utilizado en velocidad alta varía entre un 1% y un 41%. Esta forma de transmitir datos resulta ideal para los dispositivos que requieren trabajar en tiempo real. Los aparatos que mas se usan en este modo son aquellos que transmiten voz, música o video que debe reproducirse inmediatamente. Solo se puede usar el modo Isochronous en velocidades Full-speed y High-speed. Como característica se puede mencionar que existe un tamaño preestablecido de datos a transmitir en periodos específicos de tiempo. A diferencia de los demás tipos de transferencia de datos, aquí solo se puede hacer una transacción de entrada o salida. 2.3.8.8.4 Transferencia de Datos en Modo Bulk o Masivo Este tipo de transferencia hace uso de tuberías Stream y esta diseñado para dispositivos que necesitan transmitir grandes cantidades datos en un momento determinado sin importar mucho el ancho de banda disponible en ese momento. Esta transferencia garantiza el acceso al USB con el ancho de banda disponible, además en caso de error se garantiza el reenvío de los datos, por lo tanto este tipo

Page 107: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

85

de transferencia garantiza la entrega de los datos pero no un determinado ancho de banda o latencia. Este es el modo con el que trabajan los discos duros y solo se tiene acceso a este modo de transferencia cuando la velocidad usada es diferente a la baja o Low-Speed. Una transferencia Masiva o Bulk consiste en una o mas transacciones de entrada-salida, siempre en el mismo sentido, es decir, todos los datos deben entrar o todos deben salir. Para cuidar el buen uso del bus, el Host usa la señal PING y la señales de SPLIT para trabajar con diferentes velocidades. Una transferencia masiva en Full-Speed puede tener un tamaño máximo de paquetes equivalente a 8, 16, 32 o 64 bytes. Para High-Speed, el tamaño máximo debe ser 512 bytes. Durante la enumeración, el Host lee el máximo tamaño de paquetes de cada dispositivo, esto le permite mandar correctamente los datos sin pasarse del límite permitido. En caso de sobrepasarse del tamaño preestablecido se realizan varias transacciones. En la siguiente tabla se ilustra la capacidad de transmisión de datos de los 4 modos de transmisión ya explicados.

Tabla 6. Características de Transmisión [Kilobytes/segundo]

(http://www.usb.org/developers/devclass_docs/HID1_11.pdf) 2.3.8.9 Enumeración de Dispositivos USB Antes de comunicarse con el dispositivo, el Host debe saber que dispositivo se esta conectando y que controlador de sistema debe asignarle. La enumeración es el proceso inicial de intercambio de información que se encarga de asignar una dirección, leer las estructuras de datos, asignar un controlador o controladores y seleccionar una configuración de él o los dispositivos a conectarse.

Page 108: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

86

Figura 39. Esquema de Enumeración USB

(http://www.usb.org/developers/devclass_docs/HID1_11.pdf)

Page 109: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

87

Una de la obligaciones de los concentradores de un sistema USB consiste en detectar la conexión o desconexión de los dispositivos relacionados a el. Cuando se inicia el sistema, el Host censa su Concentrador Raíz para ver si hay nuevos dispositivos conectados y sigue haciéndolo durante todo el tiempo que este activo. Cuando se detecta un nuevo dispositivo, se realiza una serie de acciones con el Hub para que este funcione como intermediario entre el dispositivo y el Host. Después de esto el Host se comunica con el dispositivo por medio del Endpoint 0 de este último. Todos los dispositivos deben soportar transmisiones de control en este EP para poder realizar la enumeración correctamente. En la figura 39 se resume el proceso de enumeración en 12 pasos que se llevan a cabo cada vez que se detecta un nuevo dispositivo para poder usarlo correctamente en el sistema operativo en cuestión, en este caso Windows XP. 2.3.8.10 Estados de los Dispositivos USB Un dispositivo conectado por medio del USB puede ubicarse en 6 diferentes estados, en los cuales cambian sus facultades y características de funcionamiento. Los estados de suspendido y conectado pueden presentarse en cualquier etapa de la enumeración. La figura 40 presenta los estados de los dispositivos USB.

Figura 40. Estados de conexión en dispositivos USB

Page 110: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

88

2.3.8.11 Descriptores USB Los descriptores son estructuras de datos o bloques de información con determinado formato que permiten al Host aprender sobre las características del dispositivo USB a conectar. Los descriptores usados en los dispositivos USB pueden clasificarse según las partes o funciones del dispositivo que describen. Cada descriptor contiene un valor que identifica su tipo, este valor es único como se podrá apreciar en la tabla 7 donde se presentan los principales descriptores así como los descriptores de los dispositivos HID (Human Interface Device) que son usados al momento de implementar sistemas de control externo o sistemas de adquisición de datos.

Tabla 7. Descriptores USB

(http://www.usb.org/developers/devclass_docs/HID1_11.pdf)

Page 111: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

89

A continuación se describen a detalle los descriptores mostrados en la tabla 7 a excepción de aquellos que no son necesarios para propósitos de este proyecto.

2.3.8.11.1 Descriptor de Dispositivo Aquí se encuentra la información básica del dispositivo, es el primero que el Host lee y que le indica si existen descriptores consecuentes. La tabla muestra sus componentes y la función de cada uno de ellos.

Tabla 8. Descriptor de dispositivo

(http://www.usb.org/developers/devclass_docs/HID1_11.pdf)

Page 112: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

90

El tamaño máximo de paquete para Endpoint 0 es muy importante, en el caso de dispositivos Low-Speed este valor corresponde a 8, en el caso full-speed, el valor puede variarse con los siguientes valores: 6,16, 32 o 64. La clase del dispositivo es un elemento crucial del descriptor, ya que los dispositivos que pertenecen a una clasificación específica por las versiones de USB, pueden facilitar la asignación del “Driver” e informar al sistema o a los desarrolladores la forma de trabajar del dispositivo en cuestión. El campo de protocolo tiene varios usos, uno de ellos es saber si el dispositivo maneja alta velocidad, y otro importante es el de saber si se soportan diferentes traductores de transmisión.

2.3.8.11.2 Descriptor de Configuración Todos los dispositivos tienen al menos una configuración y un descriptor para la misma. El descriptor de configuración contiene la información relativa al uso de potencia y numero de interfaces que se soportan en el dispositivo. Observe la tabla 9 para la analizar los componentes de este descriptor.

Tabla 9. Descriptor de configuración

(http://www.usb.org/developers/devclass_docs/HID1_11.pdf)

Page 113: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

91

El número total de datos indicado describe cuanto se enviara al Host incluyendo los datos de los descriptores consecuentes al descriptor de configuración. El valor de configuración es el que sirve de indicador para el Host al momento de seleccionar una configuración posible; si el Host trata de configurar enviando el numero 0, el dispositivo entra a estado no configurado. Los atributos establecen si el dispositivo necesita potencia del bus o si tiene su propia fuente, también se indica si el dispositivo tiene la facultad de regresar del estado de suspendido por si solo. El campo de potencia máxima especifica cuanta corriente se necesita del bus. 2.3.8.11.3 Descriptor de Interfaz En los sistemas USB, interfaz se refiere a un conjunto de Endpoints usados para determinada función. Cada configuración debe soportar al menos una interfaz y pueden haber varias interfaces activas al mismo tiempo de seleccionar una configuración. Cada interfaz tiene su descriptor y consecuentemente los Endpoints de cada interfaz tienen sus propios descriptores.

Los dispositivos que tienen mas de una interfaz activa se denominan dispositivos compuestos, y con ellos el Host otorga un controlador para cada una de sus interfaces. La tabla 10 muestra los campos del descriptor de interfaz.

Tabla 10. Descriptor de interfaz

(http://www.usb.org/developers/devclass_docs/HID1_11.pdf)

Page 114: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

92

El número de interfaz es único y sirve para activar y desactivar interfaces desde el Host. El valor predefinido o por “Default” es 0 cuando solo se tiene una interfaz. 2.3.8.11.4 Descriptor de Endpoint El EP0 no tiene descriptor, pero los demás Endpoints deben proveer información sobre el tamaño máximo de paquetes además de otros datos, observe esto en la tabla 11.

Tabla 11. Descriptor de Endpoint.

(http://www.usb.org/developers/devclass_docs/HID1_11.pdf) El campo “Num Add Endpoint” determina la dirección (entrada o salida) y el número de Endpoint. Los atributos establecen el tipo de transferencia de datos que el Endpoint soporta, es decir, si acepta transmisión de Control, Isócrona, Masiva o de interrupciones. Para los sistemas bajo versión 2.0 de USB se usan mas bits que en versiones actuales, ya que incluyen atributos como: sincronización y retroalimentación. El campo de intervalo permite establecer los periodos máximos de “Polling”64 en Endpoints de Interrupción o el intervalo para Endpoints de transmisión Isócrona, como también información sobre periodos de NAK. 2.3.8.11.5 Descriptor HID Uno de los descriptores mas importantes en desarrollo de este proyecto es el descriptor HID, el cual especifica el numero, tipo y tamaño de “Descriptores

64 Para información sobre Polling referirse a la pagina Web, http://www.zator.com/Hardware/H2_4.htm

Page 115: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

93

Físicos” (Un descriptor físico identifica las partes de el cuerpo humano que activan los controles HID) y de “Descriptores de Reporte” que están asociados con la clase de dispositivo HID. El descriptor HID también especifica el código del país o región donde se localiza el hardware (la mayoría de hardware no tiene esta localización). El descriptor HID identifica el tamaño y el tipo de descriptores empleado por el dispositivo.

Tabla 12. Descriptor HID

Offset (decimal)

Campo

Tamaño en bytes

Descripción

0 bLength 1 Tamaño total del descriptor HID 1 bDescriptorType 1 Constante del descriptor HID 2 bcdHID 2 Identifica la clase de

especificación HID 4 bCountryCode 1 Código del país donde se

localiza el hardware 5 bNumDescriptor

s 1 Cantidad de descriptores de

clase 6 bDescriptorType 1 Constante del tipo de descriptor

de clase 7 wDescriptorLen

gth 2 Tamaño total del descriptor de

reporte 9 [bDescriptorTyp

e] 1 Tipo de descriptor opcional

10 wDescriptorLength

2 Tamaño total del descriptor opcional

(http://www.usb.org/developers/devclass_docs/HID1_11.pdf)

2.3.8.11.6 Descriptor de Reporte El descriptor de reporte es diferente a los otros descriptores debido a que no corresponde a una simple tabla de valores. La longitud y contenido del descriptor de reporte varia dependiendo del número de datos de campo requeridos por el reporte o reportes del dispositivo. El descriptor de reporte esta formado por varios

Page 116: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

94

ítems que suministran información acerca del dispositivo. La primera parte de un punto o ítem contiene 3 campos: Tipo, Etiqueta y Tamaño. Estos campos identifican el tipo de información que suministra el ítem. Hay tres tipos de ítems:

• Main o Principal • Global • Local

El descriptor de reporte da una descripción de la información suministrada por cada control de un dispositivo. Cada Main item identifica el tamaño de la información retornada por un control en particular e identifica si la información es absoluta o relativa, como también otra información pertinente. Los ítems Local y Global definen los valores de información mínimos y máximos. Solo mirando el descriptor de reporte, una aplicación sabe como manejar la información de entrada y sabe que uso le va a dar. 2.3.8.12 Clases de Dispositivos USB Para facilitar la instalación y manejo de los dispositivos nuevos de un sistema, una estrategia de agrupación resulta ideal. Las clases, son conjuntos de dispositivos que comparten características similares o que simplemente pueden manejarse de la misma manera. Al usarse la clasificación de dispositivos es innecesario tener un controlador para cada dispositivo nuevo a conectar resultando mas fácil para el sistema identificar un dispositivo que se conecte. Cuando un dispositivo se engloba dentro de una clase, sus funciones o capacidades son limitadas, sin embargo el proveedor puede agregar un “driver” para mejorar el rendimiento del equipo. La ventaja principal de las clases es la universalidad; si un dispositivo encaja perfectamente en determinada clase, este podrá ser utilizado en cualquier equipo que soporte la clase en cuestión. Las llamadas especificaciones USB, mencionadas vagamente con anterioridad, son documentos aprobados por el “USB Implementers Forum”65, la cual es una agrupación mundial de desarrolladores de dispositivos USB mas importante del mundo. Estas especificaciones tienen como objetivo describir los detalles de todos y cada uno de los aspectos correspondientes a las versiones del USB; estos 65 Para información sobre el “USB Implementers Forum” referirse a la pagina Web, http://en.wikipedia.org/wiki/USB_Implementers_Forum

Page 117: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

95

documentos sirven de guía para diseñar cualquier equipo y para escribir software que trabaje con los dispositivos USB. Todas las especificaciones de clase se basan en la especificación común de clase. Esta última especificación describe que tipo de información debe incluirse en cualquier especificación de clase, ya sea que tipos de Endpoints soporta la clase en cuestión o los formatos de los datos a enviar, incluyendo tanto información de control, de estado y de datos. Muchas clases definen también funciones o capacidades que describen como los datos serán usados después de transmitirse y funciones o capacidades especiales de los dispositivos tratados por la especificación. A cada tipo de clase de dispositivo se le asigna un GUID o “Global Unique Identifier”. Existen varias clases aprobadas cuyas especificaciones han sido liberadas, algunas de ellas se muestran en la siguiente lista:

• Dispositivos de Audio • Chip/Smart. Dispositivos de tarjeta interfaz. • Dispositivos de comunicaciones • Dispositivos de interfaz humana (HID) • Dispositivos de almacenamiento masivo

2.3.8.13 Controladores Bajo el Sistema Operativo Windows XP Un Driver o Controlador de dispositivo es un componente de software que le permite a las aplicaciones acceder a determinado hardware o equipo. Los controladores evitan que las aplicaciones necesiten conocer todas las características de un determinado dispositivo. La función de los Drivers consiste en traducir el código del hardware a código de aplicación y viceversa. El código de aplicación es propio del sistema operativo, en cambio el código de hardware es propio del dispositivo. El sistema operativo de interés para la interfaz USB-HID de este proyecto es Windows de Microsoft. Windows incluye funciones de interfaz de programador (API)66 que permiten la comunicación con los controladores de dispositivos. Las APIs pueden ser usadas bajo lenguajes comunes de programación como el “Visual Basic, C/C++ y Delphi; aunque las APIs simplifican el proceso de comunicación con el hardware, tienden a ser demasiado rígidas en su manejo, debido a esto, se creo en “Visual Basic” un

66 Para información sobre API referirse a la pagina Web, http://es.wikipedia.org/wiki/Win32

Page 118: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

96

método diferente mas simple y mas seguro en cuestión de errores: “Los Controles de Tareas Comunes”. Hay Drivers que se encargan de toda la comunicación USB, sin embargo, algunos de ellos usan un sistema de capas donde cada controlador dentro de la serie realiza una porción de la comunicación. Este modo de trabajar con Drivers facilita la programación de los mismos. Bajo Windows, el código puede ejecutarse en dos diferentes modos: “Usuario” o “Kernel”67. Cada modo tiene distintos privilegios de acceso a recursos, esto le permite a las computadoras correr distintas aplicaciones al mismo tiempo sin interferirse. En el modo de kernel, el código tiene acceso ilimitado a los recursos del sistema, incluyendo la habilidad de ejecutar instrucciones de manejo de memoria y control de puertos. Bajo Windows 98 y posteriores, las aplicaciones pueden tener acceso directo a los puertos I/O a menos que algún controlador lo haya reservado. A diferencia de las aplicaciones, los controladores no usan las funciones API sino estructuras llamadas IRP o Solicitudes de paquetes I/O. Windows define un Set de IRPs (I/O Request Packet) que pueden usarse en los controladores donde cada solicitud tiene una acción única de salida o entrada. La figura 41 muestra la jerarquía del sistema de capas de los controladores bajo Windows.

Figura 41. Comunicación entre controladores.

(http://www.usb.org/developers/devclass_docs/HID1_11.pdf)

67 Para ampliar información sobre Kernel referirse a la pagina Web, http://es.wikipedia.org/wiki/Kernel

Page 119: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

97

2.3.8.13.1 Modelo de Controladores Win32 Los Drivers de Windows han sufrido distintos cambios a través de las diferentes versiones de este sistema operativo. En Win95 se usaban los “Vds.” o “Virtual Device Drivers”, en WinNT4 se usaron controladores llamados “Kernel-mode”, por esta incompatibilidad Microsft estableció un modelo básico para controladores en su sistema operativo denominado “Win32 Driver Model” (WDM), el cual trabaja con cualquier plataforma superior al Windows98. El lenguaje de programación sugerido para hacer Drivers es Visual C++, el cual ofrece distintas formas de alternar o iniciar de cero cualquier controlador que se desee. El subsistema I/O mostrado en la figura 42 consiste en una serie de controladores que se encargan de distintas tareas de comunicación. El controlador de función es un Driver que le permite a las aplicaciones comunicarse con los dispositivos mediante APIs; este controlador es en ocasiones el propio del dispositivo, como un Driver de clase o del desarrollador del equipo USB. Cuando se requiere que algún dispositivo supere los límites establecidos en sus controladores se puede usar un Driver adicional llamado filtro. Este controlador funciona como intermediario entre capas del sistema de comunicación USB como se muestra en el siguiente esquema.

Figura 42. Controladores con Filtro

(http://www.usb.org/developers/devclass_docs/HID1_11.pdf)

Page 120: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

98

2.3.8.13.2 Proceso de Selección de Controladores y Flujo de Información Cuando se conecta algún dispositivo, el administrador de dispositivos de Windows intenta enumerarlo automáticamente. Para saber que controlador usar, Windows compara la información obtenida en los descriptores con los archivos INF del computador. Windows asigna un identificador único conocido como “Handle"; este identificador se obtiene mediante la llamada de función “API CreateFile”. Algunos productos establecen símbolos de enlace específicos, sin embargo, una técnica muy usada es la de los GUIDs o “Globally Unique Identifier”. El GUID es un identificador de 128 bits que puede repetirse en diferentes dispositivos cuando estos trabajan bajo una misma clase. Cuando los dispositivos son nuevos, un GUID único debe obtenerse. Una forma viable de obtener un GUID es la que se realiza mediante el programa “guiden.exe” incluido en Visual C++. Las APIs incluidas en Windows para intercambiar datos son tres:

• ReadFile • WriteFile • DeviceI/OControl

Las primeras dos llamadas de función se usan para intercambiar información entre cualquier Driver que las soporte. La función de control también sirve para intercambiar información con la diferencia de ser bidireccional. El procedimiento de elección de Driver puede resumirse en los siguientes pasos:

• Windows busca correspondencia de descriptores con archivos INF en disco duro.

• Si el dispositivo es nuevo en el sistema, el programa no usará un Driver genérico, el “Add New Hardware Wizard” se iniciara y solicitara un archivo INF que corresponda al dispositivo y lo copiará al sistema. Cuando el dispositivo ya se ha usado con anterioridad en el sistema, el registro informa de la existencia del mismo y no se necesita correr ningún programa de instalación.

• Cuando un dispositivo necesita sólo los Drivers estándar o genéricos basta con que el “Device Manager” lo reconozca como dispositivo de clase; en algunos casos se puede iniciar el Wizard sugiriendo el Driver genérico cuando no se encuentra ni identificación de fabricante ni de producto en los archivos INF. También es posible que se instale automáticamente el controlador del dispositivo si este pertenece a alguna clase conocida.

Page 121: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

99

2.3.9 MIDI MIDI (Musical Instruments Digital Interface) es un protocolo digital de datos de control musical que surgió de la necesidad de interconectar instrumentos musicales entre si, pues lo máximo que se lograba antes del MIDI, era conectar instrumentos (generalmente sintetizadores) por medio de la tecnología de volt por octava. Los primeros circuitos para conectar sintetizadores a un computador, eran hechos de forma casera o vendidos con poca frecuencia por empresas pequeñas. Esto derivó en una variedad de sistemas que eran incompatibles entre si y tan particulares, que solo sus fabricantes podrían escribir software para estos. No había en aquel entonces un estándar para conectar instrumentos de diferentes marcas entre si ni para conectar instrumentos de cualquier marca a una computadora. Dave Smith de la empresa Sequential Circuits pensó en diseñar un sistema para conectar instrumentos y propuso ante la AES (Audio Engineering Society) un protocolo que se llamó U.S.I o Universal Synthetizer Interface. Este especificaba un formato de datos seriales transmitidos a 19.2Kbits por segundo a través de conector jack standard de un cuarto de pulgada. Este protocolo fue estudiado y evaluado por diferentes empresas de distintos países, luego de varios experimentos y pruebas, empresas norte americanas y japonesas acordaron implementar ciertos elementos para mejorar este protocolo. Entre los años 1982 y 1983, se aprobó por acuerdo, un modelo de interface y comandos de protocolo comunes para una especificación que se llamó MIDI 1.0, logrando con esta especificación un protocolo que permite a computadores, teclados, sintetizadores y otros dispositivos intercambiar información, datos de ejecución y de control en tiempo real. El protocolo MIDI definido en 1983, especifica la conexión física, el interfaz de hardware, el formato de los datos y el orden y disposición de los mensajes que se pueden transmitir, es en esencia un interface serial asíncrono, bastante parecido al protocolo RS-232 (puerto serial de una computadora) con la diferencia de que utiliza niveles eléctricos diferentes y ofrece una mayor velocidad de transmisión; Los mensajes son transmitidos de forma digital y en serie, es decir, mediante pulsos o bits sucesivos basados en el sistema binario, esta transmisión se produce de forma asíncrona a una velocidad de 31.25 KBits/seg; estos mensajes son enviados en grupos de Bytes de 8 bits que sincronizan la recepción de los datos obligando a que cada Byte de mensaje se transmita con un bit de comienzo con un valor de 0 y un bit de final con un valor de 1. Estos últimos, permiten al microprocesador del instrumento receptor distinguir el final de un byte del comienzo del siguiente.

Page 122: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

100

A diferencia de los Bytes estándar de ocho bits que utilizan las computadoras, la especificación MIDI usa un Byte llamado MIDI byte, el cual está compuesto por diez bits, los ocho bits restantes contienen los mensajes MIDI. Como se mencionó anteriormente, la notación matemática utilizada usualmente para describir un mensaje MIDI es mediante sistema binario, lenguaje usado comúnmente en la transmisión de datos entre computadores y dispositivos digitales, no solo aplicado a datos MIDI. 2.3.9.1 Sistema Binario El sistema binario, es un sistema de numeración en el que los números se representan utilizando solamente las cifras 0 y 1. Los computadores trabajan internamente con dos niveles de voltaje, por lo que su sistema de numeración natural es el sistema binario (encendido 1, apagado 0). El sistema binario moderno fue documentado en su totalidad por Leibniz, en el siglo XVII, en su artículo "Explication de l'Arithmétique Binaire". Leibniz usó el 0 y el 1, al igual que el sistema de numeración binario actual. En noviembre de 1937, George Stibitz, trabajando por aquel entonces en los Laboratorios Bell, construyó un computador basado en relés que utilizaba la suma binaria para realizar los cálculos. Los Laboratorios Bell autorizaron un completo programa de investigación a finales de 1938, con Stibitz al mando. El 8 de enero de 1940 terminaron el diseño de una calculadora de Números Complejos, la cual era capaz de realizar cálculos con números complejos. En una demostración en la conferencia de la Sociedad Americana de Matemáticas, el 11 de septiembre de 1940, Stibitz logró enviar comandos de manera remota a la Calculadora de Números Complejos a través de la línea telefónica mediante un teletipo. Fue la primera máquina computadora utilizada de manera remota a través de la línea de teléfono. 2.3.9.1.1 Conversión de Notación Binaria a Decimal Dado un número N, binario, para expresarlo en el sistema decimal, se debe escribir cada número que lo compone, multiplicado por la base dos, elevado a la posición que ocupa. Ejemplo: 110012 = 2510 <=> 1 × 2

4 + 1 × 23 + 0 × 22 + 0 × 21 + 1 × 20

Page 123: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

101

2.3.9.1.2 Conversión de Notación Decimal a Binaria Se divide el número decimal entre 2 cuyo resultado entero se vuelve a dividir entre 2 y así sucesivamente. Una vez llegados al 1 indivisible se cuentan el último cociente, es decir el uno final (todo número binario excepto el 0 empieza por uno), seguido de los residuos de las divisiones subsiguientes. Del más reciente hasta el primero que resultó. Este número será el binario que buscamos. A continuación se puede ver un ejemplo con el número decimal 100 pasado a binario.

Tabla 15. Conversión de valores binarios, decimales hexadecimales y octales.

Decimal Binario Hexadecimal Octal

0 0 0 0

1 1 1 1

2 10 2 2

3 11 3 3

4 100 4 4

5 101 5 5

6 110 6 6

7 111 7 7

8 1000 8 10

9 1001 9 11

10 1010 A 12

11 1011 B 13

12 1100 C 14

13 1101 D 15

14 1110 E 16

15 1111 F 17 Para completar la transmisión de datos desde un instrumento digital a un computador, se necesita una interface o puerto que reciba estos datos, es necesario que el computador tenga un UART o receptor-transmisor asíncrono universal.

Page 124: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

102

2.3.9.2 Sistema Hexadecimal El sistema hexadecimal, abreviado como hex, es el sistema de numeración posicional de base 16. Su uso actual está muy vinculado a la informática y ciencias de la computación. Esto se debe a que un dígito hexadecimal representa cuatro dígitos binarios: 4 bits = 1 nibble; por tanto, dos dígitos hexadecimales representan ocho dígitos binarios (8 bits = 1 byte que, como es sabido, es la unidad básica de almacenamiento de información). Dado que el sistema usual de numeración es de base decimal y, por ello, sólo se dispone de diez dígitos, se adoptó la convención de usar las seis primeras letras del alfabeto latino para suplir los dígitos que nos faltan: A = 10, B = 11, C = 12, D = 13, E = 14 y F = 15. Como en cualquier sistema de numeración posicional, el valor numérico de cada dígito es alterado dependiendo de su posición en la cadena de dígitos, quedando multiplicado por una cierta potencia de la base del sistema, que en este caso es 16. Por ejemplo: 3E0,A16 = 3×16

2 + E×161 + 0×160 + A×16-1 = 3×256 + 14×16 + 0×1 + 10×0,0625 = 992,625. 2.3.9.3 UART/USART USART significa Universal Synchronous/Asynchronous Receiver-Transmitter, este es un dispositivo que sirve para transmitir o recibir datos secuenciales de manera síncrona o asíncrona. El UART sólo maneja el modo Asíncrono. En informática, las dos aplicaciones más comunes de estos dispositivos son los puertos seriales, como el COM1 donde se conectan dispositivos como el raton y el Modem. Esta interface serial se usa para transmisión a grandes distancias, requiere menos cables, lo cual significa menos líneas de datos, es un poco más lento, pero genera menos errores debido al ruido, se puede codificar o decodificar, para enviarse a través de línea telefónica o Modem. La interface serial tiene las siguientes características principales:

• Modo Asíncrono: Cada byte se trata por separado. Se envían 1 ó 2 bits (bits de inicio) indicando que enseguida se enviará un byte de información; al final se envían unos bits de parada o finalización (bit de stop).

• Modo Síncrono: Se envían los bytes por bloque. Se envía un formato especial de inicio. Este método es más rápido pero se necesita de más software.

• Baud Rate: Por cada ciclo de cambio de nivel hay un dato binario. Por ejemplo: 110, 300, 1200, 2400, 9600, 19.2 Kbauds

Page 125: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

103

• Paridad: Método para detectar errores, utilizando un bit después del dato pero antes de los de parada. Paridad par (even): el número de bit en 1 (incluyendo el bit de paridad) debe ser par. Paridad impar (odd): el número de bit en 1 (incluyendo el bit de paridad) debe ser impar.

• Tamaño del dato: 7 u 8 bits por cada palabra. 7 bits generan 128 caracteres distintos y 8 bits generan 256 caracteres.

• Velocidad de transmisión/recepción (bauds): Número de bits que se reciben o transmiten por cada unidad de tiempo.

2.3.9.4 Puertos MIDI La interface MIDI de un dispositivo es la responsable de recibir y transmitir los datos, aunque la mayoría de los dispositivos MIDI incluyen como mínimo un puerto receptor y un puerto emisor, también es posible que incluyan tan solo uno de los dos. El puerto emisor, denominado MIDI OUT, se encarga de convertir los datos digitales generados por el dispositivo, en series de voltajes eléctricos. El puerto receptor, denominado MIDI IN, realiza el proceso inverso al puerto MIDI OUT. Existe un tercer puerto, denominado MIDI THRU, que simplemente reenvía la información que llega al puerto MIDI IN de la interfaz. Los cables MIDI estándar, utilizados para conectar los puertos MIDI entre sí, consisten en un par de alambres blindados y trenzados que utilizan un conector DIN macho de 5 pines. Este blindaje tiene el objetivo de evitar interferencias exteriores como las de radiofrecuencias, o interferencias electroestáticas, las cuales podrían distorsionar o interrumpir la transmisión de mensajes MIDI, de los cinco pines del conector DIN, tres son utilizados.

Figura 43. Puertos y cables MIDI

(www.wikipedia.org/wiki/midi)

Page 126: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

104

• El pin 2 es utilizado como blindaje o masa. Este hace contacto con un papel metálico que recubre los conductores al interior del cable, evitando interferencias o ruidos.

• El pin 4 conduce un voltaje de +5 voltios para asegurar que la corriente fluya en la dirección apropiada.

• El pin 5 es el que se utiliza para la transmisión de datos MIDI. • Los pines 1 y 3 se han reservado para agregar funciones futuras.

2.3.9.5 Canales MIDI El protocolo MIDI permite que los mensajes se envíen a través de dieciséis canales diferentes. Estos canales no corresponden a conexiones físicas separadas, ya que comparten un único cable, sino a direcciones lógicas. Un dispositivo controlador suele enviar por un único canal a la vez, mientras que un dispositivo receptor por ejemplo un sintetizador, puede ser configurado para recibir en uno o varios canales simultáneos. Podemos pensar en un canal como en un instrumento independiente. Actualmente, muchos sintetizadores y la totalidad de las tarjetas de sonido son capaces de reproducir varios instrumentos diferentes de forma simultánea, para que esto sea posible, deben ser capaces de recibir en varios canales MIDI; un sintetizador que pueda generar cuatro instrumentos simultáneos como por ejemplo una línea de bajo, unos acordes de piano, una sección de cuerdas y una batería deberá como mínimo poder recibir en cuatro canales MIDI diferentes. Un dispositivo que satisface estas características se denomina multitímbrico. Estableciendo un símil entre MIDI y televisión, cada cadena emite por un canal diferente, pero el receptor puede sintonizar cualquiera de ellos, ya que todos le llegan por el mismo cable. Un módulo multitímbrico sería en este caso, equivalente a un conjunto de varias pantallas de televisión sintonizadas en diferentes canales. 2.3.9.6 Mensajes MIDI La especificación MIDI, aparte del hardware, determina también con precisión el formato de los datos, el orden y disposición de los mensajes que se pueden transmitir. Existen diferentes tipos de mensajes MIDI y cada uno de ellos tiene un tamaño fijo, normalmente dos o tres bytes. Todo dispositivo MIDI dispone de al menos un microprocesador capaz de interpretar algunos de estos mensajes, aunque no es imprescindible que los entienda todos, cuando un dispositivo recibe un mensaje

Page 127: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

105

que no es capaz de interpretar, simplemente lo ignora y pasa a interpretar el siguiente mensaje. Supongamos que estos mensajes se generan por la acción de un músico sobre un teclado MIDI, y que la sucesión de estos mensajes constituye la partitura o la trascripción de su interpretación, existen otras formas de generar mensajes MIDI no necesariamente ligadas a la acción de un músico sobre un instrumento, por ejemplo se puede pensar que una partitura se compone de una serie de notas de duraciones variables, pero, en realidad, una partitura convencional suele contener mucha más información, puede indicar por ejemplo los instrumentos que ejecutan estas notas, así como la intensidad y los matices expresivos (vibrato, trémolo, etc.) de cada una ellas, algo similar sucede con el MIDI. 2.3.9.6.1 Bytes de Estado y Bytes de Datos Los mensajes MIDI se componen de uno a cientos de Bytes de información, el instrumento receptor sabe qué cantidad de bytes esperar gracias al valor del primer byte del mensaje, este primer byte es llamado byte de estado, como habíamos visto antes, los mensajes MIDI se componen de dos o tres bytes, estos bytes se dividen en dos categorías, status bytes o bytes de estado y data bytes o bytes de datos de acuerdo con el valor de su bit más significativo, que en los primeros vale uno, mientras que en los bytes de datos su valor es cero. Los bytes de estado funcionan como identificador, dado por el MSB (More Significant Bit) y tiene un valor de 1, en el byte de estado los primeros cuatro dígitos se utilizan para identificar el tipo de mensaje y los últimos cuatro dígitos definen el número de canal utilizado. El byte de datos o de información representa el valor o la cantidad, su MSB es equivalente a 0 y el octeto de dígitos se utiliza para definir valores cuantitativos. Tendremos entonces en el byte de estado 8 tipos de mensajes y 16 canales disponibles. En el byte de datos tendremos 7 bits restantes teniendo un rango de valores de 0 a 127, es decir 128 posibilidades para el valor de un mensaje. Hay que tener en cuenta que en la representación de canales, los computadores leen de 0 a 15, pero los dispositivos muestran de 1 a 16. 2.3.9.6.2 Tipos de Mensajes MIDI En la siguiente tabla, se muestran los tipos de mensajes MIDI más comunes, su nomenclatura y composición.

Page 128: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

106

Tabla 16. Tipos de mensaje MIDI

NOMBRE BINARIO HEX DATA 1 DATA 2 Note Off 1000nnnn 8N Altura Velocidad Note On 1001nnnn 9N Altura Velocidad

Polyphonic Aftertouch 1010nnnn AN Altura Presión

Control Change 1011nnnn BN Tipo de control Intensidad Channel Aftertouch 1100nnnn CN Presión

Pitch Bend 1101nnnn DN MSByte LSByte Program Change 1110nnnn EN Programa System Message 1111xxxx FX

(Sergi Jordà Puig, Hardware MIDI, Guías Monográficas Anaya Multimedia, Madrid 1997)

• nnnn son los cuatro bits que determinan el canal al que se aplica el mensaje, de forma que 0000 es el canal 1, y 1111 el canal 16.

• N corresponde al caractér hexadecimal de este canal (0-F). • Todos los bytes de datos tienen una resolución de siete bits, con valores

decimales comprendidos entre 0 y 127. • Cuando en la tabla el segundo byte de datos está en blanco (Channel

Aftertouch y Program Change), significa que el mensaje utiliza un único byte de datos.

• En el mensaje Pitch Bend, los dos bytes de datos se combinan para formar un único valor con catorce bits de resolución, comprendido entre -8192 y +8191.

En la siguiente figura se puede apreciar la estructura binaria de un mensaje MIDI genérico.

Figura 44. Representación binaria de un mensaje MIDI genérico

(Sergi Jordà Puig, Hardware MIDI, Guías Monográficas Anaya Multimedia, Madrid 1997)

Page 129: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

107

2.3.10 Síntesis de Sonido68 La síntesis de sonido es la generación de una señal que produzca la sensación acústica deseada. Existen muchas técnicas de síntesis entre ellas la síntesis aditiva, sustractiva, de distorsión, granular, entre otras. La síntesis digital de sonido se logra mediante algoritmos, estos calculan los valores numéricos utilizando como entrada los parámetros recibidos por el programa. Es posible que alguno de los parámetros sea incluso una señal de audio digital. Uno de los desarrollos más significantes en el diseño de los lenguajes de síntesis digital de sonido es el concepto de la unidad generadora. Estos son módulos de procesamiento de señal como osciladores, filtros, y amplificadores los cuales pueden ser interconectados para formar instrumentos de síntesis o patches que generen señales de audio. La síntesis de sonido en su estado primario, es generada por dispositivos llamados osciladores. Este genera una forma de onda determinada constantemente, la frecuencia con la cual el oscilador genera cada ciclo de la forma de onda es lo que conocemos como altura o frecuencia, medida en Hertzios donde 1Hz es un ciclo por segundo. En la siguiente figura se muestra una de las representaciones visuales de la unidad generadora oscilador, generalmente el computador tiene que saber los parámetros básicos de esta señal para poder producir el sonido, en este caso esta unidad generadora necesita saber el valor de la amplitud y el valor de la frecuencia. Figura 45. Representación visual de las unidades generadoras; esta representa un oscilador

(www.ccapitalia.net/reso/articulos)

68 En este apartado se plantean los principios básicos de la síntesis de sonido, sin embargo no se profundiza en esta debido a que no es el objetivo de esta tesis. Definiciones tomadas de la pagina web: www.ccapitalia.net/reso/

Page 130: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

108

Dado que la mayoría de los parámetros sonoros cambian con el tiempo, es necesario el uso de envolventes. En los instrumentos acústicos, el nivel sonoro varía permanentemente a lo largo de la emisión de una nota, y la forma en que lo hace influye poderosamente en su carácter. La envolvente más precisa corresponde a la línea que une los sucesivos máximos de amplitud, pero, para simplificar el procesado de la información, la mayoría de sintetizadores reducen la envolvente a unos pocos fragmentos rectilíneos, generalmente 4, que corresponden a 4 fases de la evolución temporal de la amplitud de un sonido.

Figura 46. Evolución temporal de la amplitud del sonido de un piano y de una flauta

(www.ccapitalia.net/reso/audio)

La evolución temporal de la amplitud de un sonido es considerado en las siguientes fases:

1. El tiempo transcurrido entre el inicio de un sonido y el instante en que éste alcanza su nivel máximo, se denomina ataque.

2. El tiempo del primer descenso recibe el nombre de decaimiento.

3. El nivel al que se mantiene la amplitud, después de este decaimiento, se

llama sostenido o sustain.

4. Finalmente, el tiempo empleado por el sonido en extinguirse hasta el silencio, se llama liberación o release.

De acuerdo con estos cuatro parámetros, en la siguiente figura se muestran las envolventes aproximadas de los sonidos digitalizados de las figuras anteriores. La imagen corresponde a una ventana del programa Vienna, que se utiliza para editar y modificar los sonidos de la tarjeta AWE32.

Page 131: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

109

Figura 47. Representación de una Envolvente

(www.ccapitalia.net/reso/articulos)

Los sonidos naturales jamás son totalmente estables. En ellos, la altura, la amplitud, el contenido armónico, oscilan de forma permanente, enriqueciéndolos. Una forma simplificada de obtener cierta variación en los sonidos sintéticos, consiste en aplicar señales periódicas de baja frecuencia, por debajo de los 15 Hz, que modulen sus diferentes parámetros (cuando la oscilación se aplica a la amplitud se produce el efecto de trémolo y cuando se aplica a la frecuencia, el vibrato). Estas señales moduladoras se llaman LFOs (Low Frequency Oscillator), y en algunos sintetizadores son únicamente sinusoidales, mientras que otros incorporan señales cuadradas, dientes de sierra, triangulares, etc. Cuantos más osciladores de baja frecuencia podamos asignar a cada voz, más rico y variable podrá resultar el sonido final. El motivo de este limite de frecuencia, es que cuando la frecuencia de la moduladora entra en el terreno audible (por encima de los 20 Hz), los efectos producidos son mucho más complejos. El contenido armónico de los instrumentos naturales también es variable en el tiempo, los filtros digitales permiten estas modificaciones tímbricas, atenuando determinadas frecuencias y amplificando otras. Pero, para conseguir efectos variables en el tiempo, es

Page 132: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

110

necesario que evolucionen también los parámetros de estos filtros: frecuencia de corte, resonancia, etc. 2.3.10.1 Tipos de Síntesis 2.3.10.1.1 Síntesis Aditiva La síntesis aditiva es un proceso en donde se suman diferentes tonos simples con el fin de crear una onda compleja. Con la síntesis aditiva se pueden crear timbres musicales, los cuales están formados por cantidades variables de armónicos que cambian a lo largo del tiempo con respecto a un tono base. La síntesis aditiva emula este comportamiento creando diferentes envolventes de amplitud sobre cada armónico, además de añadir artefactos no armónicos para conseguir recrear un timbre de manera realista. El concepto tras la síntesis aditiva se remonta a los descubrimientos del matemático francés Joseph Fourier, quien descubrió que las funciones discontinuas pueden descomponerse como la suma de una serie infinita de funciones continuas. A partir de aquí, se estableció que todas las señales, representadas como una función matemática pueden ser compuestas por una suma de funciones seno (sin(x)) de varias frecuencias. En rigor, cualquier sonido periódico en el dominio del tiempo discreto puede sintetizarse como sigue:

o

Donde:

,

Y es la frecuencia de muestreo, es la frecuencia fundamental y

es el armónico más alto por debajo de la frecuencia de Nyquist. El término de la componente continua DC no es conveniente en la síntesis musical, de forma que se puede eliminar el término a0. Al introducir los

Page 133: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

111

coeficientes variables rk(n) permite el uso dinámico de envolventes para modular los osciladores, creándose una forma de onda cuasi-periódica (es decir periódica a corto plazo pero que cambia a largo plazo). La síntesis aditiva puede también crear sonidos no armónicos si las parciales individuales no tienen una frecuencia que sea múltiplo de la misma frecuencia fundamental. Un ejemplo de un sintetizador aditivo es el órgano, porque cuando el aire pasa a través de los tubos se generan ondas senoidales que se añaden unas a otras para generar tonos.

Figura 48. Esquema de la síntesis aditiva

(www.ccapitalia.net/reso/articulos)

2.3.10.1.2 Síntesis Sustractiva. En la síntesis sustractiva se utiliza exactamente el proceso contrario a la aditiva, pues se generan los sonidos nuevos, mediante la filtración de una forma de onda con alto contenido armónico, usualmente se utiliza el ruido el cual tiene un gran espectro y un alto contenido armónico. Los armónicos que componen la señal pasan a través de un filtro que modifica su espectro, atenuando o reforzando determinadas áreas de la señal, dando así relevancia a determinadas frecuencias dependiendo el tipo de filtro utilizado, por ejemplo si es pasa altos, pasa bajos o pasa banda.

Page 134: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

112

Figura 49. Filtros: Pasa bajos, Pasa altos, Pasa banda y rechaza banda

(Tipos de filtros del pdf: Tutorial MatLab) La mayoría de las técnicas aditivas y sustractivas utilizan información derivada del análisis de sonidos naturales.

2.3.10.1.3 Síntesis FM En su forma más sencilla, necesita tan sólo dos osciladores: la señal portadora y la señal moduladora. Parte de la idea de que cuando la moduladora no es una señal de baja frecuencia sino que entra ya en el rango de las frecuencias audibles (a partir de los 20 Hz) se crean un gran número de frecuencias adicionales que generan un sonido con un gran contenido armónico. La siguiente figura muestra la onda obtenida de la modulación en frecuencia de las mismas ondas sinusoidales del ejemplo anterior. En este caso, la onda obtenida no mantiene ya la frecuencia de la onda más grave.

Page 135: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

113

Figura 50. Ejemplo de síntesis FM

(www.ccapitalia.net/reso/articulos) 2.3.11 Entornos Virtuales de Control y Generación de Audio La informática, desde su aparición, y en especial en las últimas décadas, se ha convertido en una herramienta de trabajo que ha extendido su influencia a casi todos los ámbitos de la vida en nuestra sociedad, y que sigue ampliando esa influencia a muchos otros aspectos gracias al avance de la tecnología y la aparición de aplicaciones cada vez más eficaces y sofisticadas que posibilitan actualmente, y mucho más en un futuro no muy lejano, una nueva forma de organizar y representar la realidad. Uno de estos aspectos es la tecnología aplicada a la música o informática musical, la cual ha experimentado un gran crecimiento en los últimos años con el desarrollo de entornos virtuales de creación sonora orientados al consumidor medio y semi-profesional. En la década de los 80, con el aumento de la capacidad del disco duro y de la memoria RAM, así como de la velocidad de los procesadores, surge un nuevo horizonte y se hace posible la grabación, reproducción, control y generación (síntesis) de audio, a esto se suma el desarrollo de tarjetas de sonido dedicadas a la producción musical, provistas de múltiples entradas y salidas de audio y el desarrollo de interfaces que superan a las convencionales. Fue la industria europea la pionera en el desarrollo de software de audio, Steinberg, de Hamburgo en 1984, Emagic de Hamburgo en 1992, Propellerhead de Estocolmo en 1994, Native Instruments de Berlín en 1996 entre otras aplicaciones de audio orientadas a lenguajes de programación, permitiendo más posibilidades de interacción y control en tiempo real tales como Csound entre los 60’s, Max/MSP a mediados de los ochentas y Pure Data durante los 90’s.

Page 136: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

114

A partir del desarrollo de la tecnología en la informática musical surgieron tendencias por crear instrumentos musicales virtuales, por una parte se recrea una versión virtual de los instrumentos musicales análogos (sobre todo los sintetizadores) con un aspecto visual que los identifica inmediatamente con sus análogos hardware; Tal es el caso del Yamaha DX7 que pasa a ser emulado por el instrumento virtual FM7 de la empresa Native Instruments.

Figura 51. Sintetizador virtual FM7 y sintetizador Yamaha DX 7

(www.musicianslife.de)

Este tipo de representación visual no tendría sentido si no fuese correspondida en igual medida por la emulación sonora en la que las imperfecciones del instrumento real están también presentes, como es el caso del ruido de fondo del B4, equivalente virtual del Hammond B3 o las oscilaciones en la afinación del Moog modular de Arturia. Otra tendencia en la creación de instrumentos virtuales es la de la creación de instrumentos sin un referente concreto, que emulan las características del hardware: botones que se pulsan, Knobs o potenciómetros que se giran, faders que se deslizan y teclas o cuerdas que se tocan, tal es el caso de programas como Reaktor de Native Instruments o Max/MSP. Los programas e instrumentos virtuales citados se caracterizan por tener una interface de usuario bastante atractiva y en cierta forma sencilla de usar, sin embargo, estos programas se limitan en determinadas prestaciones; por ejemplo, al recibir datos desde un dispositivo de entrada, pues solo reciben datos desde dispositivos MIDI, lo cual excluye el control de estos programas mediante cualquier dispositivo que no envíe este tipo de datos. Ya que este proyecto se basa en el uso de un dispositivo HID que interactúe con un entorno virtual de control de sonido sin que se requiera el envío de datos MIDI, se puntualiza este documento en el uso del programa Max/MSP el cual permite el

Page 137: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

115

control de sus parámetros mediante casi cualquier tipo de dispositivo que envié datos, dentro de estos, dispositivos HID. 2.3.12 Max/MSP Max/MSP o Max como es llamado comúnmente, es un entorno gráfico orientado a objetos que permite al usuario crear aplicaciones, programas y en general, todo tipo de herramientas personalizadas para la composición de música, audio, video e instalaciones multimedia en tiempo real. Este programa fue desarrollado a mediados de los ochenta en el IRCAM (Institut de recherche et coordination acoustique/musique) en Francia por Miller Puckette y posteriormente implementado, por David Zicarelli y Cycling'74, la compañía que desde 1997 lo comercializa. Max ha sido usado a través de más de quince años por profesionales como compositores, artistas y diseñadores de programas creando herramientas personalizadas para la composición, el diseño de sonido, actuaciones en directo, instalaciones audiovisuales y programas interactivos. Desde que la pionera empresa de aplicaciones musicales Opcode licenció la primera versión de MAX/Opcode en 1990, pocos intuían que este programa, que permitía programar obras musicales basadas en el protocolo MIDI, iba a transformarse en una de las aplicaciones más poderosas la época para la creación musical, control multimedia y procesamiento de señales de todo tipo en tiempo real. Más tarde en 1995, Max continuó siendo desarrollado en el IRCAM, transformándose en una poderosa herramienta de procesamiento de señales en tiempo real a través de un entorno de programación visual para música y multimedia. Max/MSP está siendo cada vez más usado por compositores, instrumentistas, desarrolladores de software, compañías de danza y teatro, y artistas de todas las ramas, que están interesados en la creación de aplicaciones y obras de arte en las cuales tanto el creador como los usuarios puedan interactuar con ella. Max previamente, había sido diseñado con el fin de tener un terreno común con sintetizadores reales y samplers manejando un lenguaje de control usando MIDI o algún otro protocolo. Max tiene numerosas extensiones, de particular interés en este proyecto, sobre todo las extensiones de audio que aparecieron en 1997, trasladadas del programa Pure Data. Estas fueron llamadas MSP y permiten que el audio digital sea manipulado en tiempo real a la vez que los usuarios pueden crear sus propios sintetizadores y efectos-procesadores, tal como es el caso del componente de Max/MSP llamado Plugo, que ofrece la posibilidad de crear efectos de audio Digital y Plug-in’s para plataformas que soportan efectos virtuales como RTAS, VST, entre otras. El funcionamiento de Max/MSP se basa en el desarrollo gráfico de aplicaciones usando su unidad básica, los objetos. Estos se muestran en forma de cuadros que

Page 138: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

116

contienen textos o íconos y son conectados entre si por medio de cables virtuales. Los objetos permiten realizar diferentes tareas mediante un sistema de entrada, proceso y entrega de información; estos objetos, a su vez forman lo que se denomina Pacth, que es en sí un programa que va a cumplir funciones específicas en tiempo real dentro de Max/MSP, procesando la información desde entradas y hacia salidas de la computadora y diferentes periféricos como cámaras, proyectores, impresoras, sistemas de iluminación y sensores. Este proyecto se enfoca en el control del programa Max/MSP mediante un dispositivo HID, dispositivos pertenecientes a una subdivisión del protocolo USB que están destinados a proporcionar cierta clase de interacción entre humanos y computadores. El diseño de nuevos instrumentos musicales digitales es un campo muy amplio, que abarca áreas altamente tecnológicas como la electrónica y tecnologías de sensores, técnicas de síntesis y de procesado de sonido, programación informática, etc. así como disciplinas ligadas al estudio del comportamiento humano, en este caso específico, la interacción humano-computadora. Mucha de la investigación aplicada existente, intenta solucionar partes independientes del problema mediante el diseño de instrumentos o dispositivos que faciliten la interacción humano – computador. 2.3.13 Instrumentos Acústicos y Digitales La mayoría de los instrumentos acústicos se basan en dos principios:

a) Una fuente excitación que pueda oscilar de diferentes maneras bajo el control del ejecutante.

b) Un sistema resonante que acopla las vibraciones del oscilador al aire.

Partes del cuerpo del interprete o ejecutante, generan la energía de la excitación del instrumento, interactuando a través de la interface del instrumento.

En el siglo XVI, Praetorius clasificó los instrumentos de acuerdo a tres categorías cuantificables:

1) El tiempo que un instrumento determinado pueda sostener un tono. 2) La afinación del instrumento, si la tiene. 3) La cantidad de voces y tonos que el instrumento pueda producir. 4) El rango de tonos que puede producir el instrumento.

Los instrumentos tienen diferentes modos de reproducir tonos, se dan los casos de tener una elección continua de tonos como en el violín, mientras que en otros, esta elección se hace de forma discreta, por ejemplo en una guitarra con trastes, o

Page 139: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

117

algunos en los que ni siquiera existe una elección de tonos, por ejemplo los tambores. Esta posibilidad de elección discreta o continua también se aplica a las dinámicas y al timbre de los instrumentos. Al producir una nota en un instrumento, en la fase de ataque, el tono, la intensidad y el timbre evolucionan temporalmente variando sus propiedades pero no pudiendo ser controladas. En algunos casos, una vez las condiciones iniciales sean dadas, la evolución interna de tales parámetros pueden ser controladas de manera muy somera. En una guitarra se puede considerar la elección discreta de tonos, y la evolución de estos puede ser considerada continua. El piano en cambio tiene una elección continua de amplitudes, pero su evolución interna no puede ser controlada. Estas posibilidades condicionan la evolución de los tonos de la siguiente forma:

• Variación del Pitch Cuando la variación del pitch en un instrumento es realizada de manera continua, las variaciones pueden ser aplicadas básicamente de tres maneras: 1. Glissando (variaciones continuas de un pitch a otro). Al usar este mecanismo un instrumento se puede desplazar desde un tono a otro sin necesidad de detenerse entre estos; por ejemplo en un piano no podemos pasar de un tono a otro de forma continua debido a las teclas que separan cada tono. 2. Vibrato (Cambios pequeños y rapidos en la oscilación). 3. Trills (Oscilaciones rápidas entre dos o más tonos).

• Variaciones Dinámicas Cuando la variación de la dinámica es realizada de manera continua, las variaciones pueden ser aplicadas de dos formas básicas: 1. Tremolo (Cambios pequeños y rápidos en la oscilación). 2. Variación continua de las dinámicas (Envolvente controlada).

• Variaciones del Timbre Muy pocos instrumentos permiten un control continuo del timbre. Muchos instrumentos ofrecen cambios discretos en el timbre, por ejemplo en el caso de la combinación de diferentes partes como en un drumset, la utilización diferentes técnicas de ejecución como en un violín o la utilización de diferentes accesorios,

Page 140: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

118

volviendo al ejemplo del drumset, utilizando escobillas o baquetas producen un timbre diferente. Algunos instrumentos ofrecen diferentes regiones tímbricas resultantes de la morfología de los instrumentos, o debido a efectos espectrales como en el caso de las sordinas utilizadas en las trompetas. Los instrumentos acústicos, con algunas excepciones (incluyendo órganos y otros instrumentos de teclado) imponen sus propias reglas de ejecución basadas en su construcción, ningún instrumento permite un completo control sobre su riqueza sonora. La evolución de sus parámetros están sujetos a relaciones complejas, y a características estructurales y morfológicas. En casi todos los instrumentos anteriores al piano, la separación entre la interface de control y el sistema de generación de sonido no era clara, los instrumentos digitales por su lado, pueden ser siempre divididos en un controlador gestual (dispositivo de entrada) que recoge los datos de control provistos por el ejecutante, y el generador de sonido. El controlador es un dispositivo que el intérprete o ejecutante usa para controlar los sonidos almacenados o creados en tiempo real en el computador. Esta separación entre controles gestuales y generadores de sonido fue estandarizado por el protocolo MIDI, lo cual incentivó la creación y desarrollo de controladores alternativos usados para explorar nuevas posibilidades creativas incrementando la flexibilidad musical permitiendo a casi cualquier dispositivo de entrada controlar cualquier generador de sonido. 2.3.14 Dispositivos de Entrada y Controladores Gestuales Un controlador gestual se compone de un arreglo de sensores ensamblados como una parte única en un dispositivo determinado, el controlador gestual es la parte del instrumento digital donde la interacción física toma lugar, entendiendo esta como las acciones del ejecutante o interprete al mover el cuerpo, las manos o por la manipulación de algún objeto. Debido al amplio rango de acciones humanas que pueden ser captadas por el controlador, y dependiendo del contexto de interacción en el que es usado, su diseño variará. El controlador es el primer componente de la cadena del instrumento digital, estos constituyen la interface entre el ejecutante y el sistema de sonidos dentro del computador, esto anterior es logrado capturando y convirtiendo señales análogas continuas y discretas en datos digitales que el sistema pueda entender. Los dispositivos controladores se clasifican, según su diseño y aplicación en:

Page 141: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

119

a) Controladores que emulan instrumentos tradicionales como teclados, saxos, guitarras, violines, baterías etc. Por ejemplo el Digital Horn de Casio detecta mediante sensores de presión de aire el soplo del instrumentista. Existen modelos con digitación y embocadura parecidas a las del saxofón y otros para trompetistas. Las capacidades de control de este tipo de instrumentos son muy limitadas y reducidas en comparación con sus antecesores acústicos.

Figura 52. Controlador MIDI de viento inspirado en un saxofón.

(Sergi Jordà Puig, Hardware MIDI, Guías Monográficas Anaya Multimedia, Madrid 1997)

b) Controladores híbridos o extensiones de instrumentos tradicionales. En esta categoría se incluyen los controladores inspirados en instrumentos tradicionales así como instrumentos tradicionales “aumentados” los cuales incluyen sensores agregados con el fin de aumentar la versatilidad del instrumento como se muestra en la siguiente figura.

Figura 53. John Maclaughlin y Nicolas Collins

(Sergi Jordà Puig, Hardware MIDI, Guías Monográficas Anaya Multimedia, Madrid 1997)

Page 142: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

120

c) Controladores alternativos. Estos son controladores que no siguen el diseño de algún instrumento tradicional. Los controladores que emulan instrumentos tradicionales, son interpretados de la misma forma que sus antecesores acústicos, esto representa una dificultad técnica a la hora de interpretarlos. Por otro lado, los controladores alternativos, permiten otra forma de interpretación de acuerdo al diseño deseado. Un ejemplo de estos controladores alternativos es el instrumento The Hands, creado por Michel Waisvisz el cual recoge datos desde sensores puestos en las manos.

Figura 54. Michel Waisvisz interpretando el instrumento “The Hands”

(www.crackle.org/Thehands)

2.3.15 Sensores 2.3.15.1 Introducción

Los sensores son cada vez más comunes en nuestra vida diaria. Un automóvil, por ejemplo, utiliza docenas de ellos para permitirnos controlar sus funciones básicas. Sin embargo, este tipo de sensores están muy limitados, puesto que, están colocados estáticamente en un lugar, y carecen de la capacidad de analizar o actuar sobre los datos que detectan, y simplemente, su misión se limita a enviar las mediciones que han registrado a un procesador central.

Las nuevas tecnologías están facilitando que cada vez haya más sensores en el mercado, capaces de procesar enormes cantidades de datos para ayudar a mejorar la interacción entre hombre y maquina, ya sea de forma industrial, o en el campo artístico.

Page 143: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

121

Los investigadores hablan ya de una nueva generación de sensores, capaces de organizarse así mismos y conectarse en red de manera inalámbrica, y que podrían generar una revolución similar a la que tuvo la aparición de Internet en los años 70 del siglo pasado. Potencialmente, dicen los expertos que estos sensores podrían generar redes que vigilaran la mayoría del planeta, desde los modelos de compra de la gente hasta los movimientos de personas sospechosas. Si a eso se le une los avances realizados en Inteligencia Artificial, algunos expertos vaticinan que en los próximos cinco años podrían incluso crearse sensores con inteligencia compleja. 2.3.15.2 Definición

Un sensor, es un dispositivo diseñado para recibir información de una magnitud del exterior y transformarla en otra magnitud, normalmente eléctrica, que pueda ser cuantificable y manipulable.

Estos dispositivos están construidos mediante el uso de componentes pasivos (resistencias variables, o todos aquellos componentes que alteran su magnitud en función de alguna variable), y la utilización de componentes activos.

Existen varias tecnologías para implementar los sistemas táctiles, cada una basada en diferentes fenómenos y con distintas aplicaciones. Los sistemas táctiles más importantes son:

• Sensor táctil por infrarrojos • Sensor táctil mediante touchpad capacitivo • Siensor táctil de onda acústica superficial, (SAW) • Sensor táctil resistivo

2.3.15.3 Sensor Táctil por Infrarrojos El sistema más antiguo y fácil de entender es el sistema de infrarrojos. En los bordes de la superficie, existen unos emisores y receptores de infrarrojos. En un lado de la superficie están los emisores y en el contrario los receptores. Se tiene una matriz de rayos infrarrojos vertical y horizontal. Al pulsar con el dedo o con cualquier objeto, sobre la superficie se interrumpe un haz infrarrojo vertical y otro horizontal. El computador detecta que rayos han sido interrumpidos, y reconoce de este modo dónde se ha pulsado y actúa en consecuencia.

Page 144: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

122

Este sistema tiene la ventaja de la simplicidad y de no oscurecer la superficie, pero tiene claras desventajas: son caras y voluminosas, muy sensibles a la suciedad y pueden detectar fácilmente falsas pulsaciones (una mosca que se pose, por ejemplo).

Figura 55. Sensor táctil por Infrarrojos

(http://www.ecojoven.com/dos/05/tactil.html) 2.3.15.4 Sensor Táctil Mediante Touchpad Capacitivo Son utilizados normalmente en los computadores portátiles para suplir al ratón. El touchpad está formado por una rejilla de dos capas de tiras de electrodos, una vertical y otra horizontal, separadas por un aislante y conectadas a un sofisticado circuito. El circuito se encarga de medir la capacidad mutua entre cada electrodo vertical y cada electrodo horizontal. Un dedo situado cerca de la intersección de dos electrodos modifica la capacidad mutua entre ellos al modificarse las propiedades dieléctricas de su entorno. El dedo tiene unas propiedades dieléctricas muy diferentes a las del aire. La posición del dedo se calcula con precisión basándose en las variaciones de la capacidad mutua en varios puntos hasta determinar el centroide de la superficie de contacto. La resolución de este sistema es impresionante, hasta 1/40 mm. Además se puede medir también la presión que se hace con el dedo. No se pueden usar lápices u otros materiales no conductores como punteros. Es muy resistente al entorno, soporta perfectamente polvo, humedad, electricidad estática, etc. Además es ligero, fino y puede ser flexible o transparente.

Page 145: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

123

Figura 56. Sensor táctil Mediante Touchpad Capacitivo

(http://www.ecojoven.com/dos/05/tactil.html)

2.3.15.5 Sensor Táctil de Onda Acústica Superficial (SAW) A través de la superficie del cristal se transmiten dos ondas acústicas inaudibles para el hombre. Una de las hondas se transmite horizontalmente y la otra verticalmente. Cada onda se dispersa por la superficie rebotando en unos reflectores acústicos.

Figura 57. Sensor táctil de onda acústica superficial

(http://www.ecojoven.com/dos/05/tactil.html)

Page 146: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

124

Las ondas acústicas no se transmiten de forma continua, sino por trenes de impulsos. Dos detectores reciben las ondas, uno por cada eje. Se conoce el tiempo de propagación de cada onda acústica en cada trayecto. Cuando el usuario toca con su dedo en la superficie, el dedo absorbe una parte de la potencia acústica, atenuando la energía de la onda. El circuito controlador mide el momento en que recibe una onda atenuada y determina las coordenadas del punto de contacto. Además de las coordenadas X e Y, la tecnología SAW es capaz de detectar el eje Z, la profundidad, o la presión aproximada que se ha ejercido con el dedo, puesto que la atenuación será mayor cuanta más presión se ejerza. 2.3.15.6 Sensores Resistivos (de Presión)

Los sensores de presión sofisticados funcionan a base de celdas de carga y de sus respectivos amplificadores electrónicos, basándose en el conocido puente de Wheatstone. Este sensor es básicamente una resistencia variable en un sustrato que puede ser deformado, y lo cual ocasiona el cambio en el valor de la resistencia. En el caso de los interruptores de presión por diafragma, la fuerza provocada por la presión censada actúa sobre un resorte, el cual al ser vencido actúa sobre un Microinterruptor. Es obvio que el resorte determina el rango de presión de operación.

Figura 58. Sensor resistivo de Presión

(http://www.ecojoven.com/dos/05/tactil.html)

Page 147: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

125

Los sensores táctiles propiamente dichos están formados por dos capas de material conductor transparente, con una cierta resistencia a la corriente eléctrica, y con una separación entre las dos capas. Cuando se toca la capa exterior se produce un contacto entre las dos capas conductoras. Un sistema electrónico detecta el contacto y midiendo la resistencia, puede calcular el punto de contacto. Hay varios tipos de sensores resistivos según el número de hilos conductores que usan (entre cuatro y ocho), pero todos se basan en el mismo sistema.

• Cada capa conductora tratada con un material conductor resistivo transparente, normalmente óxido de indio y estaño (In2O3)9(SnO2), tiene una barra conductora en dos lados opuestos. Una de las capas sirve para medir la posición en el eje X y la otra en el eje Y.

• Se conecta la entrada X positiva a un convertidor analógico-digital. Se

coloca una tensión entre los terminales Y positiva y Y negativa. El convertidor analógico-digital, convierte la tensión analógica generada al pulsar sobre la superficie.

• Un microcontrolador medirá esta tensión y calculará la coordenada "X" del

punto de contacto.

• Después se conecta al convertidor analógico-digital la terminal Y positiva y una tensión continua entre los terminales X positivo y X negativo repitiendo el mismo proceso para calcular la coordenada "Y" del punto de contacto.

En algunos tipos de superficies se puede medir además la coordenada Z o presión que se ha ejercido sobre el sensor táctil. Para esto hay que conocer la resistencia de cada "tabla". En este tipo de medidas complejas se necesitan más terminales para calibrar el dispositivo, ya que la resistencia de las "tablas" varía con la temperatura ambiente. Los transductores resistivos tienen la ventaja de que pueden ser usados con cualquier objeto, un dedo, un lápiz, un dedo con guantes, etc., además son económicos, fiables y versátiles.

Page 148: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

126

2.3.15.6.1 Características Estáticas de los Sensores Resistivos

• Campo: Rango de valores de entrada. • Resolución: Es el cociente entre la longitud de una arista y el número de

sensores en ella. • Precisión: Desviación máxima entre valor real y teórico. • Repetibilidad: Desviación máxima entre valores de salida al medir una

misma entrada. • Alinealidad: Máxima desviación entre la respuesta real y la lineal. • Sensibilidad: Variación de salida por unidad de magnitud de entrada. • Ruido: Desviación de la salida por el efecto del ruido asociado al sensor. • Histéresis: Variación del crecimiento o disminución progresiva de la

medida. 2.3.16.6.2 Características Dinámicas

• Velocidad de respuesta. • Respuesta en frecuencia. • Estabilidad y desvío.

3. METODOLOGIA 3.1 ENFOQUE DE LA INVESTIGACIÓN

Esta investigación tiene un enfoque empírico – analítico, ya que busca la implementación de un controlador continuo, basándose en la aplicación de conceptos técnicos, físicos, electrónicos e ingenieríles con el fin de poder analizar teorías, fenómenos y leyes que proporcionen herramientas para realizar un diseño donde se implementen tecnologías que faciliten la conexión del dispositivo a un computador, permitan el control en tiempo real del entorno virtual en el que se trabaje y el desarrollo de un dispositivo diferente a los controladores convencionales.

Page 149: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

127

3.2 LINEA DE INVESTIGACION DE USB/ SUB-LINEA DE FACULTAD/ CAMPO TEMATICO DEL PROGRAMA

La línea de investigación a la que pertenece el proyecto es a la de tecnologías actuales y sociedad, puesto que en el mundo contemporáneo donde los avances tecnológicos son la primera preocupación de las agrupaciones orientadas por ir a la vanguardia para ayudar a mejorar la calidad de vida de las personas, se ve la importancia de actualizar regularmente los conocimientos en las diferentes áreas en las que se aplica la tecnología. El ámbito musical esta fuertemente ligado en todos sus aspectos con la tecnología de punta, tanto en su forma de generación, grabación y reproducción como en la de ejecución, brindando día a día nuevas perspectivas que realzan la creatividad y el nacimiento de tendencias de vanguardia para nuevos sonidos y diferentes tipos de interpretación.

La sublinea de investigación de la facultad a la que pertenece el proyecto es la de procesamiento de señales digitales y/o analógicas debido a que se hace uso de teorías relacionadas con filtrado, codificación, transmisión, estimación, detección, análisis, reconocimiento, síntesis, registro y reproducción de señales de audio en el dominio del tiempo y de la frecuencia para la construcción de un dispositivo que convierta señales análogas en digitales y transmita los datos obtenidos a un computador con el fin de controlar procesos de audio dentro de un Software.

El campo temático del programa se enfoca en el de diseño de sistemas de sonido, pues se diseña e implementa un dispositivo controlador con el fin de procesar, controlar y transmitir señales para brindar a la persona que use el dispositivo una mejor comprensión y manipulación de este, permitiéndole un acercamiento hacia el desarrollo tecnológico.

3.3 HIPOTESIS

El desarrollo de un dispositivo que logre controlar parámetros de sonido en tiempo real mediante la comunicación con un computador vía USB-HID implica la programación de un microcontrolador que permita realizar conversión de información análoga suministrada por un mecanismo de control a datos digitales y su posterior transmisión según la especificaron USB, con el fin establecer una comunicación entre este hardware y el software Max/MSP.

Page 150: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

128

3.4 VARIABLES 3.4.1 Variables Independientes

• Mecanismo de control del dispositivo

• Características operativas del microcontrolador

• Sistema operativo sobre el cual funciona el dispositivo controlador 3.4.2 Variables Dependientes

• Latencia del dispositivo controlador • Linealidad en la conversión análoga a digital de la información suministrada

por el mecanismo de control del dispositivo

• Programación del microcontrolador

• Reconocimiento y comunicación entre el dispositivo controlador y el entorno virtual de audio.

4. DESARROLLO INGENIERIL El diseño del dispositivo controlador se realizó en 3 etapas:

• Implementación de la interfaz USB-HID. • Determinación del tipo de mecanismo a usar en la interfaz para el control

continuo de parámetros relacionados con algoritmos de síntesis de audio del programa MAX/MSP.

• Construcción y Ergonomía del dispositivo controlador.

Page 151: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

129

4.1 Implementación la interfaz USB-HID Para la construcción de la interfaz propuesta en este proyecto se investigó diferentes procesos de comunicación de un computador con el mundo exterior. El objetivo de este proceso fue buscar los requerimientos o pasos a seguir para el desarrollo de una interfaz USB mediante la cual se capture y convierta información análoga desde (transductores) un sensor en información digital que permita el control continuo de parámetros de síntesis de audio en tiempo real sobre un software. Los requerimientos para desarrollar dicha aplicación son los siguientes:

• Un microcontrolador que soporte la interfaz USB y permita la conversión Análoga a Digital

• Un programa sobre el periférico para transmitir la información en cualquier lenguaje de Programación.

• Herramientas para programar el Microcontrolador.

• Manejo de un lenguaje de programación

• Teoría del Protocolo USB.

De acuerdo a estos requerimientos se eligió la implementación del circuito AVR-HID diseñado por Mark Marshall69. Este circuito permite 8 canales de conversión A/D de 10 bits y la posterior comunicación con un computador mediante conexión USB; utiliza los estándares USB (Universal Serial Bus) y HID (Human interface device o dispositivo de interfaz humana) creando un sistema Plug And Play que permite trabajar un gran numero de Software dentro de los sistemas operativos Microsoft Windows, Mac OX y Linux. El proceso y los elementos necesarios para la implementación de este circuito o interfaz es el siguiente: 69 M. Marshall. AVR-HID: “Building a USB sensor interface “ de la página Web, http://sensorwiki.org/index.php/Building_a_USB_sensor_interface

Page 152: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

130

4.1.1 Elementos Hardware 4.1.1.1 Microcontrolador ATMEGA16 Es el cerebro del dispositivo, realiza la conversión analógica digital y establece la comunicación con el computador a través del bus USB.El ATMEGA16 es un microcontrolador CMOS de 8 bits de bajo poder basado la arquitectura RISC. Con la ejecución de potentes instrucciones en un solo ciclo de reloj, el ATMEGA16 logra un rendimiento de proceso de aproximadamente 1MIPS por Mhz permitiendo optimizar el consumo de energía en relación con la velocidad de procesamiento. Otra característica importante de este microcontrolador es que posee buena memoria o una memoria mas que suficiente para nuestra aplicación, ofreciéndonos 16 K Bytes de memoria de programa Flash (Programable In-System), 1 K Byte de SRAM interna y 512 Bytes de EEPROM. El ATMEGA16 también ofrece un conversor analógico a digital (ADC) de 8 canales y 10 bits usado para las entradas de los sensores resistivos y potenciómetros que permiten controlar los parámetros de síntesis de audio.El ATMEGA16 no posee salida USB pero ésta se puede implementar fácilmente en el sistema gracias a que su voltaje de operación puede variar desde 2.7 hasta 5.5 voltios (Vcc). No se escogió un microcontrolador de ATMEL con salida USB debido a los costos (este microcontrolador es de mas bajo costo que la mayoría de los microcontroladores con salida USB), además la mayoría de microcontroladores con salida USB poseen patas demasiado pequeñas por lo cual, no se pueden montar sobre protoboard para realizar pruebas, ellos necesitan ser montados directamente sobre una baquela (de montaje superficial).

Figura 59. Pines del microcontrolador ATMEGA16

(ATMEGA16 datasheet)

Page 153: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

131

4.1.1.2 Conector USB Permite conectar a través de un cable el puerto USB del computador al dispositivo. La alimentación del dispositivo se realiza a través del bus USB. 4.1.1.3 Cristal Es un elemento Piezo-eléctrico que provee los ciclos de reloj para el microcontrolador. El microcontrolador ATMEGA16 tiene unos relojes internos configurables de hasta 8 Mhz pero para la implementación de la comunicación a través del bus USB no es suficiente por lo cual se utilizó un cristal de 12 Mhz. 4.1.1.4 Socket de 40 pines En este caso el Socket corresponde a una base que se coloca en la placa del circuito impreso antes de colocar el microcontrolador; esto trae varias ventajas como facilitar la colocación del microcontrolador de manera que se pueda retirar cuando sea necesario sin necesidad de desoldar, además el microcontrolador no es expuesto a altas temperaturas que pueden dañarlo ya que no se solda directamente sobre él, sino que se solda sobre el Socket. Se usa un Socket de 40 pines debido a que el microcontrolador posee 40 pines. 4.1.1.5 Puertos de los Sensores Resistivos y los Potenciómetros De la misma forma que el ítem anterior, estos puertos se soldan sobre la placa para luego conectar los respectivos potenciómetros. Estos puertos poseen tres contactos: uno para los 5 voltios de alimentación, otro para Tierra y otro para la transmisión de la señal; los 5 voltios y la Tierra son usados para activar el sensor o el potenciómetro, y el contacto de la señal es usado para la salida de información análoga desde el sensor o el potenciómetro. 4.1.1.6 Resistencias Se necesitan las siguientes resistencias:

Page 154: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

132

Tabla 15. Resistencias necesarias para el montaje de la interfaz USB

Cantidad

Valor (Ohms)

Descripción

1 68 Protege el Led de la corriente.

1

1.5K

Resistencia de Pull Up entre D- y Vcc para que el dispositivo sea reconocido como Low Speed.

2

68

Requerimiento para dispositivos de Low speed y Full speed.

4.1.1.7 Diodo Led Indicará cuando el dispositivo se encuentre encendido o apagado. Estará encendido cuando se halla hecho la conexión con el puerto USB de un computador. 4.1.1.8 Cable USB Macho-macho Es el cable encargado de conectar el dispositivo al computador. 4.1.1.9 Cable Paralelo El puerto y el cable de programación “In-system” (ISP) se usa para conectar el dispositivo programador a la interfaz y así poder descargar el Firmware o programa realizado para el microcontrolador. 4.1.1.10 Baquela 10 x 10 cms Baquela de cobre donde se realiza el montaje de los componentes nombrados anteriormente.

Page 155: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

133

4.1.1.11 Circuito

Figura 60. Circuito de montaje de la interfaz AVR-HID

4.1.2 Herramientas de Software La programación del microcontrolador se realizó en lenguaje C utilizándose las siguientes herramientas de Software para el proceso.

Page 156: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

134

4.1.2.1 WinAVR Esta es una herramienta de compilación para que el programa en lenguaje C, sea traducido a código hexadecimal (binario). El programa WinAVR tiene diferentes herramientas entre las cuales se destaca “Programmers Notepad 2”, el cual es un editor de texto plano que soporta diferentes lenguajes de programación. Desde este programa se invocan otras aplicaciones o comandos que son originarias del sistema operativo UNIX/LINUX como por ejemplo: make, gcc, avr-gcc, binutils, entre otros. Básicamente los pasos principales son:

• Desarrollo del código en un lenguaje de programación (en este caso C). • Se hace un archivo llamado “Makefile” o “makefile” dentro de la misma

carpeta con los comandos que desean ser ejecutados. Los comandos se pueden colocar bajo “all, clean o program” para que al ser llamados por medio de Programmers Notepad 2 se ejecuten los comandos que estén en cada campo. A continuación se muestra un ejemplo de un archivo Makefile para aclarar un poco: all: C:\Archivos de programa\Microsoft Office\OFFICE11\WINWORD XXX.doc clean: C:\Archivos de programa\Microsoft Office\OFFICE11\EXCEL Al ejecutar Make all, en Programmers Notepad 2, se abrirá el programa de word con el archivo XXX.doc, mientras que al ejecutar Make clean se abrirá el programa Excel pero no abrirá ningún archivo. Para nuestra aplicación se necesita el comando avr-gcc y los archivos para obtener el archivo .hex

• Crear los archivos en el lenguaje deseado.

• Existe una aplicación dentro del WinAVR para simular, pero no se hizo uso de ella ya que la prueba de conexión con el computador se realizó directamente teniendo cuidado de no de dañar el puerto del computador por altas tensiones o cortos.

Page 157: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

135

4.1.2.2 PonyProg Esta herramienta se usa para descargar al microcontrolador el código en formato binario a través del puerto paralelo de manera serial. Los pasos a seguir son:

• Probar las conexión con el microcontrolador a través de la opción Setup>>Interface Setup…

• Abrir el archivo .hex

• Descargarlo al microcontrolador por medio de Command>>Program

Para programar el microcontrolador se realiza el siguiente montaje:

Figura 61. Montaje de programación del microcontrolador ATMEGA16

En la parte izquierda del esquema se puede apreciar el puerto paralelo y contiguo a él los nombres de los pines del microcontrolador. Las resistencias son colocadas para proteger el puerto paralelo. En este proceso, se debe suministrar al microcontrolador alimentación externa y poner el cristal del reloj si en algún

Page 158: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

136

momento es necesario. A continuación se muestra el montaje que se hizo para programar el microcontrolador:

Figura 62. Fotos del montaje de programación del microcontrolador ATMEGA16 (cristal, resistencias, fuente de poder y cable paralelo de programación)

Page 159: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

137

4.1.2.3 USBLyzer Este programa actúa como un espía de los puertos USB que tiene el ordenador y se utiliza para observar los datos obtenidos como también la configuración final del dispositivo desde Windows. En la siguiente sección se observarán estos resultados70. 4.1.3 Firmware El Firmware del dispositivo esta compuesto por dos elementos principales:

• Conversión analógica-digital para obtener datos de los sensores resistivos y los potenciómetros.

• Comunicación a un computador por medio del bus USB.

La primera parte se basa en un conjunto de funciones ya predeterminadas para configurar, iniciar y capturar las señales de voltaje que se obtienen por medio del conversor. Para este fin se usan las siguientes librerías (archivos) de libre acceso:

En el archivo principal (a2d.c), están declaradas las funciones que se llaman desde el código principal como son a2dInit, a2dConvert8bit, entre otras. Este archivo utiliza funciones declaradas y definiciones en los siguientes dos archivos:(global.h y a2d.h). La parte relacionada con la comunicación a través del bus USB se basa en Firmware para microcontroladores AVR que no tienen un hardware especializado para ello71. Objective Development es la empresa desarrolladora de este Firmware de acceso libre a su utilización mientras que no se tengan intereses comerciales.

70 Para mas información sobre este programa referirse a la pagina Web, http://www.usblyzer.com/ 71 Sobre las ventajas de utilizar este firmware referirse a Objective Development en la pagina Web, http://www.obdev.at/products/avrusb/index.html

Page 160: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

138

El trabajo ha sido desarrollado sobre un proyecto de ejemplo72, donde se implementa un teclado mediante el microcontrolador Atmega8. Este Firmware base consta de unos archivos que no se modifican (están hechos para implementar el bus USB) y de unos parámetros que el diseñador de otros archivos especificará que son modificables (deben serlo), por ejemplo el archivo usbconfig.h donde se determinan parámetros importantes para los reportes que utilizan los dispositivos HID (Human Interface Device) en el proceso de comunicación con un computador. 4.1.4 Programación de la Interfaz USB En base al Firmware USB ya obtenido, se realizaron las modificaciones necesarias para nuestra aplicación, integrando librerías con el fin de poder usar los conversores A/D, y una vez obtenido esto, poder enviar los valores a través del bus USB; esta estructura principal y general se realiza en el archivo main.c. Ya terminado el código, se compila por medio del programa WinAVR. Después de generar el archivo con extensión .hex, éste se puede cargar en el programa Ponyprog para finalmente programar el microcontrolador con el circuito antes mencionado. Después de realizar este proceso se conecta el dispositivo a un puerto USB del computador para comprobar que sea reconocido por el sistema operativo Windows XP (se puede empezar a utilizar). 4.1.5 Código de Programación A continuación se explican las características principales del código realizado en lenguaje C dentro del compilador WinAVR para programar el microcontrolador. Al principio del código del programa realizado se encuentra la estructura general que llama a otros archivos, o llama librerías dentro del programa; con el comando “#include” damos el nombre de las librerías que queremos incluir (dentro de cada librería se encuentran funciones que ya vienen predeterminadas). Las primeras cuatro librerías que se incluyen son las que vienen con el programa AVR y permiten manejar funciones propias del microcontrolador, tales como llamar interrupciones a través de este.

72 Para el ejemplo referirse a HIDKeys en la pagina Web, http://www.obdev.at/products/avrusb/hidkeys.html

Page 161: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

139

Las siguientes 2 librerías se incluyen para realizar funciones necesarias relacionadas con el sistema de transmisión USB que se implementa en el dispositivo. Seguidamente se incluyen dos librerías mas para la conversión análoga a digital de los datos. Finalmente los comandos “reportBuffer[8]” e “idleRate” permiten trabajar con la memoria del microcontrolador, realizando un arreglo de 8 bytes para enviar mediante el puerto USB73. Después de realizar este proceso, a continuación se hace la descripción de los datos a enviar para que el sistema operativo los reconozca. Para tal fin se usó la herramienta o programa “HID Descriptor Tool” descargada de la página Web, www.usb.org. Por medio de este programa se determina o se define que tipo de dispositivo vamos a crear: un Mouse, un keyboard, un Gamepad, un Joystick, etc. En este trabajo se definió el dispositivo como un Joystick. Después de realizar este proceso, el programa HID Descriptor Tool determina unos bytes constantes en valor hexagecimal que permiten definir funciones y características del Joystick dentro del reporte descriptor o “report descriptor” para USB y específicamente para HID. El reporte descriptor va a ser leído por Windows permitiéndole entender que datos le estamos enviando (por ejemplo, datos de movimiento en los ejes X, Y, y Z, rango de valores, teniendo un mínimo de cero y un máximo de 255 = 8 bits, etc.) La importancia del anterior procedimiento radica en que se define el envío de 8 bytes que deben ser reconocidos por Windows, por lo tanto, este reporte descriptor permite describir las características de los 8 bytes a enviar para que el sistema operativo los pueda aceptar y validar.74 Los comandos de la siguiente parte del código, hacen referencia a una función propia de USB. Aquí se determinan los modos de transmisión empleados; este, por ser un dispositivo HID emplea dos modos de transmisión: uno de control y otro de interrupción. El modo de control corresponde a la comunicación con Windows y la interrupción es la forma de envío de los datos.

73 Referirse al ANEXO A 74 Referirse al ANEXO B

Page 162: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

140

Según esta configuración se envían los datos de acuerdo a unas variables ya definidas por la base de USB.75 En la siguiente parte empieza el código principal del programa: Primero se definen las variables i, j, k con el comando “uchar” que significa 8 bits (1 byte); cuando se trabaja con microcontroladores AVR también se puede definir con el comando uint8_t (unsigned = sin signo, int = entero, 8 bits). El “idleCounter” corresponde al numero de la variable según USB. A continuación se definen tres arreglos con unas condiciones iniciales:

• Un arreglo denominado “ultimovalor” correspondiente a 7 registros que tienen valor inicial igual a cero.

• Un arreglo denominado “valores” correspondiente a 4 registros con valores iniciales iguales a cero.

• Finalmente, una variable denominada “cambiovalor” que determina el cambio de valores y esta definida con un valor igual a cero.

Después se define una variable sin signo (unsigned = no tiene en cuenta signo positivo o negativo en los valores obtenidos según el bit mas significativo) de 16 bits = 2 bytes que se llama “canal” y se inicializa en cero. Se usa una variable de 16 bits en vez de una de 8 bits con el fin de ampliar el rango de valores de 82 (0-255) a un rango de 162 (0-65535) lo que me permite almacenar valores mas grandes para realizar los ciclos de filtrado (un rango de valores de 82 no alcanza para realizar el proceso de filtrado).76 Posteriormente, se anexa al código principal otro código donde se determinan las funciones para la implementación de la comunicación USB en el microcontrolador. Este código de implementación USB fue desarrollado por programadores para permitir la transmisión de datos mediante el bus serial universal en los microcontroladores ATMEGA. Dentro del código se definen diferentes características de configuración para el microcontrolador. Por ejemplo, se configuran todos los pines para que sean de salida excepto el puerto o pin PD2, el cual será de entrada y estará encargado de la interrupción; también se configura el microcontrolador para que en el circuito se incluya una resistencia de Pull-Up (entre D- y Vcc) permitiendo que el dispositivo sea reconocido como un dispositivo

75 Referirse al ANEXO C 76 Referirse al ANEXO D

Page 163: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

141

de baja velocidad (Low Speed); igualmente se realiza un contador para permitir un Reset del USB requerido por el “Watchdog Reset” propio del microcontrolador AVR.77 Después de anexar el código de implementación de la comunicación USB se digitan unos comandos para llamar funciones incluidas en las librerías definidas al principio del código del programa, pudiendo de esta forma inicializar el puerto encargado de la conversión análogo a digital e inicializar la comunicación con el dispositivo a través del puerto USB. Como continuación del anterior procedimiento se encuentra una estructura con diferentes ciclos o lazos determinados mediante la función “for”. Primero se encuentra un ciclo principal que siempre se repite controlando el proceso de interrupciones para realizar el envío de datos. Dentro de este ciclo principal se encuentra otros ciclos que permiten realizar diferentes funciones, entre ellas:

• Ciclo “for” para permitir 7 canales de conversiones A/D

• Ciclo “for” para crear un filtro en todos los canales de conversión; el filtro toma una muestra de 8 datos que se promedien evitando que los valores obtenidos de la conversión sean inestables.

• Mediante la función “if” se pone una condición para evaluar si se presentan

cambios en los valores; si varían se indica que hay un nuevo dato a enviar. Por ejemplo, si el valor de cualquier sensor que se encuentre conectado a uno de los 7 canales de conversión no varia, no se envía ningún dato; si por el contrario existe una variación en el valor, se envía el valor del dato que cambio.

• Nuevamente mediante la función “if” se pone una condición que permite restringir el envío de valores menores a 0,3 voltios en el controlador de cinta.

• Se anexa el código de un contador de 22 milisegundos ya programado

donde se evalúan unas banderas o variables definidas dentro de los microcontroladores AVR para manejar la “transmisión por interrupciones” dentro de la comunicación USB.

• Finalmente, mediante la función de condición “if” se establece que si la

interrupción esta lista y además se presenta el cambio de algún valor en la conversión, lo que tiene que hacer el microcontrolador es poner esa

77 Referirse al ANEXO E

Page 164: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

142

variable en cero, para que al repetir el ciclo o lazo principal solamente envíe el ultimo valor recibido del sensor; además al cumplirse esta condición, al mismo tiempo se llama a la función “usbSetInterrupt” para enviar el “reportbuffer” donde se encuentran guardados los valores del numero de registros que este arreglo posee como también el valor de su tamaño (en este caso el tamaño esta definido al principio del código como 8 bytes).

Por ultimo, es importante tener en cuenta el archivo de configuración que tiene el Firmware de USB, llamado “usbconfig.h”, porque en él, se definen los pines donde van las líneas D+ y D-, la corriente máxima que se utilizará en el bus, el tipo de dispositivo, número de Endpoints entre otros78. El código de programación se vera dentro del programa “Programmers Notepad 2” que viene con el WinAVR de la forma como se muestra en la figura 63. Figura 63. Vista de la programación dentro del programa “Programmers Notepad 2” del WinAVR

78 Para el contenido del archivo “usbconfig.h” referirse al ANEXO G

Page 165: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

143

En la parte inferior de la figura se encuentra el resultado de la compilación. Cuando el programa no presenta errores al final muestra el resultado Process Exit Codes: 0. Para descargar el código escrito anteriormente al microcontrolador en formato binario a través del puerto paralelo de manera serial se debe cargar en el programa Ponyprog el archivo .hex y posteriormente hacer uso del comando “Command>>Program”. El archivo .hex se verá en el programa Ponyprog de la siguiente forma:

Figura 64. Archivo .hex en el programa Ponyprog

Después de realizar este procedimiento ya podemos conectar la interfaz al computador mediante el cable USB para que el Sistema Operativo Windows XP la reconozca y finalmente pueda hacerse uso de ella.

Page 166: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

144

4.1.6 Utilización de la Interfaz USB Después de que la interfaz USB sea reconocida por el sistema operativo se puede empezar a utilizar, pero antes de trabajar con el software MAX/MSP se hace necesario comprobar el correcto funcionamiento de este dispositivo. Los parámetros, valores y el status o estado del dispositivo mostrados a continuación fueron obtenidos mediante el programa USBlyzer. El dispositivo utiliza 5 descriptores para poder establecer el correcto funcionamiento con el Host. El resultado obtenido fue: Connection Status Device connected Current Configuration 1 Speed Low Device Address 0001h Number Of Open Pipes 1 Device Descriptor: bLength 12h bDescriptorType 01h bcdUSB 0101h bDeviceClass 00h bDeviceSubClass 00h bDeviceProtocol 00h bMaxPacketSize0 08h 8 bytes idVendor 16C0h idProduct 05DFh bcdDevice 0100h 1.00 iManufacturer 01h "David_Fabian" iProduct 02h "Revolution Pad" iSerialNumber 00h bNumConfigurations 01h Configuration Descriptor: bLength 09h bDescriptorType 02h wTotalLength 0022h bNumInterfaces 01h bConfigurationValue 01h iConfiguration 00h bmAttributes 80h Bus Powered bMaxPower 32h 100 mA Interface Descriptor: bLength 09h bDescriptorType 04h bInterfaceNumber 00h bAlternateSetting 00h bNumEndpoints 01h bInterfaceClass 03h Human Interface Device

Page 167: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

145

bInterfaceSubClass 00h bInterfaceProtocol 00h iInterface 00h HID Descriptor: bLength 09h bDescriptorType 21h bcdHID 0101h bCountryCode 00h bNumDescriptors 01h bDescriptorType 22h HID Report wDescriptorLength 001Dh Endpoint Descriptor: bLength 07h bDescriptorType 05h bEndpointAddress 81h 1 In bmAttributes 03h Interrupt wMaxPacketSize 0008h 8 bytes bInterval 0Ah 4.2 Mecanismo de Control Después de investigar la existencia de un gran numero de métodos para lograr información continua, comenzando desde métodos que no utilizan contacto tales como sensores por ultrasonido e infrarrojos hasta métodos físicos que utilizan potenciómetros de varios tipos, se determinó que el dispositivo estaría controlado mediante el uso de sensores resistivos táctiles o de contacto. La razón de esta decisión radica en que los sensores que utilizan métodos en los cuales no se involucra el contacto del usuario con el dispositivo pueden hacer difícil un control preciso y en ocasiones pueden requerir el sostenimiento de los músculos del brazo en posiciones no naturales por largos periodos de tiempo, lo cual puede volverse incomodo para el ejecutante o interprete. Opuesto a esto, cuando el contacto con el sensor por parte del ejecutante es requerido se puede obtener un sentido de posición mediante reacciones táctiles informativas. Estas reacciones informativas sirven como referencias a través de la cuales se aprenden relaciones entre sensaciones y sonidos que pueden ser generados o construidos; todas estas ventajas son obtenidas mediante los sensores elegidos para la implementación del dispositivo controlador de este proyecto. Un sensor resistivo de contacto básicamente corresponde a una superficie que se activa cuando es presionada mediante un dedo pudiendo detectar la posición en la que se hizo contacto.

Page 168: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

146

Aunque los sensores de contacto son similares a un potenciómetro tradicional tipo Slider en el sentido en que ambos detectan una posición a lo largo de una tira, el sensor de contacto difiere en que mantiene un estado inactivo cuando este no es tocado. Cuando el ejecutante lo toca de nuevo, la siguiente posición no tiene nada que ver con la anterior. En contraste, los sliders o deslizadores, retienen su posición cuando estos no son tocados. Usualmente los sensores de contacto pueden ser de dos clases:

• Posición de contacto de un solo eje: formado por tiras lineales posicionadas horizontal o verticalmente

• Posición de contacto de dos ejes: formado por tiras dispuestas en cuadros que pueden determinar una posición en dos dimensiones

Para la construcción de estos sensores se pueden emplear diferentes tecnologías entre las que encuentran los métodos capacitivos, resistivos o simplemente por contacto eléctrico. Teniendo en cuenta todo lo anterior se estableció un diseño para el dispositivo controlador en el cual se usa un sensor de contacto de un solo eje y un sensor de contacto bidimensional o Touch Pad. El proceso de construcción de cada uno de estos sensores fue el siguiente: 4.3 Construcción y Ergonomía 4.3.1 Construcción del Controlador de Cinta Este controlador de cinta hace referencia al sensor de contacto de un solo eje. Para su construcción se emplea el método resistivo, su esquema eléctrico se muestra en la siguiente figura:

Figura 65. Esquema electrónico del controlador de cinta

Page 169: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

147

Para la construcción del controlador de cinta son necesarios los siguientes materiales:

• Alambres de cobre (material conductivo) • Cinta de video HI8 (material resistivo)

• Espuma de 6 mm de grosor

• Licra

• Vara de madera

• Pegante

• Cinta aislante

El elemento mas importante de este tipo de sensor y en el cual se debe tener mayor cuidado es la elección de la cinta que va a proporcionar resistencia según varíe su longitud (principio de funcionamiento del método resistivo). En este caso, se usó una cinta de video HI8 debido que al medir su resistencia en una longitud de aproximadamente una pulgada proporcionó un valor en el orden de los KΩ. Igualmente se realizó este proceso con cinta de audio y de VHS sin obtener un valor de resistencia, razón por la cual no se pudo utilizar estos tipos de cinta para el controlador. La cinta de video HI8 funciona como un conductor parcial. Esta se debe colocar con el lado conductivo hacia los cables de cobre de modo que por su resistencia inherente varíe la caída de voltaje dependiendo de la posición. A continuación se especifican e ilustran los pasos realizados para la medición de la cinta resistiva:

• Primero se midió la resistencia de un lado de la cinta obteniendo un valor en el orden de los KΩ (este es el lado que se usa para construir el controlador de cinta)

• Después se midió la resistencia del otro lado de la cinta sin obtener ningún

valor

Page 170: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

148

Figura 66. Ambos lados de la cinta, uno resistivo y otro nulo.

Cuando la cinta es alimentada con los 5v que se obtienen de la conexión USB, se crea un divisor de voltaje en el momento en que esta hace contacto con el cobre; en este momento el cobre esta conectado a una entrada de corriente directa y desde el punto de origen de esta corriente hasta el punto donde se presiona la cinta existirá una resistencia que se opondrá a los 5v de entrada, es decir, entre mas lejos se presione del punto de origen mas resistencia encontrará la corriente, por lo que el voltaje variará con la posición del contacto. El controlador de cinta esta dispuesto en una vara de 80 cm de largo y se conecta a la caja principal por medio de un cable que tiene una longitud de 50 cm permitiendo múltiples posibilidades de posicionamiento.

Page 171: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

149

Figura 67. Inicio de la construcción del dispositivo

El controlador de cinta tiene una división de 2.5 cm de ancho y una base en triplex de 5mm de espesor, donde se colocará la espuma y el cable transmisor.

Figura68. Fijando la base de triplex al controlador de cinta.

Se colocaron dos capas de espuma, cada una de 6mm de espesor, para lo cual se utilizó un adhesivo liquido industrial común (Pegante EMEGE).

Page 172: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

150

Figura69. Espuma utilizada y fijada en la vara

Los cables de cobre AWG 1479 de 73 cm de longitud son colocados en el centro del surco y adheridos a la espuma por el mismo pegante industrial utilizado anteriormente.

Figura 70. Disposición de los cables y forma de pegado

Debido a la profundidad de la madera se colocaron don capas de espuma de 6mm de espesor, de manera que los cables de cobre quedaron a la altura exacta para que al presionar la cinta se haga contacto con facilidad.

79 Sobre calibre de cable AWG referirse a la pagina web: http://en.wikipedia.org/wiki/American_wire_gauge

Page 173: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

151

Figura 71. Cables de cobre y espuma en el controlador de cinta

Se colocaron 5 tiras de cable, semejando una lamina de cobre, de manera que cuando se coloque la cinta HI8 encima puedan hacer contacto sin ningún problema. Los cables de cobre son utilizados como sistema conductor para la transmisión de los cambios de voltaje producidos por las variaciones de resistencia al presionar en diferentes posiciones. Estos cables están conectados a la salida de datos que va al microcontrolador, el cual realiza la conversión A/D.

Figura 72. Adhesión de la cinta HI8 a la licra

Por ultimo se coloco una licra negra pegada a la cinta por la siguiente razón: La licra tensionada no permite que en ningún momento la cinta haga contacto con el cobre a menos que se presione, además este material brinda al interprete o

Page 174: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

152

usuario suavidad al tacto y fácil desplazamiento; otros materiales fueron considerados, como un plástico delgado, pero su grosor mínimo no permitió que el presionar fuera lo suficiente cómodo y libre; el papel cedió muy fácil por ser un material débil y el papel brillante de hoja de revista no permitía un desplazamiento continuo y ágil de los dedos. 4.3.2 Implementación del Sensor de Contacto Bidimensional (Touch Pad) Para la construcción del sensor en 2 ejes se tuvieron en cuenta 2 posibilidades: la primera fue la implementación de una matriz de cables de cobre, es decir líneas de cobre cruzadas ortogonalmente unas con otras formando una matriz de 15cm x 15cm, en donde cada intersección se comporta como un switch digital que cada vez que se presiona envía datos de voltaje en diversas posiciones; este sensor usa 16 cables de cobre horizontales y 16 verticales formando una matriz de 256 intersecciones. El microcontrolador debe leer esta matriz secuencialmente para que los datos cambien de forma continua. Este diseño no funcionó debido a que dos cables verticales vecinos conectados a uno horizontal dividen el voltaje por lo cual no se transmite el umbral lógico de 2.5v. La consecuencia de esto es que ninguna de las dos intersecciones será detectada haciendo que sea imposible tocar un cable sin presionar otro a la vez. En base a esto, se decidió implementar un sensor bidimensional fabricado por la empresa Infusión System. Este sensor bidimensional o touch Pad constituido por dos sensores resistivos cuadrados, trabaja en forma similar al controlador de cinta, pero usa materiales de construcción especializados y una configuración de conductores para crear una respuesta de voltaje igual en una sola dirección mientras crea una respuesta lineal de voltaje en la otra dirección, es decir, el sensor varia en un solo eje, pero dispuesto ortogonalmente con el otro, crea una interfaz de dos ejes (X y Y). Las especificaciones técnicas de este sensor se muestran en la siguiente tabla:

Page 175: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

153

Tabla 16. Especificaciones Técnica del sensor SlideWide V1.1

Producto Sensor SlideWide

Versión 1.1 (2006)

Parámetros de sensor

Posición de contacto en un solo eje

Método de captación

Resistivo

Área Activa 165 x 160 mm

Rango 165 mm

Resistencia de salida

Aprox. 20 KOhm (sin fuerza aplicada), 0 hasta 3 KOhm cuando se esta moviendo desde un limite al otro

Calibración

cm Pulgada Voltaje (usa una fuente de poder de 5 v) Valor de 7-bit MIDI

Sin contacto

Sin contacto

0.039 1

0 0 0.039 1

165 6.49 5.00 127

Manejo de corriente 1.0 a 10 V DC, 2 mA a 5 V

Dimensiones del Sensor

184 x 184 x 0.6 mm (7.24 x 7.24 x 0.02 Pulg.)

Peso 25 g (0.9 oz), incluido cable

Cable 0.90 m (35 pulg.), torcido, sin blindaje, cable rojo = poder, cable negro = tierra, cable blanco = salida del sensor, extensión máxima 30 m (98 pies)

Conector Conector macho, con una fila de 3 pins espaciados 2.54mm)

Notas de Aplicación

Puede ser adherido a otro para obtener un sensor bidimensional, (Colocar el segundo sensor a 90 grados)

Page 176: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

154

Figura 73. Sensor bidimensional (Tocuh Pad)

La respuesta que ofrecen estos sensores es lineal, puesto que no presentan picos ni caídas de voltaje a cero en ningún punto del sensor, incluso en límites y esquinas. Para realizar la construcción de la caja del Toch Pad, se tuvo en cuenta un área de trabajo suficiente para una posición y desempeño cómodo y versátil. También se busca un diseño moderno que brinde múltiples posibilidades de disposición dependiendo de las preferencias del usuario; según esto el sensor bidimensional se dispuso en una caja de 38 cm x 35 cm, y 7 cm de ancho.

Figura 74. Boceto del dispositivo con el sensor en dos ejes

Page 177: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

155

La caja tiene un revestimiento de paño decorativo negro en la parte superior e inferior, ayudando a la estética y a perseverar el buen estado del dispositivo; en los laterales, tiene un revestimiento gris de un material expandible llamado Ventura.

Figura 75. Caja donde se colocó el sensor bidimensional (touch pad)

A este dispositivo se le añadieron 4 potenciómetros colocados al lado derecho del sensor XY, pensado de esta forma para que el usuario experimente comodidad y no exista un entrecruzamiento de manos que impidan el buen desempeño y

Page 178: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

156

manejo del controlador. Los potenciómetros manejan parámetros asignables en el programa Max/MSP.

4.4 Conexión del Dispositivo HID a Max/MSP: Entrada HID Para lograr el control del programa Max/MSP mediante un dispositivo HID, en primera instancia, este dispositivo debe ser reconocido por el sistema operativo Windows XP como un Dispositivo de interfaz humana USB al ser conectado al puerto USB del computador como se muestra en la siguiente figura.

Figura 76. Mensaje de Windows XP indicando nuevo hardware encontrado

Una vez reconocido el dispositivo HID por el sistema operativo Windows XP, el programa Max/MSP también debe poder reconocerlo, sin embargo antes de que esto pase, tiene que haber en Max/MSP un patch diseñado para tal fin. Así que como parte de la solución del problema planteado en el proyecto, y de acuerdo con los objetivos de este mismo, surgió la necesidad de diseñar un programa o patch que permitiera la comunicación entre el dispositivo HID y Max/MSP tal y como se planteó en el objetivo general y los objetivos específicos del proyecto. El patch diseñado para este fin y cuyo nombre es “Entrada HID”, fue pensado para que ofreciera las siguientes funciones:

• Selección del dispositivo HID a utilizar desde un menú. Este menú es de suma importancia ya que Max/MSP reconoce todos los dispositivos HID conectados al computador, estos pueden ser ratones ópticos, teclados, game pads etc. Al ser activado el mensaje menu, se cargan en el objeto umenu los dispositivos HID conectados al computador. El objeto umenu enfoca el flujo de datos desde el dispositivo seleccionado al objeto hi.

• Activación y desactivación de la entrada de flujo de datos al patch. Esta se

realiza mediante el mensaje Poll 10 y Poll 0 respectivamente, el mensaje Poll 10 escanea los datos de entrada provenientes del dispositivo HID cada 10 milisegundos; el mensaje Poll 0 deja de escanear los datos provenientes del dispositivo HID.

Page 179: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

157

• Mostrar los datos de entrada provenientes del dispositivo HID. El objeto hi recibe datos desde el dispositivo HID seleccionado, estos vienen en el formato índice-valor, donde el índice corresponde al número del controlador y el valor corresponde a la magnitud del dato enviado. Para asignar los controladores del dispositivo a cualquier parámetro de Max/MSP se debe saber el número índice de cada controlador que el usuario quiere asignar, por lo tanto es útil visualizar los datos enviados a Max/MSP desde el dispositivo HID. Esto se logra con el objeto unpack, el cual muestra en dos casillas el número índice del controlador y el valor del dato por separado.

• Definición y ruteo de los números de índice a los parámetros que se quieran

controlar. El objeto route funciona como un filtro, deja pasar los datos que provengan de los controles definidos en su argumento. Por ejemplo: de 3 controles disponibles, con números de índice 1, 2 y 3; se quiere utilizar los controladores 1 y 2, entonces el argumento del objeto route debe llevar los números de índice 1 y 2, de tal forma que si varío el controlador 3, este no va a tener efecto en el patch ya que no está definido en el argumento del objeto route.

• Escalamiento del rango de datos de entrada a cualquier otro rango de

datos. Esto ofrece versatilidad del dispositivo a la hora de controlar diferentes parámetros en patches distintos. Por ejemplo valores de datos en un rango de 0 a 65535 no van a ser útiles para controlar notas MIDI por ejemplo, pero si van a ser útiles para controlar parámetros que requieran un rango amplio de datos. Para lograr esto se utiliza el objeto zmap, el cual escala los valores de entrada mínimo y máximo, a un rango de valores especificado en su argumento. En la siguiente figura se muestra el patch diseñado para lograr la comunicación entre el dispositivo HID de entrada y el programa Max/MSP.

Figura 77. Patch “Entrada HID”

Page 180: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

158

4.5 Relación Entre el Dispositivo HID y el Computador En este trabajo el término instrumento musical digital es usado para representar un dispositivo que contiene una interface o controlador gestual separado de la unidad generadora de sonido (computador). Ambas unidades son independientes y relacionadas entre si por medio de métodos de asignación, como se muestra en la figura 78. El término controlador gestual puede ser definido como la parte de entrada de datos del instrumento musical digital, donde la interacción física con el intérprete toma lugar. Inversamente la unidad generadora de sonido debe ser vista como el algoritmo de síntesis y sus controles, al enlazar las salidas del controlador gestual y los controles de entrada del algoritmo de síntesis (unidad generadora de sonido) se realiza la asignación.

Figura 78. Representación esquemática de un instrumento musical digital

Wanderley, Marcelo. Gestural Control of music. IRCAM Institute

4.6 Asignación de Variables Gestuales a Parámetros de Síntesis Una vez las variables gestuales están disponibles desde los sensores independientemente, se puede relacionar los valores de salida de los sensores gestuales con las variables de entrada de síntesis. Dependiendo del método de síntesis utilizado, el número y las características de estas variables de entrada puede diferir, así que se tendrán:

a) Amplitudes, frecuencias y fases de parciales de ondas senoidales para síntesis aditiva.

b) Una frecuencia de excitación más cada frecuencia central de la onda

formante, ancho de banda y amplitud para síntesis por formantes.

Page 181: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

159

c) Coeficientes de modulación, frecuencias portadoras y frecuencias moduladoras para síntesis FM.

d) Anchos de banda, frecuencia central, resonancia para síntesis por

sustracción etc. Ya que la lista de parámetros de síntesis así como sus técnicas es bastante larga, se aplicaron unas cuantas para demostrar el control de parámetros de estas técnicas de síntesis con el dispositivo HID. En el patch para el control de parámetros de síntesis de sonido, se usaron tres técnicas de síntesis, la primera corresponde a la síntesis Ring Modulation o modulación de anillo. En esta, se asignaron dos controles del dispositivo HID, uno de los sensores envía valores en el eje horizontal, el segundo sensor envía valores en el eje vertical controlando otro parámetros diferentes, y finalmente se asignó uno de los dos sensores anteriormente mencionados con el fin de activar la oscilación del sintetizador ring modulation como se muestra en la siguiente figura. En este tipo de modulación se multiplica la frecuencia portadora por la moduladora.

Figura 79. Patch diseñado para generar modulación por anillo

Page 182: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

160

Los parámetros asignados con el dispositivo HID fueron los siguientes:

• El sensor del eje vertical, con número de índice 12, fue asignado a la frecuencia portadora.

• El sensor del eje horizontal, con número de índice 16, fue asignado a la

frecuencia moduladora y al disparador del algoritmo con el fin de activar el sintetizador.

La siguiente técnica de síntesis utilizada para asignar el dispositivo HID al Max/MSP fue la FM. En este tipo de síntesis la frecuencia instantánea de una onda portadora varía de acuerdo a una onda moduladora, de tal forma que los cambios en la portadora se convierten en la frecuencia de la onda moduladora o frecuencia moduladora. La cantidad de variación en la onda portadora cambia alrededor de un promedio que se conoce como la desviación de picos de frecuencia entre ambas ondas y a la vez es proporcional a la amplitud de la onda moduladora.

Los parámetros del patch de frecuencia modulada controlados con el dispositivo fueron los siguiente: Frecuencia de la portadora o frecuencia promedio, Índice de modulación y Radio de armonicidad

Se realizó la asignación de los sensores de la siguiente forma:

• El sensor del eje vertical, que corresponde al número de índice 12, fue asignado a la frecuencia portadora.

• El sensor del eje horizontal, que corresponde al número de índice 16, fue

asignado al índice de modulación del oscilador de modulante.

• El potenciómetro con número de índice 20, fue asignado para variar el radio de armonicidad del sintetizador FM.

Dentro de este patch se utilizó otro oscilador FM para ser asignado al controlador de cinta así como a otros controles del dispositivo Revolution Pad de la siguiente forma:

• El controlador de cinta, cuyo número de índice es 0, fue asignado para variar la frecuencia portadora del sintetizador FM.

• El potenciómetro cuyo número de índice es 8, fue asignado como

disparador o trigger del sintetizador.

Page 183: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

161

• El potenciómetro cuyo número de índice es el 20, fue asignado para variar el índice de modulación del sintetizador FM y el potenciómetro con índice número 4 se asigno al índice de armonicidad.

En la siguiente figura se muestra el patch FM y sus diferentes objetos y parámetros controlados por el dispositivo Revilution Pad.

Figura 80. Patch diseñado para generar síntesis FM.

Por ultimo se utilizó a manera de ejemplo del control de parámetros de síntesis mediante el dispositivo Revolution Pad, la síntesis substractiva, este tipo de síntesis se basa en el uso de los filtros, justamente a través de estos se produce un cambio en la señal. Las características de los filtros se determinan por su función de transferencia y su orden. La primera determina la forma en que la señal aplicada cambia en señal y amplitud al pasar por el filtro, la segunda describe el grado de aceptación o rechazo de frecuencias por encima o por debajo de la respectiva frecuencia de corte. En este patch se utilizaron dos filtros llamados reson~, estos filtros tienen cuatro parámetros: entrada de señal, ganancia de entrada, frecuencia central y Q o ancho de banda. Estos parámetros fueron asignados de la siguiente forma:

• El sensor del eje horizontal (índice 16) se asignó a uno de los filtros, los valores provenientes del sensor proporcionan la frecuencia central de este.

Page 184: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

162

Al variar los datos provenientes del sensor se logra un barrido en frecuencia.

• El sensor del eje vertical (índice 12) se asignó al segundo filtro, los datos

provenientes del sensor del eje vertical fueron escalados para que funcionara en un rango de frecuencia más baja que el sensor del eje horizontal.

• Los potenciómetros fueron asignados cada uno para variar el valor del Q de

cada uno de los filtros.

Figura 81. Patch diseñado para generar síntesis sustractiva

5. PRESENTACION Y ANALISIS DE RESULTADOS Al aplicar un voltaje de 5 voltios al sensor bidimensional de contacto se obtuvieron valores desde 0 a 5 voltios linealmente al tocar y desplazarse sobre la superficie de este. Por otro lado, el controlador de cinta ofrece una respuesta logarítmica como se muestra en la tabla 17, donde se compara el voltaje de salida del controlador de cinta respecto a la distancia en la que se presiona su superficie. Ambos sensores, tanto el controlador de cinta como el sensor bidimensional hacen un promedio del voltaje de salida cuando se presionan dos posiciones en sus superficies.

Page 185: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

163

Tabla 17. Relación entre distancia, resistencia y voltaje de la cinta HI880

Distancia (cm) Voltajes (v)

0 0.0

1 0.08

2 0.15

3 0.20

4 0.25

5 0.30

6 0.35

7 0.37

8 0.40

9 0.50

10 0.54

11 0.57

12 0.64

22 1.00

35 1.50

43 2.00

48 2.50

51.5 3.00

55 3.50

57 4.00

59 4.50

60 5.00

Al conectarse el dispositivo Revolution Pad al computador a través del puerto USB, el sistema operativo Windows XP lo reconoció como “Dispositivo de interfaz humana USB” o dispositivo HID como se muestra en la figura 82. El reconocimiento del dispositivo se comprobó de dos maneras: La primera vez que se conecta el dispositivo al puerto USB del computador, el sistema operativo muestra en la pantalla un cuadro de mensaje informando al usuario que un nuevo hardware ha sido encontrado. Otra forma de identificar que el dispositivo fue

80 Las casillas resaltadas son las longitudes importantes donde los valores de voltaje se incrementan en 0.5V

Page 186: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

164

reconocido por el sistema operativo, es mediante las propiedades del administrador de dispositivos como se muestra en la figura 83.

Figura 82. Mensaje de Windows XP indicando nuevo hardware encontrado

Figura 83. Propiedades de dispositivos de interfaz humana USB

Luego de que el dispositivo Revolution Pad fue reconocido por Windows XP, se corrió el patch diseñado en Max/MSP para la comunicación entre el dispositivo y el programa, obteniendo los siguientes resultados:

• El dispositivo fue reconocido sin problemas como Revolution Pad en el objeto umenu del patch Entrada HID.

• Al usar el sensor bidimensionales de contacto y los potenciómetros, se

obtuvieron valores de entrada de 0 a 65535 en el Max/MSP, el controlador de cinta tuvo un comportamiento diferente, con este se obtuvieron valores entre 0 y 65535 cuando era presionado desde su distancia mínima hasta su

Page 187: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

165

distancia máxima a través de su superficie y generaba además datos que no correspondían al punto donde se tocaba la superficie resultando en ruido y afectando el sonido del patch. Otro resultado obtenido del controlador de cinta fue el envío de datos aun cuando no se presionaba la superficie del controlador de cinta.

El problema del ruido generado por el controlador de cinta se solucionó agregando una resistencia de 5.6MΩ y un condensador cerámico de la referencia 473 en paralelo al circuito del controlador de cinta como se muestra en la figura 84 y restringiendo el rango de valores de este controlador programando el microcontrolador en la salida específica para este sensor. El nuevo rango de valores para el controlador de cinta es de 3000 a 65535, este rango no varía el funcionamiento óptimo del controlador de cinta y sí atenúa el ruido de fondo propio del circuito. Para solucionar el problema del envío de datos cuando no se estaba presionando la superficie del controlador de cinta, se agregó un switch en el circuito de este el cual abre o cierra el circuito del controlador de cinta a voluntad del usuario.

Figura 84. Esquema del circuito del controlador de cinta

Al asignar los sensores de contacto a cualquier parámetro de síntesis de audio de los patches creados en Max/MSP, se pudo apreciar que los parámetros de síntesis no variaban de forma satisfactoria, llegando al caso extremo de que no se percibía variación alguna. El rango de valores dado por los sensores es muy amplio, comprendido entre 0 y 65535; si uno de estos sensores es usado por ejemplo para variar la frecuencia de un oscilador, los valores de 0 a 20 y de 20000 hasta 65535

Page 188: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

166

no van ofrecer una variación apreciable ya que estos valores se encuentran fuera del rango de frecuencias audibles y estarán limitando el control del sensor. Al plantearse este problema, surgió la necesidad de usar un objeto en Max/MSP que permitiera escalar los datos provenientes del sensor a un rango de valores más útil para el control de parámetros de síntesis de audio; esto se realizó con el objeto zmap el cual consta de cinco parámetros:

• Una entrada para los datos a escalar • Valor mínimo del rango de datos de entrada • Valor máximo del rango de datos de entrada • Valor mínimo del rango de datos deseado • Valor máximo del rango de datos deseado

Cabe aclarar que el rango de datos deseado puede variar según los parámetros que se quieran controlar como se muestra en la siguiente figura. Figura 85. Patch que cumple la función de escalar y suavizar los datos de entrada. (La parte izquierda utilizada en el patch de la síntesis substractiva y derecha utilizado en el patch FM)

En la figura anterior, se muestran dos objetos que hacen parte del tratamiento que se le da a los datos de entrada, estos son el objeto sig~ y el objeto slide~, los cuales cumplen la función de suavizar los valores de la señal de entrada. Finalmente con la implementación de los diferentes objetos de Max/MSP nombrados anteriormente en el patch de los diferentes objetos se logró que los parámetros de síntesis de sonido variaran en tiempo real de acuerdo al desplazamiento en las superficies de los sensores y a la rotación de los potenciómetros, cumpliendo así con el objetivo planteado en el proyecto de tesis.

Page 189: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

167

6. CONCLUSIONES

• El diseño de dispositivos controladores no se limita únicamente a duplicar o "midificar" los instrumentos tradicionales. Aunque la mayoría de estos nuevos instrumentos todavía no se pueden adquirir comercialmente, es muy probable que en un futuro no muy lejano, los cambios en los instrumentos de control avancen paralelo a la evolución de la música informática. Las tecnologías empleadas derivan en muchos casos de las investigaciones que se desarrollan en el ámbito de los gestos humanos. La piedra angular radica en el uso de sensores, capaces de convertir diversos estímulos en una señal eléctrica, con la ayuda de un microprocesador. Los sensores pueden actuar también en conjunción con instrumentos más tradicionales para ampliar sus capacidades expresivas.

• En el diseño del sensor de cinta es importante tener en cuenta la longitud total del dispositivo, y el material resistivo a usar, puesto que son las dos variables más significativas, y por lo tanto las que con más cuidado se deben tratar.

• La interface USB, facilita la conexión y la interacción entre el dispositivo y cualquier computador, dando versatilidad al dispositivo y evitando el uso de interfaces externas.

• El dispositivo de interface humana desarrollado en el transcurso del proyecto, tiene un mejor comportamiento para el control de parámetros continuos en vez de parámetros discretos como lo son las notas midi por ejemplo, las cuales reciben un solo valor para cada nota que se desee ejecutar. por otro lado, el resultado del control de los parámetros continuos, corresponde de manera correlacionada con la forma de ejecutar o interpretar el dispositivo, el intérprete puede sentir esta correlación escuchando como varían la frecuencia de corte, el índice de modulación, las frecuencias de los osciladores etc. a medida que se desliza a través de la superficie de los sensores.

• Siendo mucho más económico construir el controlador de cinta, se obtienen mucho mejores resultados con sensores de contacto comerciales, debido a la linealidad de su respuesta y resistencia al uso.

Page 190: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

168

• Para que el controlador tenga una respuesta en tiempo real no es necesario usar velocidades altas (full-speed, high-speed), de transferencia de datos, es posible usar velocidades bajas debido a que el ancho de banda utilizado no supera los 8 bytes (Low speed).

7. RECOMENDACIONES No es viable la construcción de una matriz de cables de cobre ya que las interconexiones entre cables crean envíos de datos erróneos, si se desea una matriz que dé resultados lineales, es preferible recurrir a elementos profesionales puesto que la construcción de un touch pad, se realiza con materiales muy pequeños y de diseño muy elaborado, para que al presionar en dos posiciones simultaneas el dispositivo no tenga problemas con la lectura y errores indeseados, al contrario sea una ventaja y envíe un promedio de los datos obtenidos Se recomienda escalar los datos de entrada provenientes desde el dispositivo con el objeto zmap, para poder obtener un rango de valores adecuado para el control de parámetros específicos. Ya que los parámetros y las técnicas de síntesis difieren entre si, se recomienda usar un escalamiento de los datos de entrada adecuado para el parámetro que se vaya a controlar, utilizando el objeto slide en caso de querer suavizar datos de entrada y el objeto slide~ cuando se quiera suavizar señales de datos/audio de entrada. Debido a la experiencia adquirida en el proceso de construcción del controlador de cinta se recomienda utilizar un sensor de contacto comercial como el Slide-Long, que vende en la empresa canadiense I-Cubex, puesto que la fidelidad de los datos que se obtuvieron no son muy confíales debido a la cantidad de ruido inherente del dispositivo, además por los materiales utilizados el modulo tiende a ser frágil e inestable.

Page 191: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

169

BIBLIOGRAFIA

Sergi Jordà Puig, Audio digital y MIDI, capitulo 7 y 8 Guías Monográficas Anaya Multimedia, Madrid 1997 Wanderley M. Marcelo., IRCAM - Centre Pompidou. Software Open Source y el desarrollo de Nuevas Interfaces en el Arte Interactivo Por Grupo Proyecto Biopus1 RONA CARL, Jeffrey, The MIDI Companion, Hal-Leonardy, New York 1994 TOMAS POLLAN, Santamaría, Electrónica Digital. Universidad de Zaragoza. Pág. 246 Referencia en línea: http://www.sigmaelectronica.com.co/ Referencia en línea http://en.wikipedia.org Referencia en línea http://www.zator.com/Hardware/ Referencia en línea: http://tigoe.net/pcomp/code/archives/picbasic_pro/000243.shtml Referencia en línea: http://home.comcast.net/~rblang/midiator/midiator.htm Referencia en línea: http://www.create.ucsb.edu/~dano/CUI/ Referencia en línea: http://blogs.bl0rg.net/netzstaub/2005/11/04/usb-midi-controller/ Referencia en línea: http://pcmidicenter.com/productos.php?padre=33&codprod=INT038 Referencia en línea: http://asmidius.googlepages.com/home

Page 192: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

170

Referencia en línea: http://www.soundonsound.com/sos/aug06/articles/puredata_0806.htm Referencia en línea: http://at.or.at/hans/pd/installers.html Referencia en línea http://www.ehu.es/acustica/espanol/electricidad/transes/transes.html Referencia en línea http://www.elprisma.com/apuntes/ingenieria_industrial/transductoressensores/ Referencia en línea http://www.monografias.com/trabajos12/microco/microco.shtml Referencia en línea http://www.unicrom.com/Tut_PICs1.asp Referencia en línea http://www.geocities.com/micros_uan/cap11.html Referencia en línea http://www.elrebujito.es/wikipic/index.php/BrownOut Referencia en línea http://ustpower.com/ESP_ProblemasEnergiaElectrica.htm Referencia en línea http://www.wordreference.com/definicion/switch Referencia en línea http://www.edicionsupc.es/ftppublic/pdfmostra/EE04506M.pdf Referencia en línea http://www.kit8051.com.br/images.htm Referencia en línea http://www.usuarios.lycos.es/sfriswolker/pic/uno.htm Referencia en línea http://www.unicrom.com/Tut_PICs1.asp.htm

Page 193: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

171

Referencia en línea http://www.sinergia-web.com.mx/clases/asm9708/Temas/clase02.htm Referencia en línea http://pablohoffman.com/cgi-bin/twiki/bin/view/Oscusb/DocCap03Usb Referencia en línea http://sipan.inictel.gob.pe/internet/alex/publi27.html Referencia en línea http://www.usb.org/developers/devclass_docs/HID1_11.pdfuiu

Page 194: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

172

ANEXOS

Page 195: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

173

ANEXO A

/* Name: main.c

* Project: Revolution Pad

* Author: David-Fabians

* Creation Date: 2007-04-02

* Tabsize: 4

* Copyright: (c) 2006 by OBJECTIVE DEVELOPMENT Software GmbH

* License: GNU GPL v2 (see License.txt) or proprietary (CommercialLicense.txt)

* This Revision: $Id: main.c 299 2007-03-29 17:07:19Z cs $

*/

#include <avr/io.h>

#include <avr/interrupt.h>

#include <avr/pgmspace.h>

#include <avr/wdt.h>

#include "usbdrv.h"

#include "oddebug.h"

#include "global.h"

#include "a2d.h"

static uchar reportBuffer[8]; /* Buffer para los reportes HID, arreglo de 8 Bytes para enviar */

static uchar idleRate; /* in 4 ms units */

Page 196: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

174

ANEXO B

PROGMEM char usbHidReportDescriptor[39] =

0x05, 0x01, // USAGE_PAGE (Generic Desktop)

0x09, 0x04, // USAGE (Joystick)

0xA1, 0x01, // COLLECTION (Application)

0x09, 0x01, // USAGE (Pointer)

0xA1, 0x00, // COLLECTION (Physical)

0x09, 0x3b, // USAGE (Byte Count)

0x09, 0x33, // USAGE (Rx)

0x09, 0x34, // USAGE (Ry)

0x09, 0x35, // USAGE (Rz)

0x09, 0x30, // USAGE (X)

0x09, 0x31, // USAGE (Y)

0x09, 0x38, // USAGE (Wheel)

0x09, 0x32, // USAGE (Z)

0x15, 0x00, // LOGICAL_MINIMUM (0)

0x26, 0xFF, 0x00, // LOGICAL_MAXIMUM (255)

0x75, 0x08, // REPORT_SIZE (8)

0x95, 0x08, // REPORT_COUNT (8)

0x81, 0x02, // INPUT (Data,Var,Abs)

0xC0, // END_COLLECTION

0xC0, // END_COLLECTION

;

Page 197: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

175

ANEXO C

uchar usbFunctionSetup(uchar data[8])

usbRequest_t *rq = (void *)data;

usbMsgPtr = reportBuffer;

if((rq->bmRequestType & USBRQ_TYPE_MASK) == USBRQ_TYPE_CLASS)

/* class request type */

if(rq->bRequest == USBRQ_HID_GET_REPORT)

/* wValue: ReportType (highbyte), ReportID (lowbyte) */

/* we only have one report type, so don't look at wValue */

reportBuffer[0]=0;

reportBuffer[1]=0;

reportBuffer[2]=0;

reportBuffer[3]=0;

reportBuffer[4]=0;

reportBuffer[5]=0;

reportBuffer[6]=0;

reportBuffer[7]=0;

return sizeof(reportBuffer);

else if(rq->bRequest == USBRQ_HID_GET_IDLE)

usbMsgPtr = &idleRate;

return 1;

else if(rq->bRequest == USBRQ_HID_SET_IDLE)

idleRate = rq->wValue.bytes[1];

else

/* no vendor specific requests implemented */

return 0;

Page 198: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

176

ANEXO D

/* A continuación se define la función principal del programa */

int main(void)

uchar i, j, k;

uint8_t idleCounter = 0;

uint8_t ultimovalor[7]=0,0,0,0,0,0,0,valores[4]=0,0,0,0,cambiovalor=0;

uint16_t canal=0;

Page 199: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

177

ANEXO E

wdt_enable(WDTO_2S);

odDebugInit();

DDRD = ~(1 << 2); /* all outputs except PD2 = INT0 */

PORTB = 0; /* no pullups on USB pins */

DDRB = ~0; /* output SE0 for USB reset */

j = 0;

while(--j) /* USB Reset by device only required on Watchdog Reset */

i = 0;

while(--i); /* delay >10ms for USB reset */

DDRB = ~USBMASK; /* all outputs except USB data */

/* configure timer 0 for a rate of 12M/(1024 * 256) = 45.78 Hz (~22ms) */

//DDRD = 0x02;

TCCR0 = 5;

Page 200: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

178

ANEXO F

a2dInit(); //Inicializa el puerto A para la conversión

usbInit();

sei();

DBG1(0x00, 0, 0);

for(;;) // lazo principal

wdt_reset();

usbPoll();

for(i=1;i<8;i++)

canal=0;

for(k=0;k<2;k++) //filtro en SW haciendo un promedio de 8 datos

for(j=0;j<4;j++)

valores[j]=a2dConvert8bit(i-1);

canal=canal+valores[j];

canal= canal>>3; //fin de filtro.

if(ultimovalor[i-1] != canal) //Se evalúa si el valor es diferente al anterior

reportBuffer[i]=canal;

reportBuffer[0]=i;

ultimovalor[i-1]=canal;

cambiovalor=1; //variable para indicar que hay nuevo dato a enviar

if(reportBuffer[4]<0x0C) //Restricción valores menores de 0,3 voltios en controlador cinta

reportBuffer[4]=0;

if(TIFR & (1<<TOV0)) /* 22 ms timer */

TIFR = 1<<TOV0;

if(idleRate != 0)

if(idleCounter > 4)

idleCounter -= 5; /* 22 ms in units of 4 ms */

else

idleCounter = idleRate;

if(usbInterruptIsReady() && cambiovalor) //Evalúa si se puede enviar y si hay nuevo dato

cambiovalor=0;

usbSetInterrupt(reportBuffer, sizeof(reportBuffer));

//Se llama la función para enviar datos

return 0;

Page 201: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

179

ANEXO G /* Name: usbconfig.h

* Project: Revolution Pad

* Author: Christian Starkjohann

* Creation Date: 2007-04

* Tabsize: 4

* Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH

* License: GNU GPL v2 (see License.txt) or proprietary (CommercialLicense.txt)

* This Revision: $Id: usbconfig.h 300 2007-03-29 17:07:35Z cs $

*/

#ifndef __usbconfig_h_included__

#define __usbconfig_h_included__

/*

General Description:

This file contains parts of the USB driver which can be configured and can or

must be adapted to your hardware.

Please note that the usbdrv contains a usbconfig-prototype.h file now. We

recommend that you use that file as a template because it will always list

the newest features and options.

0*/

/* ---------------------------- Hardware Config ---------------------------- */

#define USB_CFG_IOPORTNAME B

/* This is the port where the USB bus is connected. When you configure it to

* "B", the registers PORTB, PINB and DDRB will be used.

*/

#define USB_CFG_DMINUS_BIT 0

/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected.

* This may be any bit in the port.

*/

#define USB_CFG_DPLUS_BIT 1

/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected.

* This may be any bit in the port. Please note that D+ must also be connected

* to interrupt pin INT0!

*/

Page 202: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

180

/* ----------------------- Optional Hardware Config ------------------------ */

/* #define USB_CFG_PULLUP_IOPORTNAME D */

/* If you connect the 1.5k pullup resistor from D- to a port pin instead of

* V+, you can connect and disconnect the device from firmware by calling

* the macros usbDeviceConnect() and usbDeviceDisconnect() (see usbdrv.h).

* This constant defines the port on which the pullup resistor is connected.

*/

/* #define USB_CFG_PULLUP_BIT 4 */

/* This constant defines the bit number in USB_CFG_PULLUP_IOPORT (defined

* above) where the 1.5k pullup resistor is connected. See description

* above for details.

*/

/* --------------------------- Functional Range ---------------------------- */

#define USB_CFG_HAVE_INTRIN_ENDPOINT 1

/* Define this to 1 if you want to compile a version with two endpoints: The

* default control endpoint 0 and an interrupt-in endpoint 1.

*/

#define USB_CFG_HAVE_INTRIN_ENDPOINT3 0

/* Define this to 1 if you want to compile a version with three endpoints: The

* default control endpoint 0, an interrupt-in endpoint 1 and an interrupt-in

* endpoint 3. You must also enable endpoint 1 above.

*/

#define USB_CFG_IMPLEMENT_HALT 0

/* Define this to 1 if you also want to implement the ENDPOINT_HALT feature

* for endpoint 1 (interrupt endpoint). Although you may not need this feature,

* it is required by the standard. We have made it a config option because it

* bloats the code considerably.

*/

#define USB_CFG_INTR_POLL_INTERVAL 10

/* If you compile a version with endpoint 1 (interrupt-in), this is the poll

* interval. The value is in milliseconds and must not be less than 10 ms for

* low speed devices.

*/

#define USB_CFG_IS_SELF_POWERED 0

/* Define this to 1 if the device has its own power supply. Set it to 0 if the

* device is powered from the USB bus.

*/

#define USB_CFG_MAX_BUS_POWER 100

/* Set this variable to the maximum USB bus power consumption of your device.

* The value is in milliamperes. [It will be divided by two since USB

Page 203: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

181

* communicates power requirements in units of 2 mA.]

*/

#define USB_CFG_IMPLEMENT_FN_WRITE 0

/* Set this to 1 if you want usbFunctionWrite() to be called for control-out

* transfers. Set it to 0 if you don't need it and want to save a couple of

* bytes.

*/

#define USB_CFG_IMPLEMENT_FN_READ 0

/* Set this to 1 if you need to send control replies which are generated

* "on the fly" when usbFunctionRead() is called. If you only want to send

* data from a static buffer, set it to 0 and return the data from

* usbFunctionSetup(). This saves a couple of bytes.

*/

#define USB_CFG_IMPLEMENT_FN_WRITEOUT 0

/* Define this to 1 if you want to use interrupt-out (or bulk out) endpoint 1.

* You must implement the function usbFunctionWriteOut() which receives all

* interrupt/bulk data sent to endpoint 1.

*/

#define USB_CFG_HAVE_FLOWCONTROL 0

/* Define this to 1 if you want flowcontrol over USB data. See the definition

* of the macros usbDisableAllRequests() and usbEnableAllRequests() in

* usbdrv.h.

*/

/* -------------------------- Device Description --------------------------- */

/* We cannot use Obdev's free shared VID/PID pair because this is a HID.

* We use John Hyde's VID (author of the book "USB Design By Example") for

* this example instead. John has offered this VID for use by students for

* non-commercial devices. Well... This example is for demonstration and

* education only... DO NOT LET DEVICES WITH THIS VID ESCAPE YOUR LAB!

* The Product-ID is a random number.

*/

#define USB_CFG_VENDOR_ID 0xc0, 0x16

/* USB vendor ID for the device, low byte first. If you have registered your

* own Vendor ID, define it here. Otherwise you use obdev's free shared

* VID/PID pair. Be sure to read USBID-License.txt for rules!

*/

#define USB_CFG_DEVICE_ID 0xdf, 0x05

/* This is the ID of the product, low byte first. It is interpreted in the

* scope of the vendor ID. If you have registered your own VID with usb.org

* or if you have licensed a PID from somebody else, define it here. Otherwise

* you use obdev's free shared VID/PID pair. Be sure to read the rules in

Page 204: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

182

* USBID-License.txt!

*/

#define USB_CFG_DEVICE_VERSION 0x00, 0x01

/* Version number of the device: Minor number first, then major number.

*/

#define USB_CFG_VENDOR_NAME 'D', 'a', 'v', 'i', 'd','-', 'F', 'a','b', 'i', 'a', 'n'

#define USB_CFG_VENDOR_NAME_LEN 12

/* These two values define the vendor name returned by the USB device. The name

* must be given as a list of characters under single quotes. The characters

* are interpreted as Unicode (UTF-16) entities.

* If you don't want a vendor name string, undefine these macros.

* ALWAYS define a vendor name containing your Internet domain name if you use

* obdev's free shared VID/PID pair. See the file USBID-License.txt for

* details.

*/

#define USB_CFG_DEVICE_NAME 'R', 'e', 'v', 'o', 'l', 'u', 't', 'i', 'o', 'n', ' ', 'P', 'a', 'd'

#define USB_CFG_DEVICE_NAME_LEN 14

/* Same as above for the device name. If you don't want a device name, undefine

* the macros. See the file USBID-License.txt before you assign a name.

*/

/*#define USB_CFG_SERIAL_NUMBER 'N', 'o', 'n', 'e' */

/*#define USB_CFG_SERIAL_NUMBER_LEN 0 */

/* Same as above for the serial number. If you don't want a serial number,

* undefine the macros.

* It may be useful to provide the serial number through other means than at

* compile time. See the section about descriptor properties below for how

* to fine tune control over USB descriptors such as the string descriptor

* for the serial number.

*/

#define USB_CFG_DEVICE_CLASS 0 /* specify the class at the interface level */

#define USB_CFG_DEVICE_SUBCLASS 0

/* See USB specification if you want to conform to an existing device class.

*/

#define USB_CFG_INTERFACE_CLASS 0x03 /* 03 para HID class, 01 para audio */

#define USB_CFG_INTERFACE_SUBCLASS 0x00 /*0x00 no boot interface en HID, 0x01

Audio control */

#define USB_CFG_INTERFACE_PROTOCOL 0 /* no protocol */

/* See USB specification if you want to conform to an existing device class or

* protocol.

*/

Page 205: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

183

#define USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH 39 /* total length of report

descriptor */

/* Define this to the length of the HID report descriptor, if you implement

* an HID device. Otherwise don't define it or define it to 0.

*/

/* ------------------- Fine Control over USB Descriptors ------------------- */

/* If you don't want to use the driver's default USB descriptors, you can

* provide our own. These can be provided as (1) fixed length static data in

* flash memory, (2) fixed length static data in RAM or (3) dynamically at

* runtime in the function usbFunctionDescriptor(). See usbdrv.h for more

* information about this function.

* Descriptor handling is configured through the descriptor's properties. If

* no properties are defined or if they are 0, the default descriptor is used.

* Possible properties are:

* + USB_PROP_IS_DYNAMIC: The data for the descriptor should be fetched

* at runtime via usbFunctionDescriptor().

* + USB_PROP_IS_RAM: The data returned by usbFunctionDescriptor() or found

* in static memory is in RAM, not in flash memory.

* + USB_PROP_LENGTH(len): If the data is in static memory (RAM or flash),

* the driver must know the descriptor's length. The descriptor itself is

* found at the address of a well known identifier (see below).

* List of static descriptor names (must be declared PROGMEM if in flash):

* char usbDescriptorDevice[];

* char usbDescriptorConfiguration[];

* char usbDescriptorHidReport[];

* char usbDescriptorString0[];

* int usbDescriptorStringVendor[];

* int usbDescriptorStringDevice[];

* int usbDescriptorStringSerialNumber[];

* Other descriptors can't be provided statically, they must be provided

* dynamically at runtime.

*

* Descriptor properties are or-ed or added together, e.g.:

* #define USB_CFG_DESCR_PROPS_DEVICE (USB_PROP_IS_RAM |

USB_PROP_LENGTH(18))

*

* The following descriptors are defined:

* USB_CFG_DESCR_PROPS_DEVICE

* USB_CFG_DESCR_PROPS_CONFIGURATION

* USB_CFG_DESCR_PROPS_STRINGS

Page 206: DISEÑO Y CONTRUCCION DE UN DISPOSITIVO USB DE INTERFAZ ...biblioteca.usbbog.edu.co:8080/Biblioteca/BDigital/40934.pdf · 2.3.5.1 Procesador O CPU (Unidad Central de Procesos) ...

184

* USB_CFG_DESCR_PROPS_STRING_0

* USB_CFG_DESCR_PROPS_STRING_VENDOR

* USB_CFG_DESCR_PROPS_STRING_PRODUCT

* USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER

* USB_CFG_DESCR_PROPS_HID

* USB_CFG_DESCR_PROPS_HID_REPORT

* USB_CFG_DESCR_PROPS_UNKNOWN (for all descriptors not handled by the driver)

*

*/

#define USB_CFG_DESCR_PROPS_DEVICE 0

#define USB_CFG_DESCR_PROPS_CONFIGURATION 0

#define USB_CFG_DESCR_PROPS_STRINGS 0

#define USB_CFG_DESCR_PROPS_STRING_0 0

#define USB_CFG_DESCR_PROPS_STRING_VENDOR 0

#define USB_CFG_DESCR_PROPS_STRING_PRODUCT 0

#define USB_CFG_DESCR_PROPS_STRING_SERIAL_NUMBER 0

#define USB_CFG_DESCR_PROPS_HID 0

#define USB_CFG_DESCR_PROPS_HID_REPORT 0

#define USB_CFG_DESCR_PROPS_UNKNOWN 0

/* ----------------------- Optional MCU Description ------------------------ */

/* The following configurations have working defaults in usbdrv.h. You

* usually don't need to set them explicitly. Only if you want to run

* the driver on a device which is not yet supported or with a compiler

* which is not fully supported (such as IAR C) or if you use a differnt

* interrupt than INT0, you may have to define some of these.

*/

/* #define USB_INTR_CFG MCUCR */

/* #define USB_INTR_CFG_SET ((1 << ISC00) | (1 << ISC01)) */

/* #define USB_INTR_CFG_CLR 0 */

/* #define USB_INTR_ENABLE GIMSK */

/* #define USB_INTR_ENABLE_BIT INT0 */

/* #define USB_INTR_PENDING GIFR */

/* #define USB_INTR_PENDING_BIT INTF0 */

#endif /* __usbconfig_h_included__ */