Usb con 18f4550
4.2.1 DESARROLLO DEL FIRMWARE DEL MICROCONTROLADOR
4.2.1.1 SELECCIÓN DEL COMPILADOR
El compilador que se utiliza para el desarrollo de este proyecto es el CCS PCWH Compiler versión 4.023, porprestaciones, librerías, facilidad, comprensión, entre otras. Es un compilador que permite desarrollar en lenguaje C todos los programas para los microcontroladores PIC (Microchip), esto facilita mucho el manejo de protocolos tan complejos como el USB, para éste protocolo el compilador desarrolla varias librerías como lo son:
Tabla 4.4
Librerías CCS PCWH Compiler para el protocolo USB
Librería |Ubicación |
usb.c | C:\Archivos de programa\PICC\Drivers\usb.c |
usb_desc_scope.h | C:\Archivos de programa\PICC\Drivers\ usb_desc_scope.h |
usb_cdc.h | C:\Archivos de programa\PICC\Drivers\ usb_cdc.h |
usb_desc_cdc.h | C:\Archivos de programa\PICC\Drivers\usb_desc_cdc.h |
usb_desc_hid.h | C:\Archivos de programa\PICC\Drivers\ usb_desc_hid.h |
pic18_usb.h | C:\Archivos deprograma\PICC\Drivers\pic18_usb.h |
Nota: La ubicación C:\Archivos de programa\PICC\Drivers\ es la que se toma por defecto al momento de instalar el CCS PCWH Compiler
4.2.1.2 CONFIGURACIÓN DEL OSCILADOR DEL PIC 18f4550
Para obtener una comunicación USB exitosa, lo primero que se configuró en el microcontrolador fue el oscilador, pues se debe garantizar una frecuencia para el módulo USB de 48Mhz, la cuales requerida en un USB 2.0 que es el que posee el 18f4550 del la familia Microchip; a continuación se muestra un diagrama de la distribución interna del reloj del microcontrolador.
Figura 4.15 Diagrama del reloj PIC18f4550 (Data Sheet clock diagram Pag. 26)
Como se puede observar en la Figura 4.15, el microcontrolador posee un sistema bastante complejo debido al gran número deposibilidades que éste ofrece. Para la selección del cristal, hay que tener en cuenta que la frecuencia de operación del microcontrolador, no necesariamente tiene que ser igual a la frecuencia requerida para el módulo USB 2.0 (48Mhz), esto quiere decir que se puede tener 48Mhz para el módulo USB y el programa del micro funcionar a 12Mhz u otro valor dependiendo de la configuración que se adopte. Loscristales válidos para poder generar los 48Mhz del USB 2.0 pueden ser 4Mhz, 8Mhz, 12Mhz, 16Mhz, 20Mhz, 24Mhz, 40Mhz y 48Mhz, esto debido al divisor PLL Preescaler, el cristal lo conectamos en OSC1 y OSC2.
Después de las entradas del Primary Oscillator se encuentra un Smicht Trigger del cual salen tres líneas que van a módulos diferentes, la línea superior, va directamente al selectorUSBDIV, si éste se encuentra en cero, indica que la frecuencia del cristal es dirigida directamente al selector FSEN, del que se elige entre todo el sistema directo/PLL o el Primary Clock del CPU y de allí finalmente al módulo USB. Esta ruta que dirige directamente la frecuencia del cristal al módulo USB, sólo es posible si se usa un Cristal de 48Mhz. Cualquier otro cristal debe ser configurado paraconseguir los 48 Mhz necesarios.
La segunda opción es cuando el Primary Oscillator tiene a su entrada al PLL Prescaler, éste no es más que un divisor de frecuencia. En cada una de sus salidas se obtiene FOSC dividida por 1, 2, 3, 4, 5, 6, 10 ó 12, de aquí es donde se obtienen los cristales que podemos utilizar, después pasa al bloque PLLDIV que es un simple Multiplexor que deja seleccionarla salida del PLL Prescaler que se desea. El único objetivo de estos bloques es tener a la entrada del PLL de 96Mhz, una frecuencia de 4Mhz que es la requerida para el funcionamiento del bloque.
De esta forma si se tiene un cristal de 8Mhz, en el PLLDIV se debe colocar un 001, el cual selecciona FOSC/2 o sea 4Mhz, por el contrario si usamos un cristal de 12Mhz, que es el caso del...
Regístrate para leer el documento completo.