Sie sind auf Seite 1von 4

Inicio

Contactar

Acerca de ..

Foros

Blog

Men Principal
Inicio Registrarse Enlaces Web Foros Sitemap

Inicio

ndice prcticas PIC C

Comunicacin USB PIC18F4550 utilizando la clase CDC

Comunicacin USB con el PIC PIC18F4550 - Ejemplo clase CDC


Escrito por Biblioman

Pgina 2 de 3

Desarrollo del firware programa que se cargar en el microcontrolador.


Como dijimos al principio este ejemplo esta basado en el uso de la clase CDC, utilizando el compilador de CCS versin 4.107, me ha servido de gua el ejemplo EX_USB_SERIAL.C incluido en los ejemplos del compilador (con las modificaciones necesarias claro), como ya sabis los ejemplos y libreras de CCS tienen copyright y su cdigo no se puede publicar. Por lo que solo voy a comentar algunas cosas: Unas de las cosas importantes que tenemos que tener en cuenta al programar el Microcontrolador son los fusibles, en los que entre otras cosas se define la velocidad de trabajo del PIC. Una caracterstica que hay que tener en cuenta cuando usamos un PIC con interfaz USB, es que para que dicho mdulo funcione la frecuencia de reloj en la entrada de dicho mdulo debe de ser de 48 MHz, para conseguir dicha frecuencia se dispone de un multiplicador con pre-escaler y post-escaler. A la entrada del multiplicador tenemos que tener una frecuencia fija de 4 MHz. En la figura de abajo se muestra como configurar el pre-escaler del PLL cuando en nuestro circuito tenemos un cristal de 20 MHz.

ltimos Tutoriales
ndice Programacin PIC en C ndice prcticas PIC C Secuencia de luces Decodificador Binario/Decimal Uso del TMR0 como temporizador Uso del TMR0 como contador Interrupcin externa por RB0 Control motor CC con la terminal Control motor CC con el Hyperterminal Interrupcin cambio de estado RB4-RB7 Comuicacin serie asncrona entre dos PICs con la USART Control teclado 4X4 con el MM74C922 Memoria EEPROM interna del PIC Como se ve en la figura, en este caso el pre-escaler divide los 20 MHz por 5 para obtener los 4MHz requeridos a la entrada del PLL, este a su vez produce 96 MHz en su salida los cuales se distribuyen por un lado al mdulo USB, dividiendo previamente la frecuencia por 2 para obtener los 48 Mz a la entrada del mdulo por el otro lado alimenta el post-divisor del PLL, para que podamos elegir la frecuencia de trabajo del ncleo del micro, en este caso divide por tres por lo que tendremos 32 MHz para alimentar al "core" del PIC. Debido a la complejidad de la comunicacin USB o de otras como TCPIP lo que ha hecho tanto Microchip como otros desarrolladores de compiladores como CCS es proporcionar unas libreras que comnmente se les llama "Stacks" o pila de software cuya finalidad es facilitar la tarea al programador de dispositivos, de tal forma que no es necesario conocer a fondo el protocolo de comunicacin USB, simplemente se necesita saber que funciones pblicas me proporciona el "Stack" correspondiente para poder enviar y recibir los datos a travs del bus. En el caso de este ejemplo que utiliza la clase CDC (Communications Device Class), las funciones que se han utilizado para enviar y recibir datos por el bus USB son: usb_cdc_kbhit(): Es una funcin que retorna el valor booleano TRUE si hay uno o mas caracteres esperando en el buffer de recepcin. usb_cdc_getc(): Obtiene el carcter recibido en el Buffer de recepcin. usb_cdc_putc(char c): Coloca el carcter que recibe como parmetro en el buffer de transmisin para ser enviado. Hay ms funciones disponibles para su uso directo, la descripcin de cada una de ellas las podis encontrar en la cabecera del archivo usb_cdc.h.

Comunicacin serie I2C entre PIC y EEPROM 24LC256A Uso del TMR1 como temporizador Controlador Domstico Kit de desarrollo PIC16F877A de CCS Controlador LCD Serie Comunicacin USB PIC18F4550 utilizando la clase CDC BootLoader USB Multiplataforma Comandar un PIC a travs de Internet Gobernar un Microcontrolador desde la BeagleBoard-Xm Empezando con las libreras grficas de Microchip Implementacin de una Mquina de Estados Finita en un PIC Conexin inalmbrica entre dos Microcontroladores Comunicacin USBPIC con HID Entrenadora para PIC. Fenix V2.0 Curso PIC32 SDCC (Small Device C Compiler) en Windows Actualizar a Ubuntu 9.10 (Karmic Koala) Programacin de Microcontroladores PIC en C con Ubuntu utilizando el ICD2 Particiones y sistemas de archivos en Linux Algunas razones para probar Ubuntu Instalacin de Ubuntu 9.04 paso a paso Compilador PCW CCS Compiladores C para PIC Programacin PIC en C X - 10

La comunicacin USB a de ser inicializada, eso se consigue llamando a la funcin: usb_init_cs() al principio de la funcin main() Otra cosa que hay que tener en cuenta es que para que la comunicacin USB se mantenga debe ser realimentada constantemente, para ello hay que llamar peridicamente a la funcin usb_task(), por lo que nuestro programa tendr que tener un bucle infinito principal donde deberemos incluir la llamada a esta funcin. Como veis es adaptar el algoritmo de nuestro programa a los requisitos que necesita el "Stack" para que funcione correctamente. Para ello CCS dispone de un gran nmero de ejemplos que nos sirven como plantillas para nuestros desarrollos. De las libreras que nos proporciona CCS para la comunicacin USB utilizando la clase CDC hay un archivo el usb_desc_cdc.h donde se guarda la informacin perteneciente a los descriptores del dispositivo ese archivo podemos editarlo y modificar los descriptores perteneciente al VID, PID, consumo del dispositivo y versin del firware. 1 . 2 . 3 . 4 . 5 . 6 . /////Ocoe d cniuain////////////////// //// pins e ofgrc ///////////////// #eie UBCNI_I dfn S_OFGPD 003 x03 #eie UBCNI_I dfn S_OFGVD 006 x41 #eie UBCNI_U_OE 10 /10A (ag d 0.0) dfn S_OFGBSPWR 0 /0m rno e .50 #eie UBCNI_ESO dfn S_OFGVRIN 000 /0.0 /rnei 0.0t 9.9 x10 /10 /ag s 00 o 99 //// Fnd l cniuain///////////////////// //// i e a ofgrc /////////////////////

Si modificamos el VID y el PID tendremos que modificarlo tambin en el archivo .INF Nota: segn la versin del compilador utilizado, puede que haya modificaciones en los archivos de las libreras, en la que yo tengo las opciones de configuracin de los descriptores vienen definidas por etiquetas al principio del archivo. Otra cosa que se puede modificar en este archivo son los "Strings" o cadenas de caracteres que sirven para que Windows muestre informacin referente al fabricante del dispositivo, como por ejemplo nombre de la compaa y nombre del producto. Estas cadenas estn colocadas al final del archivo usb_desc_cdc.h y hay que colocarlas en un formato determinado segn se muestra en el siguiente ejemplo: 0. /srn 1 -Fbiat 1 /tig arcne 0. 2,/Lniu d l cdn 2 0 /ogtd e a aea (crcee +1x (+)22 N aatrs )2 91x 0 0. UBDS_TIGTP,/dsrpo tp 00 (TIG 3 S_ECSRN_YE /ecitr ye x3 SRN) 0. ''0 4 F,, 0. ''0 5 A,, 0. ''0 6 B,, 0. ''0 7 R,, 0. ''0 8 I,, 0. ''0 9 C,, 1. ''0 0 A,, 1. ''0 1 N,, 1. ''0 2 T,, 1. ''0 3 E,, 1. /srn 2-pout 4 /tig rdco 1. 1,/Lniu d l cdn 5 8 /ogtd e a aea (crcee +1x (+)21 N aatrs )2 81X 8 1. UBDS_TIGTP,/dsrpo tp 00 (TIG 6 S_ECSRN_YE /ecitr ye x3 SRN) 1. ''0 7 P,, 1. ''0 8 R,, 1. ''0 9 O,, 2. ''0 0 D,, 2. ''0 1 U,, 2. ''0 2 C,, 2. ''0 3 T,, 2. ''0 4 O, En el archivo .INF tambin hay un campo llamado [Strings] que podemos editar para personalizar la informacin que presentar el Sistema Operativo sobre nuestro dispositivo. Que diferencia hay entre unas cadenas y otras?, pues bien, las que se encuentran en el archivo de los descriptores se mostrarn solo la primera vez que se conecta el dispositivo al ordenador. En Windows esa informacin aparecer en el "bocadillo" informativo que sale a la derecha en la barra de herramientas, cuando el sistema detecta un nuevo hardware. Nota: en Linux esta informacin no aparece y en MAC lo probar pero claro, cuando consiga uno. Despus de que el dispositivo haya sido reconocido por el sistema esa informacin la coger el S.O desde las cadenas contenidas en el archivo .INF y la podremos ver en Windows si vamos a la ventana de "Administrador de dispositi os" seleccionamos el dispositivo y hacemos clic en propiedades.

Instalacin de los drivers en el PC


Bueno este punto solo es cierto a medias, ya hemos dicho que si utilizamos la clase CDC el sistema operativo utiliza drivers genricos instalados ya en el Sistema Operativo, pero para que Windows sepa que driver tiene que asignarle al dispositivo precisa que se instale el archivo .INF, el proceso de instalacin de este archivo es como si fuera un driver completo, es decir, la primera vez que enchufemos el dispositivo al ordenador el plug and play nos detectar un hardware nuevo y nos saldr el asistente para la instalacin del nuevo hardware encontrado. Cuando nos aparezca la ventana preguntndonos si queremos que Windows se conecte a Windows Update para buscar el Software

Comandos Unix/Linux Autmatas Secuenciales Finitos CAD Electrnico Arduino y el controlador LCD serie

seleccionaremos la opcin: No por el momento. En la siguiente ventana donde nos pregunta que desea que haga el asistente? marcaremos la opcin de: Instalar desde una lista o ubicacin especfica (avanzado) y en la siguiente ventana nos aparecer las opciones de bsqueda en la que seleccionaremos la opcin Buscar el controlador ms adecuado en estas ubicaciones y marcaremos la casilla Incluir esta ubicacin en la bsqueda, pulsando sobre examinar seleccionaremos la carpeta donde se encuentra nuestro archivo .INF, si todo ha ido bien comenzar el proceso de instalacin. Y una vez instalado si abrimos el administrador de dispositivos (inicio -->ejecutar-->devmgmt.msc) veremos que nos ha creado un puerto serie virtual, y si quieres ver el driver que le ha asignado Windows sigue los pasos de la figura de abajo empezando por la izquierda.

Chat

[Sw itchnode] nombre mensaje

actualizar k

ayuda emoticonos cbox

Siguenos en ...

Licencia

Todo el contenido de este sitio est bajo una licencia de Creative Commons

El archivo .INF que he utilizado para esta Demo es el que viene con el compilador de CCS lo podis encontrar en la ruta donde instalasteis el compilador en la carpeta drivers, este archivo est preparado para que funcione en Windows NT, Windows 2000, XP, Windows Vista y Windows 7 en sus versiones de 32 y 64 bits. Y como se hace todo esto en Linux? pues muy sencillo porque no hay que instalar ningn archivo .INF automticamente el Sistema Operativo reconoce el dispositivo y le asigna el driver correcto. Lo podemos ver si abrimos la carpeta /dev que es el directorio donde se guardan los controladores de dispositivos en Linux, como ya sabis todo en Linux se gestiona como si de un archivo se tratara, despus de conectar el dispositivo veremos que se nos ha creado un nuevo archivo (puerto COM) con el nombre ttyACM0, ese ser el puerto al que tendremos que conectarnos desde la aplicacin de escritorio. La distribucin de Linux con la que he probado la demo ha sido Ubuntu 10.04 LTS con el kernel 2.2.25 Bueno ya hemos conseguido que nuestro ordenador reconozca a nuestro PIC como un dispositivo vlido, lo nico que nos queda ahora es crear la aplicacin de escritorio para que podamos comunicarnos con el.

<< Inicio < Prev 1 2 3 Prximo > Fin >>


ltima actualizacin el Sbado, 18 de Diciembre de 2010 10:20

2007-2012 AquiHayapuntes.com

Das könnte Ihnen auch gefallen