proyecto pic usb

Upload: alex2x1

Post on 03-Jun-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/12/2019 Proyecto Pic Usb

    1/651

  • 8/12/2019 Proyecto Pic Usb

    2/651

  • 8/12/2019 Proyecto Pic Usb

    3/651

    UNIVERSIDAD DE SALAMANCAE.T.S.DE INGENIERA INDUSTRIAL DE BJAR

    DEPARTAMENTO DE FSICA APLICADAREA DE TECNOLOGA ELECTRNICA

    TRABAJO FIN DE CARRERA

    CONEXIN AL PUERTO USBMEDIANTE UN

    MICROCONTROLADOR

    AUTOR:GUILLERMO DAVID HERRERO GONZLEZ

    TUTOR:JOS TORREBLANCA GONZLEZ

    BJAR,JUNIO 2007

  • 8/12/2019 Proyecto Pic Usb

    4/651

  • 8/12/2019 Proyecto Pic Usb

    5/651

    D. Guillermo David Herrero Gonzlez, autor del presente proyecto, comparte suautora con su tutor D. Jos Torreblanca Gonzlez, para los efectos que pudieranderivarse de su utilizacin para posteriores trabajos o proyectos fin de carrera.

    Por lo tanto, tiene toda la autorizacin para poder reproducir, copiar y modificardicho proyecto.

    Bjar, Junio de 2007.

    Fdo: D. Guillermo David Herrero Gonzlez

  • 8/12/2019 Proyecto Pic Usb

    6/651

  • 8/12/2019 Proyecto Pic Usb

    7/651

    v

    NDICE

    A.MEMORIA1. I ntr oduccin_______________________________________________ 29

    1.1. Objeto _____________________________________________________ 29

    1.2. Descripcin _________________________________________________ 291.2.1. Captulo 2: Nociones Bsicas De La Norma USB 2.0 ____________________301.2.2. Captulo 3: Microcontroladores______________________________________301.2.3. Captulo 4: Lenguaje De Programacin C18____________________________301.2.4. Captulo 5: Lenguaje De Programacin Visual Basic_____________________301.2.5. Captulo 6: Interconexin USB-PC___________________________________311.2.6. Captulo 7: Aplicacin_____________________________________________311.2.7. Clculos________________________________________________________32 1.2.8. Planos _________________________________________________________321.2.9. Pliego De Condiciones ____________________________________________321.2.10. Condiciones ____________________________________________________32

    2. Nociones Bsicas De La Norma USB 2.0________________________ 35

    2.1. Introduccin ________________________________________________ 352.1.1. Motivacin _____________________________________________________35

    2.2. Vocabulario ________________________________________________ 36

    2.3. Historia ____________________________________________________ 382.3.1. Utilizacin Prevista _______________________________________________38

    2.4. Arquitectura ________________________________________________ 392.4.1. Descripcin Del Sistema USB_______________________________________392.4.2. Arquitectura Del Bus______________________________________________392.4.3. Interfaz Fsica ___________________________________________________40

    2.4.3.1. Aspecto Elctrico _____________________________________________402.4.3.2. Alimentacin ________________________________________________402.4.3.3. Consumo____________________________________________________40 2.4.3.4. Control De Consumo __________________________________________412.4.3.5. Protocolo Del USB____________________________________________412.4.3.6. Robustez____________________________________________________41 2.4.3.7. Deteccin De Errores __________________________________________422.4.3.8. Gestin De Errores____________________________________________422.4.3.9. Configuracin Del Sistema______________________________________422.4.3.10.

    Tipos De Transferencia _______________________________________43

    2.4.3.11. Tipo Control________________________________________________432.4.3.12. Tipo Bulk __________________________________________________432.4.3.13. Tipo Interrupt _______________________________________________432.4.3.14. Tipo Isochronous ____________________________________________432.4.3.15. Asignacin De La Banda De Paso _______________________________ 442.4.3.16. USB Device ________________________________________________442.4.3.17. Caractersticas De Un Perifrico ________________________________44

    2.5. Formatos De Los Paquetes ____________________________________ 452.5.1. Token__________________________________________________________45 2.5.2. Token Especial: Transaccin Split ___________________________________45

    2.5.2.1. Transacciones Split____________________________________________462.5.2.2. Paquetes Start-Of-Frame (SOF) __________________________________48

  • 8/12/2019 Proyecto Pic Usb

    8/651

    CONEXIN AL PUERTO USBMEDIANTE UN MICROCONTROLADOR

    vi

    2.6. Estados Del USB ____________________________________________ 492.6.1. Por Defecto _____________________________________________________50

    2.6.2. Direccionado ____________________________________________________ 512.6.3. Configuracin ___________________________________________________51

    2.7. Enumeracin Del Bus ________________________________________51

    3. M icrontroladores___________________________________________ 55

    3.1. Introduccin A Los Microcontroladores _________________________553.1.1. Controlador Y Microcontrolador_____________________________________553.1.2. Diferencia Entre Microprocesador Y Microcontrolador ___________________563.1.3. Aplicaciones De Los Microcontroladores______________________________573.1.4. El Mercado De Los Microcontroladores_______________________________ 58

    3.2. Qu Microcontrolador Emplear?______________________________ 593.2.1. Recursos Comunes A Todos Los Microcontroladores ____________________61

    3.2.1.1. Arquitectura Bsica ___________________________________________613.2.1.2. El Procesador O CPU__________________________________________623.2.1.3. Memoria____________________________________________________ 623.2.1.4. ROM Con Mscara____________________________________________633.2.1.5. OTP _______________________________________________________633.2.1.6. EPROM ____________________________________________________633.2.1.7. EEPROM ___________________________________________________643.2.1.8. FLASH_____________________________________________________643.2.1.9. Puertos De Entrada Y Salida ____________________________________653.2.1.10. Reloj Principal ______________________________________________65

    3.2.2. Recursos Especiales ______________________________________________653.2.2.1. Temporizadores O Timers ____________________________________663.2.2.2. Perro Guardin O Watchdog___________________________________663.2.2.3. Proteccin Ante Fallo De Alimentacin O Brownout _______________663.2.2.4. Estado De Reposo O De Bajo Consumo ___________________________663.2.2.5. Conversor A/D (CAD) _________________________________________673.2.2.6. Conversor D/A (CDA) _________________________________________673.2.2.7. Comparador Analgico ________________________________________673.2.2.8. Modulador De Anchura De Pulsos O PWM_________________________673.2.2.9. Puertos De E/S Digitales _______________________________________673.2.2.10. Puertos De Comunicacin _____________________________________68

    3.2.3. Herramientas Para El Desarrollo De Aplicaciones _______________________ 683.2.3.1. Desarrollo Del Software: _______________________________________68

    3.3. La Familia De Los PIC Como Eleccin __________________________693.3.1. Caractersticas Relevantes__________________________________________70

    3.3.1.1. Arquitectura _________________________________________________703.3.1.2. Segmentacin ________________________________________________713.3.1.3. Formato De Las Instrucciones ___________________________________713.3.1.4. Juego De Instrucciones_________________________________________713.3.1.5. Todas Las Instrucciones Son Ortogonales __________________________713.3.1.6. Arquitectura Basada En Un Banco De Registros ___________________713.3.1.7. Diversidad De Modelos De Microcontroladores Con

    Prestaciones Y Recursos Diferentes_______________________________713.3.1.8. Herramientas De Soporte Potentes Y Econmicas____________________ 71

    3.3.2. Las gamas de PIC ________________________________________________723.3.2.1. La Gama Enana: PIC12C(F)XXX De Terminales ____________________733.3.2.2. Gama Baja O Bsica: PIC16C5X Con Instrucciones De 16bits__________ 743.3.2.3. Gama Media. PIC16CXXX Con Instrucciones De 16bits ______________76

  • 8/12/2019 Proyecto Pic Usb

    9/651

    GUILLERMO DAVID HERRERO GONZLEZ

    vii

    3.3.2.4. Gama Alta: PIC17CXXX Con Instrucciones De 16bits________________773.3.2.5. Gama Mejorada: PIC18FXXXX _________________________________78

    3.4. Familia PIC18Fxx5x _________________________________________ 793.4.1. Diagrama de Pines________________________________________________793.4.2. Perspectiva General Del Dispositivo__________________________________813.4.3. Configuracin Del Oscilador________________________________________90

    3.4.3.1. Control Del Oscilador _________________________________________913.4.3.2. Tipos De Oscilador____________________________________________91

    3.4.3.2.1. Modos Del Oscilador Y Operaciones Con El USB _______________913.4.3.2.2. XTAL/Resonadores Cermicos ______________________________923.4.3.2.3. Seal De Reloj Externa_____________________________________933.4.3.2.4. Multiplicador De Frecuencia PLL ____________________________943.4.3.2.5. Bloque Interno Del Oscilador________________________________95

    3.4.3.3. Configuracin Del Oscilador Para El USB _________________________983.4.3.3.1. Operaciones Con Baja Velocidad (USB )_______________________993.4.3.3.2. Funcionamiento Diferente El Reloj Del USB Y

    El Del Microcontrolador___________________________________1003.4.3.4. Fuentes De Reloj Y Cambios De Oscilador ________________________100

    3.4.3.4.1. Registros De Control Del Oscilador__________________________ 1013.4.3.4.2. Transiciones Del Oscilador_________________________________102

    3.4.3.5. Efecto De Los Modos De Control De Energa En VariasFuentes De Reloj ____________________________________________103

    3.4.3.6. Retraso En El Inicio __________________________________________1043.4.4. Modos De Control De Energa _____________________________________105

    3.4.4.1. Seleccionar Los Modos De Control De Energa_____________________ 1063.4.4.1.1. Fuentes Del Reloj ________________________________________1063.4.4.1.2. Comienzo De Los Modos De Control De Energa _______________1063.4.4.1.3. Transiciones De Reloj Y Puntero De Estado ___________________1073.4.4.1.4. Mltiples Comandos SLEEP _______________________________107

    3.4.4.2. Modos De Ejecucin _________________________________________1083.4.4.2.1. Modo PRI_RUN_________________________________________1083.4.4.2.2. Modo SEC_RUN ________________________________________1083.4.4.2.3. Modo RC_RUN _________________________________________109

    3.4.4.3. Modo SLEEP _______________________________________________1113.4.4.4. Modos De Reposo ___________________________________________112

    3.4.4.4.1. Modo PRI_IDLE ________________________________________1123.4.4.4.2. MODO SEC_IDLE_______________________________________1133.4.4.4.3. Modo RC_IDLE_________________________________________114

    3.4.4.5. Salir De Los Modos SLEEP Y Reposo ___________________________1143.4.4.5.1. Salida Por Una Interrupcin ________________________________ 1153.4.4.5.2. Salida Por Desbordamiento Del WDT ________________________1153.4.4.5.3. Salida Por Reset _________________________________________1153.4.4.5.4. Salida Sin Un Retraso Del Inicio Del Oscilador_________________116

    3.4.5. RESET________________________________________________________116 3.4.5.1. Registro RCON _____________________________________________1173.4.5.2. Master Clear Reset (MCLR*) __________________________________1193.4.5.3. Reset Por Subida De Tensin (POR) _____________________________ 1193.4.5.4. Reset Por Cese De Tensin (BOR)_______________________________120

    3.4.5.4.1. Software Que Activa El BOR_______________________________1203.4.5.4.2. Deteccin Del BOR ______________________________________1213.4.5.4.3. Desactivar BOR En El Modo SLEEP_________________________121

    3.4.5.5. Contadores Del Reset _________________________________________1213.4.5.5.1. Temporizador De Inicio (PWRT)____________________________1223.4.5.5.2. Oscilador Temporizador De Arranque (OST) __________________122

  • 8/12/2019 Proyecto Pic Usb

    10/651

    CONEXIN AL PUERTO USBMEDIANTE UN MICROCONTROLADOR

    viii

    3.4.5.5.3. Temporizador Del Control De PLL __________________________1223.4.5.5.4. Secuencia De Retraso _____________________________________122

    3.4.5.6. Estado De Los Registros En Un Reset ____________________________ 1233.4.6. Organizacin De La Memoria______________________________________123

    3.4.6.1. Organizacin De La Memoria De Programa _______________________ 1243.4.6.1.1. Contador De Programa____________________________________1253.4.6.1.2. Devolver La Direccin De La Pila ___________________________1253.4.6.1.3. Pila De Almacenamiento Rpido ____________________________ 1283.4.6.1.4. Operaciones De Bsqueda En Las Tablas De

    Memoria De Programa ____________________________________1293.4.6.2. Ciclos Instruccin En Los PIC18 ________________________________ 130

    3.4.6.2.1. Esquema De Reloj _______________________________________1303.4.6.2.2. Instruccin Flow/Pipelining ________________________________ 1303.4.6.2.3. Instrucciones En La Memoria De Programa____________________1313.4.6.2.4. Instrucciones De Dos Palabras ______________________________ 131

    3.4.6.3. Organizacin De La Memoria De Datos __________________________1323.4.6.3.1. RAM Del USB __________________________________________1343.4.6.3.2. Registro Selector Del Banco (BSR) __________________________ 1343.4.6.3.3. Acceso Al Banco ________________________________________1353.4.6.3.4. Registro De Archivos De Propsito General ___________________1363.4.6.3.5. Registros De Funcin Especfica ____________________________ 1363.4.6.3.6. Registro STATUS________________________________________137

    3.4.6.4. Modos De Direccionamiento De Los Datos________________________1393.4.6.4.1. Direccionamiento Inherente Y Literal ________________________1393.4.6.4.2. Direccionamiento Directo__________________________________1393.4.6.4.3. Direccionamiento Indirecto ________________________________140

    3.4.6.5. Memoria Del Programa Y El Sistema De Instrucciones Extendidas _____1433.4.6.6. Memoria De Datos Y El Sistema De Instrucciones Extendidas_________143

    3.4.6.6.1. Direccionamiento Indexado Con Literal Compensado____________1443.4.6.6.2. Instrucciones Afectadas Por El Modo IndexadoPor Literal Compensado ___________________________________ 144

    3.4.6.6.3. Mapeo Del Banco De Acceso En El ModoIndexado Por Literal Compensado ___________________________ 146

    3.4.6.6.4. BSR En El Modo Indexado Por Literal Compensado_____________1473.4.7. Memoria Flash De Programa ______________________________________147

    3.4.7.1. Escribir Y Leer En Tablas _____________________________________1473.4.7.2. Registros De Control _________________________________________149

    3.4.7.2.1. Registros EECON1 y EECON2 _____________________________ 1493.4.7.2.2. Registro De Tabla Latch (TABLAT) _________________________1513.4.7.2.3. Registro Del Puntero De Tabla (TBLPTR) ____________________1513.4.7.2.4. Lmites Del Puntero De Tabla ______________________________151

    3.4.7.3. Lectura De La Memoria De Programa Flash _______________________ 1523.4.7.4. Borrado De Memoria Flash De Programa _________________________ 1533.4.7.4.1. Secuencia De Borrado De La Memoria Flash De Programa _______154

    3.4.7.5. Escribir En La Memoria Flash De Programa _______________________1553.4.7.5.1. Secuencia De Escritura En La Memoria Flash De Programa _______1563.4.7.5.2. Verificacin De La Escritura _______________________________1583.4.7.5.3. Finalizacin Inesperada De La Operacin De Escritura___________159

    3.4.8. Memoria De Datos EEPROM______________________________________1603.4.8.1. Registros EECON1 Y EECON2 ________________________________1603.4.8.2. Lectura De Los Datos De La Memoria EEPROM ___________________1613.4.8.3. Escritura En La Memoria De Datos EEPROM _____________________1613.4.8.4. Verificacin De La Escritura ___________________________________1623.4.8.5. Operacin Con Cdigo De Proteccin ____________________________ 162

  • 8/12/2019 Proyecto Pic Usb

    11/651

    GUILLERMO DAVID HERRERO GONZLEZ

    ix

    3.4.8.6. Proteccin Contra Escrituras Falsas ______________________________ 1623.4.8.7. Usar Los Datos EEPROM _____________________________________163

    3.4.9. Multiplicador DE 8x8 Por Hardware ________________________________1653.4.9.1. Introduccin ________________________________________________165

    3.4.10. Interrupciones__________________________________________________168 3.4.10.1. Interrupciones Del USB ______________________________________1693.4.10.2. Registros INTCON__________________________________________1703.4.10.3. Registros PIR ______________________________________________1733.4.10.4. Registros PIE ______________________________________________1763.4.10.5. Registros IPR ______________________________________________1783.4.10.6. Registro RCON ____________________________________________1803.4.10.7. Pines De Interrupciones INTn _________________________________1813.4.10.8. Interrupcin TMR0__________________________________________1813.4.10.9. Interrupcin Al Cambiar PORTB_______________________________1813.4.10.10. Almacenamiento De Datos Durante La Interrupcin _______________181

    3.4.11. Puertos De Entrada-Salida ________________________________________1823.4.11.1. Registros PORTA, TRISA Y LATA ____________________________ 1833.4.11.2. Registros PORTB, TRISB Y LATB_____________________________1863.4.11.3. Registros PORTC, TRISC Y LATC_____________________________1913.4.11.4. Registros PORTD, TRISD Y LATD ____________________________ 1943.4.11.5. Registros PORTE, TRISE Y LATE _____________________________ 197

    3.4.11.5.1. PORTE En Los Dispositivos De 28-PIN _____________________1983.4.12. Mdulo TIMER0 _______________________________________________201

    3.4.12.1. Operaciones Del TIMER0 ____________________________________2023.4.12.2. Lecturas Y Escrituras Del Timer0 En Modo De 16BITS_____________2023.4.12.3. Prescaler__________________________________________________203

    3.4.12.3.1. Conmutacin En La Asignacin Del Prescaler_________________2033.4.12.4. Interrupcin Timer0 _________________________________________203

    3.4.13. Mdulo Timer1 ________________________________________________2053.4.13.1. Operaciones Del Timer1______________________________________2073.4.13.2. Modo De Lectura/Escritura De 16-Bit Del Timer1 _________________2073.4.13.3. Oscilador Timer1 ___________________________________________208

    3.4.13.3.1. Usar Timer1 como Fuente De Reloj_________________________2093.4.13.3.2. Opcin De Baja Potencia Timer1___________________________2093.4.13.3.3. Consideraciones Del Layout Del Oscilador Timer1_____________209

    3.4.13.4. Interrupcin Timer1 _________________________________________2103.4.13.5. Reset Del Timer1 Usando El Disparador Especial

    Del Acontecimiento CCP _____________________________________2103.4.13.6. Usar Timer1 como Reloj De Tiempo Real (RTC) __________________211

    3.4.14. Mdulo Timer2 ________________________________________________2133.4.14.1. Operaciones Del Timer2______________________________________214

    3.4.14.2. Interrupcin Timer2 _________________________________________2153.4.14.3. Salida Del TMR2 ___________________________________________2153.4.15. Mdulo Timer3 ________________________________________________216

    3.4.15.1. Operaciones Del Timer3______________________________________2183.4.15.2. Modo De Lectura/Grabacin De 16bit___________________________ 2183.4.15.3. Usar El Oscilador Timer1 como Fuente De Reloj Timer3 ____________2193.4.15.4. Interrupcin Timer3 _________________________________________2193.4.15.5. Reset Del Timer3 usando El Disparador Especial

    De Acontecimientos Del CCP _________________________________2203.4.16. Mdulos Captura/Comparacin/PWM (CCP) _________________________ 221

    3.4.16.1. Configuracin Del Mdulo CCP _______________________________2223.4.16.1.1. Recursos De Los Mdulos CCP Y Del Temporizador ___________2223.4.16.1.2. CCP2 Asignacin De Pin _________________________________223

  • 8/12/2019 Proyecto Pic Usb

    12/651

    CONEXIN AL PUERTO USBMEDIANTE UN MICROCONTROLADOR

    x

    3.4.16.2. MODO CAPTURA _________________________________________2243.4.16.2.1. Configuracin Del Pin CCP _______________________________ 2243.4.16.2.2. Seleccin De Modo Timer1/Timer3_________________________2243.4.16.2.3. Interrupcin Por Software_________________________________2243.4.16.2.4. CCP Prescaler__________________________________________224

    3.4.16.3. Modo Comparacin _________________________________________2253.4.16.3.1. Tipo De Conexin CCP __________________________________2253.4.16.3.2. Seleccin De Modo Timer1/Timer3_________________________2263.4.16.3.3. Modo De Interrupcin Por Software ________________________2263.4.16.3.4. Disparador De Acontecimiento Especial _____________________226

    3.4.16.4. Modo PWM _______________________________________________2283.4.16.4.1. Periodo Del PWM ______________________________________2293.4.16.4.2. Duty Cicle PWM _______________________________________2293.4.16.4.3. PWM Auto-Apagado (CCP1 Solamente) _____________________2303.4.16.4.4. Configuracin Del PWM _________________________________230

    3.4.17. Mdulo Mejorado De Captura/Comparacin/PWM (ECCP)______________2323.4.17.1. Salidas Y Configuracin Del ECCP_____________________________2323.4.17.1.1. Recursos Del Temporizador Y Mdulo ECCP_________________232

    3.4.17.2. Modos Captura Y Comparacin________________________________2343.4.17.2.1. Disparador De Acontecimiento Especial _____________________234

    3.4.17.3. El Modo Estndar De PWM___________________________________2343.4.17.4. El Modo PWM Mejorado_____________________________________235

    3.4.17.4.1. Periodo De PWM _______________________________________2363.4.17.4.2. Duty Cicle PWM _______________________________________2363.4.17.4.3. Configuraciones De La Salida De PWM _____________________2373.4.17.4.4. El Modo Half-Bridge ____________________________________2383.4.17.4.5. Modo Full-Bridge_______________________________________2393.4.17.4.6. Retraso Programable Banda-Muerta_______________________243

    3.4.17.4.7. PWM Mejorado Auto-Apagado ____________________________ 2443.4.17.4.8. Consideraciones De Reinicio ______________________________2473.4.17.4.9. Pasos Para Configurar El PWM ____________________________ 2473.4.17.4.10. Operando En Los Modos De Ahorro De Energa______________2483.4.17.4.11. Efectos De Un Reset____________________________________249

    3.4.18. Bus Serie Universal (USB) _______________________________________2503.4.18.1. Descripcin Del Perifrico USB________________________________2503.4.18.2. Estado Y Control Del USB____________________________________251

    3.4.18.2.1. Registro De Control Del USB (UCON) ______________________ 2513.4.18.2.2. Registro De Configuracin Del USB (UCFG) _________________2533.4.18.2.3. Registro De Estado Del USB (USTAT) ______________________ 2583.4.18.2.4. Control De Los Endpoints Del USB_________________________2603.4.18.2.5. Registro De Direccin Del USB (UADDR)___________________261

    3.4.18.2.6. Registros Del Nmero Del Frame Del USB (UFRMH: UFRML) __2613.4.18.3. RAM Del USB _____________________________________________2623.4.18.4. Buffer Descriptor Y Tabla Del Buffer Descriptor __________________263

    3.4.18.4.1. Estado Y Configuracin De Los BD ________________________2643.4.18.4.2. Byte De Cuenta De BD___________________________________2683.4.18.4.3. Validacin De La Direccin De BD_________________________2683.4.18.4.4. Buffering Ping-Pong_____________________________________269

    3.4.18.5. Interrupciones Del USB ______________________________________2723.4.18.5.1. Registro De Estado De Las Interrupciones Del USB (UIR)_______2743.4.18.5.2. Registro De Permiso De Las Interrupciones (UIE) _____________2753.4.18.5.3. Registro De Estado De Las Interrupciones

    Por Error Del USB (UEIR)________________________________2773.4.18.5.4. Registro De Permiso De Las Interrupciones De Error (UEIE)_____278

  • 8/12/2019 Proyecto Pic Usb

    13/651

    GUILLERMO DAVID HERRERO GONZLEZ

    xi

    3.4.18.6. Modos De Energa Del USB __________________________________2793.4.18.6.1. Slo Energa En El Bus __________________________________2793.4.18.6.2. Slo Self-Power ________________________________________2793.4.18.6.3. Energa Dual Con Dominancia Self-Power ___________________279

    3.4.18.7. Streaming Parallel Port (SPP) _________________________________2803.4.18.8. Oscilador _________________________________________________2803.4.18.9. Descripcin Del USB ________________________________________282

    3.4.18.9.1. Esquema De Capas ______________________________________2823.4.18.9.2. Frames _______________________________________________2833.4.18.9.3. Transferencias__________________________________________283 3.4.18.9.4. Energa _______________________________________________2833.4.18.9.5. Enumeracin___________________________________________284 3.4.18.9.6. Descriptores ___________________________________________2843.4.18.9.7. Velocidad Del Bus ______________________________________2853.4.18.9.8. Especificaciones De Clase Y Drivers ________________________285

    3.4.19. Puerto Paralelo Streaming (SPP) ___________________________________2863.4.19.1. Configuracin Del SPP_______________________________________2863.4.19.1.1. Permitir El SPP_________________________________________2873.4.19.1.2. Registro De Datos_______________________________________2883.4.19.1.3. Estados De Espera ______________________________________2893.4.19.1.4. SPP Pull-Ups __________________________________________289

    3.4.19.2. Sistema Para El Control Del USB ______________________________2903.4.19.3. Sistema Para El Control Del Microcontrolador ____________________291

    3.4.19.3.1. Interrupciones SPP ______________________________________2913.4.19.3.2. Escribir El SPP _________________________________________2923.4.19.3.3. Lectura Del SPP ________________________________________ 292

    3.4.20. Mdulo Convertidor De 10-Bit Analgico A Digital (A/D) ______________2943.4.20.1. Requisitos De La Adquisicin A/D _____________________________300

    3.4.20.2. Seleccionar Y Configuracin El Tiempo De Adquisicin Tiempo _____3013.4.20.3. Seleccionar El Reloj De Conversin A/D ________________________3023.4.20.4. Operacin En Los Modos De Ahorro De Energa __________________3033.4.20.5. Configuracin De Los Pines De Los Puertos Analgicos ____________3033.4.20.6. Conversiones A/D __________________________________________3043.4.20.7. Descarga__________________________________________________304 3.4.20.8. Uso Del Disparador Del CCP2_________________________________305

    3.4.21. Mdulo Comparador ____________________________________________3073.4.21.1. Configuracin Del Comparador ________________________________ 3093.4.21.2. Operaciones Del Comparador _________________________________3093.4.21.3. Referencia Del Comparador___________________________________309

    3.4.21.3.1. Seal De Referencia Externa ______________________________3103.4.21.3.2. Seal De Referencia Interna _______________________________ 310

    3.4.21.4. Tiempo De Respuesta Del Comparador __________________________ 3103.4.21.5. Salidas Del Comparador______________________________________3103.4.21.6. Interrupciones Del Comparador ________________________________ 3113.4.21.7. Operaciones Del Comparador Durante El Modo SLEEP_____________3123.4.21.8. Efectos De Un Reset_________________________________________3123.4.21.9. Consideraciones En La Conexin De Las Entradas Analgicas _______312

    3.4.22. Mdulo Comparador De Tensin De Referencia_______________________3143.4.22.1. Configuracin Del Mdulo Comparador De Tensin De Referencia____3143.4.22.2. Exactitud/Error De La Tensin De Referencia_____________________3163.4.22.3. Operacin En Modo SLEEP___________________________________3163.4.22.4. Efectos De Un Reset_________________________________________3163.4.22.5. Consideraciones De La Conexin ______________________________317

    3.4.23. Detector De Alta/Baja Tensin (HLVD) _____________________________ 318

  • 8/12/2019 Proyecto Pic Usb

    14/651

    CONEXIN AL PUERTO USBMEDIANTE UN MICROCONTROLADOR

    xii

    3.4.23.1. Operacin _________________________________________________3193.4.23.2. Configuracin Del HLVD ____________________________________3203.4.23.3. Consumicin De Corriente____________________________________3213.4.23.4. Tiempo De Arranque De HLVD _______________________________3213.4.23.5. Aplicaciones_______________________________________________322 3.4.23.6. Operaciones En El Modo Sleep ________________________________ 3233.4.23.7. Efectos De Un Reset_________________________________________323

    3.4.24. Caractersticas Especiales De La CPU_______________________________3243.4.24.1. Bits De Configuracin _______________________________________3253.4.24.2. Temporizador Del Perro Guardin (WDT)________________________337

    3.4.24.2.1. Registro De Control _____________________________________3383.4.24.3. Arranque A Dos Velocidades__________________________________339

    3.4.24.3.1. Consideraciones Especiales Para Usar ArranqueA Dos Velocidades ______________________________________340

    3.4.24.4. Monitor De Reloj A Prueba De Fallos ___________________________ 340

    3.4.24.4.1. FSCM Y El Temporizador Perro Guardin ___________________3413.4.24.4.2. Salir De La Operacin A Prueba De Fallos ___________________3413.4.24.4.3. Interrupciones De FSCM Dentro De Los Modos De Ahorro

    De Energa ____________________________________________3423.4.24.4.4. POR O Reinicio Del Sleep ________________________________ 342

    3.4.24.5. Verificacin Del Programa Y Cdigo De Proteccin________________3433.4.24.5.1. Memoria De Programa Cdigo De Proteccin _________________3453.4.24.5.2. Datos EEPROM Cdigo De Proteccin ______________________3473.4.24.5.3. Configuracin Del Registro De Proteccin ___________________347

    3.4.24.6. Localizaciones De Identificacin _______________________________ 3473.4.24.7. Programacin Serie In-Circuit _________________________________3473.4.24.8. Depuracin In-Circuit________________________________________3473.4.24.9. Caractersticas Especiales De Icport (Sealando Paquetes Solamente) __348

    3.4.24.9.1. Puerto Dedicado ICD/ICSP _______________________________3483.4.24.9.2. Emulacin De 28 Pines___________________________________3493.4.24.10. Suministro nico De La Programacin ICSP ____________________349

    3.5. Fuses De Programacin de la Familia PIC18Fxx5x _______________ 3513.5.1. PIC18F2455 ___________________________________________________351

    3.5.1.1. Bits Selectores Del Prescaler Del PLL: ___________________________ 3513.5.1.2. Postcaler Del Reloj Del Sistema CPU:____________________________3513.5.1.3. Bit Selectores Del Reloj Del USB (Modo Full-Speed; UCFG:FSEN=1)__3513.5.1.4. Bits Selectores Del Oscilador: __________________________________3523.5.1.5. Bit De Permiso Del Monitor De Reloj De Seguridad: ________________3523.5.1.6. Bit De Cambio Del Oscilador Interno/Externo: _____________________3523.5.1.7. Bit De Permiso Del Retraso En El Inicio: _________________________3523.5.1.8. Bit De Permiso Del Reset Por Cese De Tensin (BOR): ______________3533.5.1.9. Bits De Tensin BOR: ________________________________________3533.5.1.10. Bit De Permiso Del Regulador De Tensin USB: __________________3533.5.1.11. Bit De Permiso Del Temporizador Watchdog:_____________________3533.5.1.12. Bits Selectores Del Postscaler Del Watchdog:_____________________3543.5.1.13. Bit De Permiso Del Pin MCLR:________________________________3543.5.1.14. Bit De Permiso De La Potencia Del Oscilador Timer 1: _____________3543.5.1.15. Bit De Permiso PORTB A/D:__________________________________3553.5.1.16. CCP2 MUX Bit:____________________________________________3553.5.1.17. Bit De Permiso Del Reset Por Llenado/Vaciado De La Pila:__________3553.5.1.18. Bit De Permiso Del ICSP: ____________________________________3553.5.1.19. Bit De Permiso Del Juego De Instrucciones Extendido: _____________3553.5.1.20. Bit De Permiso Del Debugger Oculto:___________________________3553.5.1.21. Bit Del Cdigo De Proteccin En El Bloque 0: ____________________ 356

  • 8/12/2019 Proyecto Pic Usb

    15/651

    GUILLERMO DAVID HERRERO GONZLEZ

    xiii

    3.5.1.22. Bit Del Cdigo De Proteccin En El Bloque 1: ____________________ 3563.5.1.23. Bit Del Cdigo De Proteccin En El Bloque 2: ____________________ 3563.5.1.24. Bit Del Cdigo De Proteccin En El Bloque De Inicio:______________356 3.5.1.25. Bit Del Cdigo De Proteccin En La EEPROM De Datos: ___________3563.5.1.26. Bit De Proteccin Contra Escritura 0: ___________________________3563.5.1.27. Bit De Proteccin Contra Escritura 1: ___________________________3563.5.1.28. Bit De Proteccin Contra Escritura 2: ___________________________3573.5.1.29. Bit De Proteccin Contra Escritura En El Bloque De Inicio:__________3573.5.1.30. Bits De Proteccin Contra Escritura En Los Registros

    De Configuracin: __________________________________________3573.5.1.31. Bits De Proteccin Contra Escritura En La EEPROM De Datos: ______3573.5.1.32. Bit De Proteccin De La Lectura De Tabla Del Bloque 0:____________3573.5.1.33. Bit De Proteccin De La Lectura De Tabla Del Bloque 1:____________3573.5.1.34. Bit De Proteccin De La Lectura De Tabla Del Bloque 2:____________3583.5.1.35. Proteccin Contra La Lectura De Tabla Del Bloque De Inicio:________358

    3.5.2. PIC18F2550 ___________________________________________________3583.5.2.1. Bits Selectores Del Prescaler Del PLL: ___________________________ 3583.5.2.2. Postcaler Del Reloj Del Sistema CPU:____________________________3583.5.2.3. Bit Selectores Del Reloj Del USB (Modo Full-Speed; UCFG:FSEN=1)__3593.5.2.4. Bits Selectores Del Oscilador: __________________________________3593.5.2.5. Bit De Permiso Del Monitor De Reloj De Seguridad: ________________3593.5.2.6. Bit De Cambio Del Oscilador Interno/Externo: _____________________3593.5.2.7. Bit De Permiso Del Retraso En El Inicio: _________________________3603.5.2.8. Bit De Permiso Del Reset Por Cese De Tensin (BOR): ______________3603.5.2.9. Bits De Tensin BOR: ________________________________________3603.5.2.10. Bit De Permiso Del Regulador De Tensin USB: __________________3603.5.2.11. Bit De Permiso Del Temporizador Watchdog:_____________________3603.5.2.12. Bits Selectores Del Postscaler Del Watchdog:_____________________361

    3.5.2.13. Bit De Permiso Del Pin MCLR:________________________________3613.5.2.14. Bit De Permiso De La Potencia Del Oscilador Timer 1: _____________3613.5.2.15. Bit De Permiso PORTB A/D:__________________________________3623.5.2.16. CCP2 MUX Bit:____________________________________________3623.5.2.17. Bit De Permiso Del Reset Por Llenado/Vaciado De La Pila:__________3623.5.2.18. Bit De Permiso Del ICSP: ____________________________________3623.5.2.19. Bit De Permiso Del Juego De Instrucciones Extendido: _____________3623.5.2.20. Bit De Permiso Del Debugger Oculto:___________________________3623.5.2.21. Bit Del Cdigo De Proteccin En El Bloque 0: ____________________ 3623.5.2.22. Bit Del Cdigo De Proteccin En El Bloque 1: ____________________ 3633.5.2.23. Bit Del Cdigo De Proteccin En El Bloque 2: ____________________ 3633.5.2.24. Bit Del Cdigo De Proteccin En El Bloque 3: ____________________ 3633.5.2.25. Bit Del Cdigo De Proteccin En El Bloque De Inicio:______________363

    3.5.2.26. Bit Del Cdigo De Proteccin En La EEPROM De Datos: ___________3633.5.2.27. Bit De Proteccin Contra Escritura 0: ___________________________3633.5.2.28. Bit De Proteccin Contra Escritura 1: ___________________________3633.5.2.29. Bit De Proteccin Contra Escritura 2: ___________________________3643.5.2.30. Bit De Proteccin Contra Escritura 3: ___________________________3643.5.2.31. Bit De Proteccin Contra Escritura En El Bloque De Inicio:__________3643.5.2.32. Bits De Proteccin Contra Escritura En Los Registros

    De Configuracin: __________________________________________3643.5.2.33. Bits De Proteccin Contra Escritura En La EEPROM De Datos: ______3643.5.2.34. Bit De Proteccin De La Lectura De Tabla Del Bloque 0:____________3643.5.2.35. Bit De Proteccin De La Lectura De Tabla Del Bloque 1:____________3653.5.2.36. Bit De Proteccin De La Lectura De Tabla Del Bloque 2:____________3653.5.2.37. Bit De Proteccin De La Lectura De Tabla Del Bloque 3:____________365

  • 8/12/2019 Proyecto Pic Usb

    16/651

    CONEXIN AL PUERTO USBMEDIANTE UN MICROCONTROLADOR

    xiv

    3.5.2.38. Proteccin Contra La Lectura De Tabla Del Bloque De Inicio:________3653.5.3. PIC18F4455 ___________________________________________________366

    3.5.3.1. Bits Selectores Del Prescaler Del PLL: ___________________________ 3663.5.3.2. Postcaler Del Reloj Del Sistema CPU:____________________________3663.5.3.3. Bit Selectores Del Reloj Del USB (Modo Full-Speed; UCFG:FSEN=1)__3663.5.3.4. Bits Selectores Del Oscilador: __________________________________3673.5.3.5. Bit De Permiso Del Monitor De Reloj De Seguridad: ________________3673.5.3.6. Bit De Cambio Del Oscilador Interno/Externo: _____________________3673.5.3.7. Bit De Permiso Del Retraso En El Inicio: _________________________3673.5.3.8. Bit De Permiso Del Reset Por Cese De Tensin (BOR): ______________3683.5.3.9. Bits De Tensin BOR: ________________________________________3683.5.3.10. Bit De Permiso Del Regulador De Tensin USB: __________________3683.5.3.11. Bit De Permiso Del Temporizador Watchdog:_____________________3683.5.3.12. Bits Selectores Del Postscaler Del Watchdog:_____________________3693.5.3.13. Bit De Permiso Del Pin MCLR:________________________________369

    3.5.3.14. Bit De Permiso De La Potencia Del Oscilador Timer 1: _____________3693.5.3.15. Bit De Permiso PORTB A/D:__________________________________3703.5.3.16. CCP2 MUX Bit:____________________________________________3703.5.3.17. Bit De Permiso Del Reset Por Llenado/Vaciado De La Pila:__________3703.5.3.18. Bit De Permiso Del ICSP: ____________________________________3703.5.3.19. Bit De Permiso Del Debug En-Circuito/Puerto De

    Programacin (ICPORT):_____________________________________3703.5.3.20. Bit De Permiso Del Juego De Instrucciones Extendido: _____________3703.5.3.21. Bit De Permiso Del Debugger Oculto:___________________________3703.5.3.22. Bit Del Cdigo De Proteccin En El Bloque 0: ____________________ 3713.5.3.23. Bit Del Cdigo De Proteccin En El Bloque 1: ____________________ 3713.5.3.24. Bit Del Cdigo De Proteccin En El Bloque 2: ____________________ 3713.5.3.25. Bit Del Cdigo De Proteccin En El Bloque De Inicio:______________371

    3.5.3.26. Bit Del Cdigo De Proteccin En La EEPROM De Datos: ___________3713.5.3.27. Bit De Proteccin Contra Escritura 0: ___________________________3713.5.3.28. Bit De Proteccin Contra Escritura 1: ___________________________3713.5.3.29. Bit De Proteccin Contra Escritura 2: ___________________________3723.5.3.30. Bit De Proteccin Contra Escritura En El Bloque De Inicio:__________3723.5.3.31. Bits De Proteccin Contra Escritura En Los Registros

    De Configuracin: __________________________________________3723.5.3.32. Bits De Proteccin Contra Escritura En La EEPROM De Datos: ______3723.5.3.33. Bit De Proteccin De La Lectura De Tabla Del Bloque 0:____________3723.5.3.34. Bit De Proteccin De La Lectura De Tabla Del Bloque 1:____________3723.5.3.35. Bit De Proteccin De La Lectura De Tabla Del Bloque 2:____________3733.5.3.36. Proteccin Contra La Lectura De Tabla Del Bloque De Inicio:________373

    3.5.4. PIC18F4550 ___________________________________________________373

    3.5.4.1. Bits Selectores Del Prescaler Del PLL: ___________________________ 3733.5.4.2. Postcaler Del Reloj Del Sistema CPU:____________________________3733.5.4.3. Bit Selectores Del Reloj Del USB (Modo Full-Speed; UCFG:FSEN=1)__3743.5.4.4. Bits Selectores Del Oscilador: __________________________________3743.5.4.5. Bit De Permiso Del Monitor De Reloj De Seguridad: ________________3743.5.4.6. Bit De Cambio Del Oscilador Interno/Externo: _____________________3743.5.4.7. Bit De Permiso Del Retraso En El Inicio: _________________________3753.5.4.8. Bit De Permiso Del Reset Por Cese De Tensin (BOR): ______________3753.5.4.9. Bits De Tensin BOR: ________________________________________3753.5.4.10. Bit De Permiso Del Regulador De Tensin USB: __________________3753.5.4.11. Bit De Permiso Del Temporizador Watchdog:_____________________3753.5.4.12. Bits Selectores Del Postscaler Del Watchdog:_____________________3763.5.4.13. Bit De Permiso Del Pin MCLR:________________________________376

  • 8/12/2019 Proyecto Pic Usb

    17/651

    GUILLERMO DAVID HERRERO GONZLEZ

    xv

    3.5.4.14. Bit De Permiso De La Potencia Del Oscilador Timer 1: _____________3763.5.4.15. Bit De Permiso PORTB A/D:__________________________________3773.5.4.16. CCP2 MUX Bit:____________________________________________3773.5.4.17. Bit De Permiso Del Reset Por Llenado/Vaciado De La Pila:__________3773.5.4.18. Bit De Permiso Del ICSP: ____________________________________3773.5.4.19. Bit De Permiso Del Debug En-Circuito/Puerto De

    Programacin (ICPORT):_____________________________________3773.5.4.20. Bit De Permiso Del Juego De Instrucciones Extendido: _____________3773.5.4.21. Bit De Permiso Del Debugger Oculto:___________________________3773.5.4.22. Bit Del Cdigo De Proteccin En El Bloque 0: ____________________ 3783.5.4.23. Bit Del Cdigo De Proteccin En El Bloque 1: ____________________ 3783.5.4.24. Bit Del Cdigo De Proteccin En El Bloque 2: ____________________ 3783.5.4.25. Bit Del Cdigo De Proteccin En El Bloque 3: ____________________ 3783.5.4.26. Bit Del Cdigo De Proteccin En El Bloque De Inicio:______________378 3.5.4.27. Bit Del Cdigo De Proteccin En La EEPROM De Datos: ___________378

    3.5.4.28. Bit De Proteccin Contra Escritura 0: ___________________________3783.5.4.29. Bit De Proteccin Contra Escritura 1: ___________________________3793.5.4.30. Bit De Proteccin Contra Escritura 2: ___________________________3793.5.4.31. Bit De Proteccin Contra Escritura 3: ___________________________3793.5.4.32. Bit De Proteccin Contra Escritura En El Bloque De Inicio:__________3793.5.4.33. Bits De Proteccin Contra Escritura En Los Registros De

    Configuracin: _____________________________________________3793.5.4.34. Bits De Proteccin Contra Escritura En La EEPROM De Datos: ______3793.5.4.35. Bit De Proteccin De La Lectura De Tabla Del Bloque 0:____________3803.5.4.36. Bit De Proteccin De La Lectura De Tabla Del Bloque 1:____________3803.5.4.37. Bit De Proteccin De La Lectura De Tabla Del Bloque 2:____________3803.5.4.38. Bit De Proteccin De La Lectura De Tabla Del Bloque 3:____________3803.5.4.39. Proteccin Contra La Lectura De Tabla Del Bloque De Inicio:________380

    4. Lenguaje De Programacin C18 _____________________________ 3834.1. Introduccin _______________________________________________ 383

    4.2. Compilador MPLAB C18 ____________________________________ 3834.2.1. Introduccin ___________________________________________________3834.2.2. Tipos De Datos _________________________________________________384

    4.2.2.1. Enteros ____________________________________________________3844.2.2.2. Reales _____________________________________________________3844.2.2.3. Estructuras _________________________________________________3854.2.2.4. Almacenamiento_____________________________________________385 4.2.2.5. Calificadores________________________________________________386

    4.2.3. Estructuras de Control____________________________________________386

    4.2.3.1. Repetitivas _________________________________________________3864.2.3.1.1. Sentencia While _________________________________________3864.2.3.1.2. Sentencia Do____________________________________________3874.2.3.1.3. Sentencia For ___________________________________________3874.2.3.1.4. Sentencia If_____________________________________________3874.2.3.1.5. Sentencia If-Else_________________________________________3874.2.3.1.6. Sentencia Switch_________________________________________3884.2.3.1.7. Sentencia Break _________________________________________3884.2.3.1.8. Sentencia Continue_______________________________________3884.2.3.1.9. Sentencia Goto __________________________________________388

    4.2.4. Punteros_______________________________________________________389 4.2.5. Cadenas De Constantes ___________________________________________389

  • 8/12/2019 Proyecto Pic Usb

    18/651

    CONEXIN AL PUERTO USBMEDIANTE UN MICROCONTROLADOR

    xvi

    4.3. Libreras Del C18___________________________________________ 3904.3.1. Abreviaturas en las libreras de Microchip ____________________________ 390

    4.3.2. Adc.H: Librera De Los Conversores A/D ____________________________ 3934.3.2.1. Descripcin De Las Funciones__________________________________3934.3.3. Pwm.H: Funciones Del PWM Y EPWM _____________________________397

    4.3.3.1. Descripcin De Las Funciones__________________________________3974.3.4. Timers.h: Funciones de los temporizadores ___________________________ 399

    4.3.4.1. Descripcin de las funciones ___________________________________3994.3.5. Delays.H: Retrasos Por Software ___________________________________404

    4.3.5.1. Descripcin De Las Funciones__________________________________4044.3.6. Libreras del USB______________________________________________406

    4.3.6.1. Usb.h _____________________________________________________4064.3.6.2. Usbcfg.h: Configuracin ______________________________________408

    4.3.6.2.1. Definiciones ____________________________________________4084.3.6.2.2. Uso de la clase del dispositivo ______________________________408

    4.3.6.2.3. Distribucin de los Endpoint _______________________________4094.3.6.3. Usbdefs_std_dsc.h: Definiciones estndar de los descriptores: _________4104.3.6.3.1. Incluye:________________________________________________410 4.3.6.3.2. Definiciones ____________________________________________4104.3.6.3.3. Estructuras _____________________________________________411

    4.3.6.4. Usbdsc.h: Descriptores________________________________________4134.3.6.4.1. Libreras que incluye _____________________________________4134.3.6.4.2. Definiciones ____________________________________________4134.3.6.4.3. Externas _______________________________________________413

    4.3.6.5. Usbdefs_ep0_buff.h: Descripciones Del Buffer Del Endpoint 0 ________4144.3.6.5.1. Incluye ________________________________________________414

    4.3.6.6. Usbmmap.h ________________________________________________4184.3.6.6.1. Incluye ________________________________________________418

    4.3.6.6.2. Definiciones ____________________________________________4184.3.6.6.3. Tipos__________________________________________________419 4.3.6.6.4. Externas _______________________________________________420

    4.3.6.7. Usbdrv.h: Driver Del USB _____________________________________4224.3.6.7.1. Incluye ________________________________________________4224.3.6.7.2. Definiciones ____________________________________________4224.3.6.7.3. Prototipos pblicos _______________________________________425

    4.3.6.8. Usbctrltrf.h: Control de transferencias del USB_____________________4264.3.6.8.1. Incluye ________________________________________________4264.3.6.8.2. Definiciones ____________________________________________4264.3.6.8.3. Externas _______________________________________________4264.3.6.8.4. Prototipos pblicos _______________________________________426

    4.3.6.9. Usb9.h ____________________________________________________427

    4.3.6.9.1. Incluye ________________________________________________4274.3.6.9.2. Definiciones ____________________________________________4274.3.6.9.3. Prototipos pblicos _______________________________________427

    4.3.6.10. Usbgen.h: USB Genrico _____________________________________ 4284.3.6.10.1. Incluye _______________________________________________4284.3.6.10.2. Definiciones ___________________________________________4284.3.6.10.3. Externas ______________________________________________4284.3.6.10.4. Prototipos Pblicos______________________________________428

    4.3.6.11. Msd.h: Almacenamiento Masivo _______________________________ 4294.3.6.11.1. Incluye _______________________________________________4294.3.6.11.2. Definiciones ___________________________________________4294.3.6.11.3. Estructuras ____________________________________________4324.3.6.11.4. Externas ______________________________________________436

  • 8/12/2019 Proyecto Pic Usb

    19/651

    GUILLERMO DAVID HERRERO GONZLEZ

    xvii

    4.3.6.11.5. Prototipos pblicos ______________________________________4364.3.6.12. Cdc.h: Dispositivos De Comunicacin___________________________437

    4.3.6.12.1. Incluye _______________________________________________4374.3.6.12.2. Definiciones ___________________________________________4374.3.6.12.3. Estructuras ____________________________________________4404.3.6.12.4. Externas ______________________________________________4424.3.6.12.5. Prototipos publicos ______________________________________442

    4.3.6.13. Hid.h: Dispositivo interfaz con humanos _________________________ 4434.3.6.13.1. Incluye _______________________________________________4434.3.6.13.2. Definiciones ___________________________________________4434.3.6.13.3. Estructuras ____________________________________________4444.3.6.13.4. Externas ______________________________________________4444.3.6.13.5. Prototipos pblicos ______________________________________445

    4.3.6.14. Io_cfg.h __________________________________________________4454.3.6.14.1. Incluye _______________________________________________445

    4.3.6.14.2. Tris __________________________________________________4454.3.6.14.3. USB _________________________________________________4454.3.6.14.4. LED _________________________________________________4464.3.6.14.5. Interruptores ___________________________________________4464.3.6.14.6. Potencimetro__________________________________________446 4.3.6.14.7. SPI: Lneas de Chip Select ________________________________ 4464.3.6.14.8. SDMMC ______________________________________________446

    4.3.6.15. interrupt.h_________________________________________________447 4.3.6.15.1. Incluye _______________________________________________4474.3.6.15.2. Definiciones ___________________________________________4474.3.6.15.3. Prototipos _____________________________________________447

    4.3.6.16. Usb_compile_time_validation.h: Validacin DelTiempo De Compilado _______________________________________448

    4.3.6.16.1. Incluye _______________________________________________4484.3.6.16.2. Validacin del USB _____________________________________4484.3.7. Libreras Del Microprocesador _____________________________________448

    4.4. Macros Del Compilador C18 _________________________________ 4494.4.1. Usbdrv.c: Drivers USB ___________________________________________449

    4.4.1.1. Incluye ____________________________________________________4494.4.1.2. Variables___________________________________________________449 4.4.1.3. Prototipos privados___________________________________________4494.4.1.4. Declaraciones _______________________________________________449

    4.4.1.4.1. void USBCheckBusStatus(void) ____________________________4504.4.1.4.2. void USBModuleEnable(void)______________________________ 4514.4.1.4.3. void USBModuleDisable(void) _____________________________4514.4.1.4.4. void USBSoftDetach(void)_________________________________4514.4.1.4.5. void USBDriverService(void) ______________________________4524.4.1.4.6. void USBSuspend(void)___________________________________4534.4.1.4.7. void USBWakeFromSuspend(void) __________________________ 4534.4.1.4.8. void USBRemoteWakeup(void)_____________________________4544.4.1.4.9. void USB_SOF_Handler(void) _____________________________4554.4.1.4.10. void USBStallHandler(void) ______________________________4554.4.1.4.11. void USBErrorHandler(void) ______________________________ 4564.4.1.4.12. void USBProtocolResetHandler(void) _______________________456

    4.4.1.5. Funcin auxiliar _____________________________________________4574.4.2. Usb9.c ________________________________________________________457

    4.4.2.1. Incluye ____________________________________________________4574.4.2.2. Variables___________________________________________________457 4.4.2.3. Prototipos privados___________________________________________457

  • 8/12/2019 Proyecto Pic Usb

    20/651

    CONEXIN AL PUERTO USBMEDIANTE UN MICROCONTROLADOR

    xviii

    4.4.2.4. Declaraciones _______________________________________________4574.4.2.4.1. void USBCheckStdRequest(void) ___________________________4574.4.2.4.2. void USBStdGetDscHandler(void)___________________________4594.4.2.4.3. void USBStdSetCfgHandler(void) ___________________________ 4604.4.2.4.4. void USBStdGetStatusHandler(void)_________________________4604.4.2.4.5. void USBStdFeatureReqHandler(void) _______________________461

    4.4.3. Usbctrltrf.c ____________________________________________________4624.4.3.1. Incluye ____________________________________________________4624.4.3.2. Variables___________________________________________________462 4.4.3.3. Prototipos privados___________________________________________4624.4.3.4. Declaraciones _______________________________________________462

    4.4.3.4.1. void USBCtrlEPService(void) ______________________________ 4624.4.3.4.2. void USBCtrlTrfSetupHandler(void) _________________________ 4634.4.3.4.3. void USBCtrlTrfSetupHandler(void) _________________________ 4634.4.3.4.4. void USBCtrlTrfOutHandler(void)___________________________464

    4.4.3.4.5. void USBCtrlTrfInHandler(void) ____________________________ 4644.4.3.4.6. void USBCtrlTrfTxService(void)____________________________4654.4.3.4.7. void USBCtrlTrfRxService(void)____________________________4664.4.3.4.8. void USBCtrlEPServiceComplete(void) ______________________4664.4.3.4.9. void USBPrepareForNextSetupTrf(void)______________________468

    4.4.4. Usbdsc.c: Descriptores USB _______________________________________4694.4.4.1. Incluye ____________________________________________________4714.4.4.2. Constantes _________________________________________________472

    4.4.5. Usbmmap.c ____________________________________________________4744.4.5.1. Incluye ____________________________________________________4764.4.5.2. Variables globales del USB ____________________________________4764.4.5.3. Localizaciones de variables fijas del USB _________________________ 476

    4.4.6. usbgen.c: USB genrico __________________________________________479

    4.4.6.1. Incluye ____________________________________________________4794.4.6.2. Variables___________________________________________________479 4.4.6.3. Declaraciones _______________________________________________4794.4.6.4. API del usuario______________________________________________479

    4.4.6.4.1. void USBGenInitEP(void) _________________________________4794.4.6.4.2. void USBGenWrite(byte *buffer, byte len) ____________________4804.4.6.4.3. byte USBGenRead(byte *buffer, byte len)_____________________481

    4.4.7. msd.c: USB Almacenamiento Masivo _______________________________4824.4.7.1. Incluye ____________________________________________________4824.4.7.2. Variables___________________________________________________482 4.4.7.3. Protoripos privados___________________________________________4834.4.7.4. Declaraciones _______________________________________________4834.4.7.5. Respuestas especficas de la clase _______________________________483

    4.4.7.5.1. void USBCheckMSDRequest(void)__________________________4834.4.7.5.2. void ProcessIO(void) _____________________________________4844.4.7.5.3. void MSDInitEP(void) ____________________________________4844.4.7.5.4. void SDCardInit(void) ____________________________________4844.4.7.5.5. void MSDCommandHandler(void) __________________________4844.4.7.5.6. void SendCSW(void) _____________________________________4844.4.7.5.7. void SendData(byte* dataAddr, byte dataSize) _________________4854.4.7.5.8. void MSDDataIn(void)____________________________________4854.4.7.5.9. void IsValidCBW()_______________________________________4854.4.7.5.10. void IsMeaningfulCBW()_________________________________4854.4.7.5.11. void PrepareCSWData()__________________________________4854.4.7.5.12. void MSDInquiryHandler(void) ____________________________ 4854.4.7.5.13. void ResetSenseData(void)________________________________485

  • 8/12/2019 Proyecto Pic Usb

    21/651

    GUILLERMO DAVID HERRERO GONZLEZ

    xix

    4.4.7.5.14. void MSDReadCapacityHandler() __________________________ 4864.4.7.5.15. void MSDReadHandler(void)______________________________4864.4.7.5.16. void MSDDataOut(void) _________________________________4864.4.7.5.17. void MSDWriteHandler()_________________________________4864.4.7.5.18. void MSDRequestSenseHandler(void)_______________________4864.4.7.5.19. void MSDModeSenseHandler() ____________________________ 4864.4.7.5.20. void MSDMediumRemovalHandler() _______________________4874.4.7.5.21. void MSDTestUnitReadyHandler() _________________________4874.4.7.5.22. void MSDVerifyHandler() ________________________________ 4874.4.7.5.23. void MSDStopStartHandler() ______________________________ 487

    4.4.8. cdc.c: USB Dispositivo de comunicacin _____________________________ 4884.4.8.1. Incluye ____________________________________________________4884.4.8.2. Variables___________________________________________________488 4.4.8.3. Declaraciones _______________________________________________4884.4.8.4. Respuestas especficas de la clase _______________________________488

    4.4.8.4.1. void USBCheckCDCRequest(void) __________________________ 4884.4.8.5. Api del Usuario_____________________________________________4894.4.8.5.1. void CDCInitEP(void) ____________________________________4894.4.8.5.2. byte getsUSBUSART(char *buffer, byte len) __________________4894.4.8.5.3. void putsUSBUSART(char *data) ___________________________4894.4.8.5.4. void putrsUSBUSART(const rom char *data) __________________4904.4.8.5.5. void CDCTxService(void) _________________________________490

    4.4.9. hid.c: USB interfaz con humanos ___________________________________4914.4.9.1. Incluye ____________________________________________________4914.4.9.2. Variables___________________________________________________491 4.4.9.3. Prototipos privados___________________________________________4914.4.9.4. Declaraciones _______________________________________________4914.4.9.5. Respuestas especficas de la clase _______________________________491

    4.4.9.5.1. void USBCheckHIDRequest(void)___________________________4914.4.9.6. API del usuario______________________________________________4914.4.9.6.1. void HIDInitEP(void)_____________________________________4914.4.9.6.2. void HIDTxReport(char *buffer, byte len)_____________________4924.4.9.6.3. byte HIDRxReport(char *buffer, byte len)_____________________ 492

    4.4.10. main.c________________________________________________________493 4.4.10.1. Incluye ___________________________________________________4934.4.10.2. Variables__________________________________________________493 4.4.10.3. Prototipos privados___________________________________________493

    4.4.10.3.1. Remapeo de vectores ____________________________________4934.4.10.3.2. Declaraciones __________________________________________493

    4.4.12. interrupt.c_____________________________________________________495 4.4.12.1. Incluye ___________________________________________________495

    4.4.12.2. Vectores de interrupcin______________________________________4954.4.12.3. Declaraciones ______________________________________________4954.4.12.3.1. void high_isr(void) ______________________________________4954.4.12.3.2. void low_isr(void) ______________________________________495

    5. Lenguaje De Programacin Vi sual Basic ______________________ 499

    5.1. Introduccin _______________________________________________ 499

    5.2. Caractersticas Generales De Visual Basic ______________________ 501

    5.3. Tipos de datos______________________________________________ 5025.3.1. Constantes _____________________________________________________ 5025.3.2. Variables ______________________________________________________ 502

    5.3.2.1. Nombre____________________________________________________ 502

  • 8/12/2019 Proyecto Pic Usb

    22/651

    CONEXIN AL PUERTO USBMEDIANTE UN MICROCONTROLADOR

    xx

    5.3.2.2. Tipo ______________________________________________________5035.3.2.3. mbito ____________________________________________________504

    5.3.3. Operadores ____________________________________________________5045.3.4. Sentencias De Control____________________________________________505

    5.3.4.1. Sentencia If_________________________________________________5055.3.4.2. Sentencia Select _____________________________________________5065.3.4.3. Sentencia ForNext _________________________________________506

    5.3.4.3.1. Funcionamiento de la Sentencia For: _________________________ 5075.3.4.4. Sentencia WhileWend ______________________________________507

    5.3.4.4.1. Funcionamiento de la Sentencia While...Wend _________________5075.3.4.5. Sentencia DoLoop _________________________________________5085.3.4.6. Sentencia Goto ______________________________________________508

    5.4. Libreras En Visual Basic ____________________________________ 5095.4.1. Librera Del USB: MPUSBAPI.dll __________________________________509

    5.4.1.1. Inroduccin_________________________________________________509 5.4.1.2. FUNCIONES _______________________________________________509

    5.4.1.2.1. MPUSBGetDLLVersion(Void) _____________________________5095.4.1.2.2. MPUSBGetDeviceCount(pVID_PID) ________________________ 5095.4.1.2.3. MPUSBOpen(instance, pVID_PID, pEP, dwDir, dwReserved)_____5105.4.1.2.4. MPUSBRead(handle, pData, dwLen, pLength, dwMilliseconds) ___5115.4.1.2.5. MPUSBWrite(handle, pData, dwLen, pLength, dwMilliseconds)___5125.4.1.2.6. MPUSBReadInt(handle, pData, dwLen, pLength, dwMilliseconds) _5125.4.1.2.7. MPUSBClose(handle) ____________________________________512

    5.4.1.3. TIPOS DE TRANSFERENCIAS________________________________5135.4.1.4. Declaracin De Constantes Y Variables __________________________5135.4.1.5. Declaracin de las funciones ___________________________________514

    5.4.1.5.1. C _____________________________________________________5145.4.1.5.2. VB ___________________________________________________5145.4.1.5.3. Delphi _________________________________________________515

    6. I nterconexin USB-PC _____________________________________ 519

    6.1. Introduccin _______________________________________________ 519

    6.2. Arquitectura Windows ______________________________________ 519

    6.3. Carga En Windows De Un Mdulo USB________________________ 519

    6.4. El Driver .sys ______________________________________________ 5206.4.1. Dilogo Con La Aplicacin________________________________________5206.4.2. Gestin De Bugs ________________________________________________5216.4.3. Caractersticas De Un Driver ______________________________________521

    6.4.3.1.

    Principios De Acceso _________________________________________5226.4.3.2. Modo De Acceso ____________________________________________522

    6.4.3.3. Modo De Acceso Mltiple _____________________________________5226.4.3.4. Paso De Datos ______________________________________________5226.4.3.5. Limitacin de 4Kbytes ________________________________________5236.4.3.6. Mltiples Perifricos _________________________________________5236.4.3.7. Gestin De Las Peticiones De La Aplicacin_______________________5236.4.3.8. Gestin De Las Peticiones Del Sistema ___________________________ 523

    6.5. El Driver De Microchip______________________________________ 524

  • 8/12/2019 Proyecto Pic Usb

    23/651

    GUILLERMO DAVID HERRERO GONZLEZ

    xxi

    7. Apl icacin _______________________________________________ 527

    7.1. Introduccin _______________________________________________ 527

    7.2. Circuito Elctrico___________________________________________ 5277.2.1. Esquema Elctrico Del Circuito ____________________________________5287.2.2. Componentes___________________________________________________529

    7.2.2.1. Microcontrolador ____________________________________________5297.2.2.2. ULN2803 __________________________________________________5297.2.2.3. L293D ____________________________________________________5307.2.2.4. Sensor De Distancia __________________________________________5307.2.2.5. Finales De Carrera ___________________________________________5307.2.2.6. Zumbador __________________________________________________5317.2.2.7. Bombillas Y LEDs ___________________________________________5317.2.2.8. Conector USB ______________________________________________5317.2.2.9. Motores De Corriente Continua _________________________________532

    7.2.2.9.1. Control Del Sentido De Giro _______________________________5337.2.2.9.2. El L293 Como Driver De Un Motor De Corriente Continua _______5347.2.2.9.3. Control De La Velocidad __________________________________5367.2.2.9.4. Aumento Del Par Motor ___________________________________537

    7.2.2.10. Motores Paso A Paso ________________________________________5387.2.2.10.1. Motores Bipolares_______________________________________5397.2.2.10.2. Motores Unipolares _____________________________________5407.2.2.10.3. Caractersticas Importantes________________________________543

    7.2.3. Esquema Elctrico De La Placa Impresa______________________________ 544

    7.3. Firmware Del Microcontrolador ______________________________ 5457.3.1. Main.c ________________________________________________________545

    7.3.1.1. Incluye ____________________________________________________545

    7.3.1.2. Variables___________________________________________________547 7.3.1.3. Prototipos privados___________________________________________5477.3.1.4. Remapeo Del vector __________________________________________5487.3.1.5. Declaraciones _______________________________________________548

    7.3.1.5.1. void main(void) _________________________________________5487.3.1.5.2. void InitializeSystem(void) ________________________________5487.3.1.5.3. void USBTasks(void)_____________________________________549

    7.3.2. Usbcfg.h ______________________________________________________5497.3.2.1. Definiciones ________________________________________________5497.3.2.2. Definicin De La Clase _______________________________________5497.3.2.3. Localizaciones De Los Endpoints _______________________________550

    7.3.2.3.1. Identificador De La Interfaz ________________________________ 5507.3.2.3.2. Endpoints ______________________________________________550

    7.3.3. Usbdsc.h ______________________________________________________5507.3.3.1. Incluye ____________________________________________________5507.3.3.2. Definiciones ________________________________________________5517.3.3.3. Funciones Externas___________________________________________551

    7.3.4. Usbdsc.c ______________________________________________________5517.3.4.1. Incluye ____________________________________________________5517.3.4.2. Constantes _________________________________________________551

    7.3.4.2.1. Descriptor Del Dispositivo _________________________________ 5517.3.4.2.2. Descriptor De La Configuracin 1 ___________________________ 552

    7.3.5. Io_cfg.h _______________________________________________________ 5537.3.5.1. Incluye ____________________________________________________5537.3.5.2. Tris _______________________________________________________ 5537.3.5.3. Puerto _____________________________________________________ 553

  • 8/12/2019 Proyecto Pic Usb

    24/651

    CONEXIN AL PUERTO USBMEDIANTE UN MICROCONTROLADOR

    xxii

    7.3.5.4. USB ______________________________________________________5547.3.6. User.h ________________________________________________________554

    7.3.6.1. Prototipos Pblicos___________________________________________5547.3.7. User.c ________________________________________________________555

    7.3.7.1. Incluye ____________________________________________________5557.3.7.2. Variables___________________________________________________555 7.3.7.3. Prototipos Privados___________________________________________5557.3.7.4. Declaraciones _______________________________________________556

    7.3.7.4.1. void Inicializacion(void)___________________________________5567.3.7.4.2. void Aplicacion(void)_____________________________________5567.3.7.4.3. void chequeo(void)_______________________________________5577.3.7.4.4. void enviar(void) ________________________________________5587.3.7.4.5. void Mdelante(void) ______________________________________5587.3.7.4.6. void Mdetras(void)_______________________________________5587.3.7.4.7. void Velocidad(void) _____________________________________559

    7.3.7.4.8. void Paro(void)__________________________________________5597.3.7.4.9. void Giroizq(void) _______________________________________5607.3.7.4.10. void Giroder(void) ______________________________________5617.3.7.4.11. void ANOpen(char c) ____________________________________ 5627.3.7.4.12. void Sensores(void) _____________________________________5627.3.7.4.13. void Claxon(void)_______________________________________5627.3.7.4.14. void Apagado(void) _____________________________________5637.3.7.4.15. void Encendido(void) ____________________________________5637.3.7.4.16. void LucesON(void)_____________________________________5637.3.7.4.17. void LucesOFF(void) ____________________________________5637.3.7.4.18. void BlinkUSBStatus(void) ________________________________564

    7.4. Software Del Ordenador _____________________________________ 5657.4.1. Mdulo ApiUsb.bas _____________________________________________565

    7.4.1.1. Funciones De La Mpusbapi.Dll _________________________________ 5657.4.1.2. Funcin De Recuperacin De Datos Almacenados __________________5667.4.1.3. Constantes Para La WIN32 API_________________________________5667.4.1.4. Constantes De Conectividad Con El PIC __________________________5667.4.1.5. IN_PIPE Y OUT_PIPE Variables Pblicas ________________________ 5667.4.1.6. Variables Pblicas Del Programa________________________________5667.4.1.7. Apertura De Las Comunicaciones _______________________________ 5667.4.1.8. Cierre De Las Comunicaciones _________________________________5677.4.1.9. Funcin Enviar ______________________________________________5677.4.1.10. Funcin Recibir ____________________________________________568

    7.4.2. Formulario Inicio________________________________________________5687.4.2.1. Cdigo Del Form Inicio _______________________________________570

    7.4.2.1.1. Variables Globales _______________________________________5707.4.2.1.2. Funcin Avanza_Click ____________________________________5717.4.2.1.3. Funcin Claxon_Click ____________________________________5717.4.2.1.4. Funcin Derecha_Click ___________________________________5717.4.2.1.5. Funcin Form_Load______________________________________5727.4.2.1.6. Funcin Form_Unload ____________________________________5727.4.2.1.7. Funcin Izquierda_Click __________________________________5737.4.2.1.8. Funcin Luces_Click _____________________________________5737.4.2.1.9. Menu_Click ____________________________________________5747.4.2.1.10. Funcin Paro_Click _____________________________________5757.4.2.1.11. Retrocede_Click ________________________________________5767.4.2.1.12. Funcin ScrollGiro_Change_______________________________ 5767.4.2.1.13. Funcin ScrollVelocidad_Change __________________________5767.4.2.1.14. Funcin sensores_Click __________________________________576

  • 8/12/2019 Proyecto Pic Usb

    25/651

    GUILLERMO DAVID HERRERO GONZLEZ

    xxiii

    7.4.2.1.15. Funcin TextGiro_Change ________________________________5777.4.2.1.16. Funcin TextVelocidad __________________________________5777.4.2.1.17. Funcin Form_KeyPress _________________________________581

    7.4.3. Form Ajuste____________________________________________________5837.4.3.1. Cdigo Del Form Ajuste ______________________________________584

    7.4.3.1.1. Variables_______________________________________________584 7.4.3.1.2. Funcin Derecha_Click ___________________________________5847.4.3.1.3. Funcin Izquierda_Click __________________________________5857.4.3.1.4. Funcin AjDistancia_Click ________________________________5857.4.3.1.5. Funcin TimerDistancia_Timer _____________________________ 5857.4.3.1.6. Funcin Medidas_Timer___________________________________587

    7.4.4. Form Sensor ___________________________________________________5887.4.4.1. Cdigo del Form Ajuste _______________________________________589

    7.4.4.1.1. Declaracin De Variables__________________________________5897.4.4.1.2. Funcin Sensores_Timer __________________________________589

    7.4.5. Form Comandos ________________________________________________5927.4.5.1. Cdigo Del Form Comandos ___________________________________5947.4.5.1.1. Declaracin De Variables__________________________________5947.4.5.1.2. Funcin Comandos_Click _________________________________5947.4.5.1.3. Funcin Comandos_KeyPress ______________________________5947.4.5.1.4. Funcin EnvioComando_Click______________________________5967.4.5.1.5. Funcin Form_Unload ____________________________________602

    7.5. Driver Cochecito.inf_________________________________________ 602

    7.6. Control WiiMote ___________________________________________ 6027.6.1. Introduccin ___________________________________________________6067.6.2. Programa de Control _____________________________________________606

    7.6.2.1. Programa_______________________________________________606

    8. Bibli ografa ______________________________________________ 609

    8.1. Libros ____________________________________________________ 609

    8.2. Apuntes ___________________________________________________ 610

    8.3. Pginas Web _______________________________________________ 610

    B.CLCULOS

    1. Clculos _________________________________________________ 615

    1.1. PWM _____________________________________________________ 615

    1.2. Conversor A/D _____________________________________________ 615

    C.PLANOS

    Plano 1: Esquema del cir cui to elctr ico _____________________________619

    Plano 2: Esquema elctr ico de la placa _____________________________621

    Plano 3: Layout de la placa_______________________________________623

    Plano 4: Chasis ________________________________________________625

    Plano 5: Piezas del parachoques trasero ____________________________627

    Plano 6: Piezas del parachoques delantero __________________________629

  • 8/12/2019 Proyecto Pic Usb

    26/651

    CONEXIN AL PUERTO USBMEDIANTE UN MICROCONTROLADOR

    xxiv

    Plano 7: Piezas del chasis ________________________________________631

    Plano 8: Montaje del chasis ______________________________________633

    Plano 9: M ontaje del cir cui to en el chasis ___________________________635

    D.PLIEGO DE CONDICIONES

    1. Pli ego De Condiciones Especfi cas Y Constructivas ______________ 639

    1.1. Descripcin Del Producto ____________________________________ 639

    1.2. Forma De Ejecucin ________________________________________ 639

    1.3. Plazos Y Orden De Ejecucin _________________________________ 643

    1.4. Materiales _________________________________________________ 6441.4.1. Materiales Del Laboratorio Necesarios Para La Parte Elctrica ____________6441.4.2. Materiales Para La Realizacin De La Placa___________________________ 6451.4.3. Materiales De Laboratorio Necesarios Para La Parte Mecnica ___________6451.4.4. Materiales Para La Realizacin Del Chasis____________________________645

    1.5. Realizacin De Las Pruebas __________________________________ 646

    E.PRESUPUESTO

    1. Presupuesto De La Par te Elctr ica____________________________ 649

    2. Presupuesto De La Par te Mecnica ___________________________ 650

    3. Total izaciones ____________________________________________ 650

    F.CONCLUSIN1. Conclusin _______________________________________________ 653

  • 8/12/2019 Proyecto Pic Usb

    27/651

    A.MEMORIA

  • 8/12/2019 Proyecto Pic Usb

    28/651

  • 8/12/2019 Proyecto Pic Usb

    29/651

    1.INTRODUCCIN

  • 8/12/2019 Proyecto Pic Usb

    30/651

  • 8/12/2019 Proyecto Pic Usb

    31/651

    29

    1. INTRODUCCIN

    1.1. OBJETO

    Como Trabajo Final de Carrera se ha tratado la comunicacin de unmicrocontrolador PIC al ordenador por medio del puerto USB. En el presente proyectose trata de hacer una aplicacin prctica del tipo de comunicacin antes citado.

    El proyecto ha sido propuesto y tutorado dentro del departamento de FsicaAplicada en el rea de Tecnologa Electrnica por Jos Torreblanca Gonzlez.

    Los grandes grupos en los que se divide el proyecto son:

    Estudio de la norma del USB. Estudio de la familia de microcontroladores PIC18Fxx5x. Realizacin prctica de la aplicacin.

    Como el presente proyecto se pretende que sirva como ayuda a otras personas, elautor ha tratado el proyecto de una manera sencilla, intentado que sea de fcilcomprensin.

    1.2. DESCRIPCIN

    La utilidad principal de este proyecto es el control de sensores y motores a travsdel ordenador por medio del puerto USB. El microcontrolador PIC18F2455 es el

    encargado de la conexin USB y de ejecutar las rdenes recibidas desde el ordenador.

    El microcontrolador realizar la conversin analgico-digital necesaria para lalectura del sensor de distancia. Adems, de enviar los pulsos necesarios para activar elmotor paso a paso.

    El micro, tambin se encarga de la modulacin de ancho de pulso y de activarlos puertos necesarios para modificar el sentido y la velocidad de los motores decorriente continua.

    Todos esto temas se han tratado de forma terica, haciendo un estudio de todoslos puntos necesarios para comprender correctamente las comunicaciones UBS la

    programacin, tanto del host (ordenador) como del microcontrolador; y de formaprctica al realizar un coche que se controle desde el ordenador por medio del puertoUSB.

    A continuacin se describe el contenido de cada uno de los captulos quecomponen el proyecto.

  • 8/12/2019 Proyecto Pic Usb

    32/651

    CONEXIN AL PUERTO USBMEDIANTE UN MICROCONTROLADOR

    30

    1.2.1. CAPTULO 2:NOCIONES BSICAS DE LA NORMA USB2.0

    La memoria comienza con un estudio del USB, las transmisiones entre host(ordenador), hub (dispositivo concentrador) y perifrico. Dando especial importancia alsignificado del vocabulario especfico de la conexin.

    Del estudio de la norma del USB se obtienen los pasos que realiza el host paradetectar y configurar el dispositivo o los tipos de transferencia; y algunos aspectossecundarios pero no menos importantes como los pasos necesarios para transferir un

    byte. El principal objetivo de este apartado es la comprensin de la conexin al menornivel existente.

    Al trabajar con microcontroladores que poseen puerto USB todos los pasoscitados en el prrafo anterior, no se observan ya que el chip lo realiza internamente. Lo

    nico que hay que realizar es una correcta configuracin.

    1.2.2. CAPTULO 3:MICROCONTROLADORES

    En este captulo se realiza un estudio de la familia de microcontroladoresutilizada los PIC18Fxx5x.

    Se ha descrito su arquitectura, osciladores, puertos de E/S, puertos especialescomo el USB, manejo de las memorias FLASH, EEPROM y RAM, registros de control.En general, todo lo relativo al microcontrolador excepto el puerto USART que no seutiliza en este proyecto.

    1.2.3. CAPTULO 4:LENGUAJE DE PROGRAMACIN C18Para la programacin del micro se recurrir al lenguaje C18 ya que el fabricante

    Microchip concede una licencia gratuita de estudiante y el uso de libreras especficaspara las distintas clases de dispositivos y los distintos tipos de comunicacin.Resultando ste ms sencillo que el lenguaje Assambler, comnmente utilizado en la

    programacin de todas las gamas de microcontroladores PIC y dsPIC de Microchip.

    En este captulo, se analizan las funciones ms importantes, los tipos de datos,punteros y las libreras utilizadas para la configuracin del microcontrolador en laaplicacin. Haciendo especial hincapi en las relativas al puerto USB.

    1.2.4. CAPTULO 5:LENGUAJE DE PROGRAMACIN VISUAL BASICEl siguiente tema tratado en la memoria, es la programacin del host; para ella,

    se recurrir al lenguaje Visual Basic 6, ya que es un lenguaje muy extendido y muysencillo, con un gran nmero de libreras y mdulos.

    Como en el captulo anterior, en este, se hace un anlisis de las funciones msimportantes, tipos de datos, etc. Para poder comprender el software de control delcoche.

  • 8/12/2019 Proyecto Pic Usb

    33/651

    GUILLERMO DAVID HERRERO GONZLEZ

    31

    Para realizar una comunicacin con USB, no existen libreras comunesespecficas, por lo que se ha utilizado la MPUSBAPI.dll que concede gratuitamente

    Microchip. En la memoria, se comentan y explican todas las funciones de esta librera.

    1.2.5. CAPTULO 6:INTERCONEXIN USB-PC

    Otro tema muy importante es la realizacin de un driver. Al utilizar la libreraanterior, se necesita un driver que la reconozca, por ello Microchip ha creado unogenrico que reconoce los comandos de la librera.

    En este captulo, se analizan las caractersticas que tiene que tener un drivercomentando las del driver de Microchip.

    1.2.6. CAPTULO 7:APLICACIN

    Se va a realizar un coche de radio control que mida distancias y detecte si segolpea contra un objeto; pudiendo variar su movimiento tanto en sentido, direccin yvelocidad.

    Para la variacin del sentido se ha utilizado un motor de tipo paso a paso bipolar.Para una mayor comprensin se ha pretendido hacer un manual de los motores paso a

    paso. En este, se incluyen las diferencias entre los distintos tipos y los pulsos que hayque enviar para activar los motores.

    En cuanto a la modificacin de la velocidad, se ha recurrido a la modulacin deancho de pulso (PWM) ya que el microcontrolador posee un puerto que, una vez

    configurado correctamente, crea este tipo de onda. Para la deteccin de distancias se hautilizado el sensor de Sharp GP2Y0A02YK que crea una variacin de la tensindependiendo de la distancia a la que se encuentre el objeto. Se ha conectado a unaentrada de tipo analgico del microcontrolador para aprovechar al mximo lascaractersticas tanto del sensor como del microcontrolador.

    Los sensores de choque son interruptores finales de carrera. Una vez pulsado, elmicrocontrolador lee la entrada y comprueba que el coche se ha chocado en un puntodeterminado.

    El problema de realizar el control del sistema por medio de un microcontroladores que no cede la corriente necesaria para activar el componente. Hay que recurrir a

    buffers, para lo que se han utilizado el integrado ULN2803 en el motor paso a paso, lasluces y el zumbador. El otro buffer es el L293D que es un driver para motores decorriente continua en puente H, mediante el cual se puede cambiar el sentido de losmotores y reconoce la modulacin de ancho de pulso.

    El siguiente punto de este captulo, es la explicacin de la adaptacin delsoftware que cede Microchip a la aplicacin. Se comentan todos los archivosmodificados.

    Despus, se estudia el software del host, realizado en Visual Basic.

    Por ltimo, el driver creado para la aplicacin.

  • 8/12/2019 Proyecto Pic Usb

    34/651

    CONEXIN AL PUERTO USBMEDIANTE UN MICROCONTROLADOR

    32

    1.2.7. CLCULOS

    Se realizan los clculos necesarios para el proyecto.Al ser un proyecto de electrnica digital, en especial de microcontroladores, slo

    se realizan los clculos relativos a los motores de corriente continua (para poderseleccionar entre ms valores de velocidad) y al conversor A/D (para que no realiceconversiones innecesarias).

    1.2.8. PLANOS

    En este captulo, se incluyen los planos tanto de la parte elctrica como de lamecnica para la realizacin del coche.

    La parte elctrica se compone de los planos: general, el de diseo de la placa en

    transparencia, y de montaje de los sensores.

    La parte mecnica se compone de todos los planos necesarios para reproducir elcoche.

    1.2.9. PLIEGO DE CONDICIONES

    El pliego de condiciones los pasos necesarios para la reproduccin del coche,tanto de la placa electrnica como de la parte mecnica.

    1.2.10. CONDICIONES

    Con este ltimo apartado se pretende explicar los problemas que han surgido enla realizacin de la aplicacin y las experiencias obtenidas.

  • 8/12/2019 Proyecto Pic Usb

    35/651

    2.NOCIONES BSICAS DE LANORMA USB2.0

  • 8/12/2019 Proyecto Pic Usb

    36/651

  • 8/12/2019 Proyecto Pic Usb

    37/651

    35

    2. NOCIONES BSICAS DE LA NORMA USB2.0

    2.1. INTRODUCCIN

    Para entender el funcionamiento del USB, es necesario estudiar la especificacinde este bus. Los fabricantes involucrados en la norma crearon un documento queconstituye la referencia. Aunque en estos momentos se est creando la versin 3.0 del

    bus, en el presente captulo se va a tratar la versin 2.0 ya que es la ms rpida y es laque posee la familia de PICs 18Fxx5x.

    Ya que la norma es muy extensa, aqu se han traducido las partes que se hancredo ms importantes para una comprensin fcil y rpida de este bus.

    Uno de los motivos por los que el USB se haya extendido tan velozmente es quese ha creado mediante un convenio de grandes empresas del sector informtico:Compac, Hewlett-Packard, Intel, Lucent, Microsoft; NEC y Philips. Adoptando lasmejores caractersticas de los diferentes tipos de comunicacin de cada empresa.

    2.1.1. MOTIVACIN

    Las motivaciones que han inspirado la creacin del Universal Serial Bus ver. 1.0son tres: conexin del PC al telfono, facilidad de uso y expansin de entrada/salida.

    Las motivaciones a mejorar la versin y crear as la 2.0 han sido: la evolucin delos ordenadores y de su velocidad, la mejora de los perifricos, la demanda de lasimgenes digitales y la necesidad de una mayor velocidad de transmisin de datos.

    Las peridicas revisiones de la norma se realizan para que los desarrolladores nofabriquen unos perifricos con una interfaz obsoleta.

  • 8/12/2019 Proyecto Pic Usb

    38/651

  • 8/12/2019 Proyecto Pic Usb

    39/651

    GUILLERMO DAVID HERRERO GONZLEZ

    37

    Protocolo: Conjunto especfico de reglas, procedimientos o conversacionesrelacionadas con el formato y el tiempo de transmisin de datos entre dos dispositivos.

    Sample: Unidad ms pequea con la que puede operar un Endpoint.

    Sample Rate (Fs):Nmero de samples por segundo, expresado en hercios (Hz).

    Start-Of-Frame (SOF): Primera transaccin de cada frame. Un SOF permite alEndpoint identificar el principio del frame y sincronizar el reloj interno del Endpointcon el host.

    Frame: Tiempo base de 1ms establecido en los buses de baja/media velocidad(low/full speed).

    Paquete Token:Tipo de paquete que identifica que transmisin se realiza en elbus.

    Clase: La clase indica el tipo de dispositivo USB.

    Paquete ID (PID):Un campo de un paquete USB que indica el tipo de paquete,y el formato del paquete y el tipo de error de deteccin aplicado.

    Descriptor: Los dispositivos dan a conocer sus atributos por medio de losdescriptores. Un descriptor es una estructura de datos con un formato determinado.Cada descriptor empieza con un campo de un byte de ancho que contiene el nmero de

    bytes en el descriptor, seguido por otro campo de un byte de ancho que identifica el tipode descriptor.

    Campo de direccionamiento (ADDR): la utilidad del campo dedireccionamiento es especificar la funcin, por esta direccin, que va a ser la fuente o eldestino de este paquete, dependiendo del valor del token PID.

    Hay un total de 128 direcciones especificadas en ADDR.

    El campo ADDR es nico para los token IN, SETUP y OUT y para los tokenespeciales PING y SPLIT.