Está en la página 1de 125

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

PIC18F2550 y USB
Desarrollo de aplicaciones

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

INTRODUCCIN AL PUERTO USB:


USB es una especificacin de las empresas Compaq, Intel, Microsoft y NEC, que describe un canal serie que soporta una gran variedad de perifricos de media y baja velocidad, con soporte integral para transferencias en tiempo real (iscronas) como voz, audio y vdeo comprimido, y que permite mezclar dispositivos y aplicaciones iscronas y asncronas. Por lo tanto, entre los dispositivos USB ms caractersticos se pueden citar teclados, ratones, joysticks, tabletas grficas, monitores, mdems, impresoras, escneres, CD-ROMs, dispositivos de audio (como micrfonos o altavoces digitales), cmaras digitales y otros dispositivos multimedia.

La versin 1.1 (La que soporta el PIC18F2550) establece: - Un acceso al bus gestionado directamente por el Controlador USB, para permitir transferencias iscronas y eliminar los tiempos de arbitracin. - Una velocidad de 12 Mbps (Full Speed o FS) y un subcanal de 1,5 Mbps (Low Speed o LS) para los dispositivos ms lentos, como ratones y joysticks. La coexistencia en un mismo sistema de dispositivos FS y LS se maneja mediante conmutacin automtica y dinmica de velocidad entre unas transferencias y otras. - Una conectividad excepcional, ya que puede manejar hasta 127 dispositivos simultneamente que se pueden conectar y desconectar en caliente, sin tener que reiniciar el sistema. - Una configuracin automtica de dispositivos, que elimina la necesidad de realizar configuraciones manuales por medio de puentes o conmutadores. - La coexistencia de dispositivos iscronos y asncronos. Los dispositivos iscronos se atienden en funcin del ancho de banda y latencia requeridos, y los asncronos se atienden durante el tiempo restante no consumido por los dispositivos iscronos.

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

- Una distribucin de alimentacin desde el Controlador USB, que permite la conexin tanto de dispositivos alimentados desde el bus como autoalimentados. - Una arquitectura fcilmente escalable para permitir la existencia de varios Controladores USB en un sistema. - La versin 1.1 es soportada por los siguientes sistemas operativos: Windows 98\Windows 2000\Windows XP\Windows Vista\Windows 7 y adems los siguientes OS ajenos a windows: Linux\Mac OS.

NIVEL FISICO:
A nivel fsico, USB utiliza un cable de 4 conductores para transmitir una seal diferencial (D+ y D-) y alimentacin (VBus = 5V y GND) por medio de conexiones punto a punto. Los dispositivos LS van obligatoriamente equipados con un cable de longitud adecuada (hasta unos 3m, dependiendo de sus caractersticas elctricas), mientras que los FS pueden ir equipados con un cable o utilizar cables independientes de hasta 5m (tambin dependiendo de sus caractersticas elctricas). La comunicacin es bidireccional y semi-dplex, y utiliza codificacin auto - reloj NRZI (la lnea cambia de nivel si se transmite un 0 y no cambia si transmite un 1) con "bit stuffing" (insercin de un cero tras la transmisin de 6 unos, para asegurar transiciones en la lnea y permitir que la PLL del receptor se mantenga sincronizada). Los dispositivos disponen de un transmisor diferencial, receptores diferencial y S/E y resistencias de terminacin con los que pueden transmitir y detectar varios estados elctricos distintos en la lnea: - Transmisin/Recepcin diferencial de bits: Estados DIFF0 y DIFF1, denominados tambin estados J y K. - SE0 (Single-Ended 0): Ambas seales D+ y D- a 0V. Se utiliza para detectar la conexin/desconexin de dispositivos, para indicar el EOP (fin de paquete) y para generar reset.

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

- IDLE: reposo o lnea en alta impedancia, necesario para permitir transferencias semi-dplex, detectar la conexin y desconexin de dispositivos y discriminar entre dispositivos FS y LS. - El SOP (principio de paquete) se indica mediante una transicin IDLE a K. - El EOP (fin de paquete) se indica mediante una secuencia SE0 (2 bits) + J (1 bit) + IDLE. - Deteccin de dispositivo y discriminacin FS/LS: cuando el transmisor deja la lnea en IDLE, si hay un dispositivo conectado su polarizacin fuerza un estado J (DIFF0 si LS DIFF1 si FS), y si no lo hay, la polarizacin del transmisor fuerza un estado SE0. - Reset: transmisin de SE0 durante >= 10 ms.

HUBS:
Dentro de la arquitectura USB, unos elementos esenciales y especiales son los Hubs (concentradores), que proveen conectividad (los dispositivos no se conectan entre s directamente, sino cada uno a un hub), detectan la conexin y desconexin de dispositivos y si son FullSpeed o LowSpeed, generan alimentacin hacia los dispositivos e incorporan la terminacin de las lneas. Los Hubs disponen de una conexin "Upstream" hacia el ordenador y una o varias conexiones "Downstreams" hacia dispositivos u otros Hubs (concentrando efectivamente varios puntos de conexin en uno slo), de forma que se pueden encadenar varios Hubs para formar una topologa en varios niveles. Como a los Hub se conectan los dispositivos en estrella, la topologa USB se denomina Estrella en Niveles. USB permite hasta 6 niveles, y en el nivel 0 (Raz o Root) se encuentra el Controlador USB, que controla

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

todo el trfico de informacin en el bus. Los Hubs podrn ir integrados en algunos dispositivos (del estilo de teclados, impresoras y monitores), y tambin estarn disponibles como elementos independientes. Normalmente los Hubs sern autoalimentados, aunque bajo ciertas restricciones topolgicas podran utilizarse Hubs alimentados desde el bus. El hub dispone de un Repetidor, para pasar informacin entre el puerto Upstream y los puertos Downstreams, y de un Controlador, que incorpora un juego de registros a travs de los cuales el Controlador USB configura el hub y controla y monitoriza los puertos Downstream.

CONEXIN / DESCONEXIN EN CALIENTE:


USB permite conectar un nuevo dispositivo sin tener que reiniciar el sistema. Cuando un Hub detecta una nueva conexin se lo comunica al Controlador USB, el sistema interroga al nuevo dispositivo, determina sus propiedades y posibilidades y lo configura. Adicionalmente el sistema carga el manejador adecuado al tipo de dispositivo con lo que el usuario puede empezar a trabajar con el mismo inmediatamente. Algunos sistemas operativos llaman a este proceso "Bus Enumeration".

PROTOCOLO USB:
El protocolo de nivel fsico se basa en tokens (testigos). El controlador USB transmite tokens que incluyen la direccin del dispositivo destino, y el dispositivo que detecta su direccin en el Token responde y lleva a cabo la transferencia de datos con el controlador. De esta manera, el Controlador USB maneja la parte ms compleja del protocolo, generando los tokens de transferencias de datos a 12 Mbps o a 1,5 Mbps, y controlando la conexin lgica entre el sistema y las funciones internas de cada dispositivo. El controlador USB tambin maneja el consumo en el bus a travs de las funciones Suspender/Continuar, por medio de las cuales controla los modos Reposo/Activo de los dispositivos. Esta arquitectura permite el diseo de dispositivos extremadamente simples y de bajo coste.

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

USB divide el tiempo en espacios de 1ms denominados Tramas, durantes las cuales se llevan a cabo las comunicaciones a travs de Transacciones, las cuales se componen a su vez de Paquetes. Las transacciones se compone de 3 fases: Token, Dato y Validacin (Handshake): - La fase de Token se compone de un paquete de Token enviado por el Controlador USB, y siempre est presente en toda transaccin. El paquete contiene los campos: - PID (identifica el tipo de paquete). Todos los PIDs van protegidos por bits redundantes. - Direccin del elemento destino (7 bits de dispositivo + 4 bits de elemento interno al dispositivo), y CRC5. - La fase de Datos (opcional) se compone de los paquetes de datos que se transfieren entre el Controlador USB y el dispositivo. Cada paquete se compone de los campos PID, Datos, y CRC16. - La fase de Validacin (opcional) se usa para indicar el resultado de la transaccin. Se compone slo de un campo PID. Adicionalmente, el Controlador USB indica el principio de cada Trama y la transmisin hacia dispositivos LS mediante tokens especiales.

TIPOS DE TRANSFERENCIA DE DATOS:


USB soporta 4 tipos de transferencias de datos: - Control, para configuracin y control de dispositivos y para manejo del bus. - Iscrono, para transmisin de informacin con ancho de banda y latencia garantizadas, necesario para aplicaciones como audio, telefona y vdeo. Permite una comunicacin peridica y continua entre el sistema y el dispositivo. - Interrupcin, para transferencias de pocos datos, no peridicas, de baja frecuencia pero con unos ciertos lmites de latencia.

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

- Bulk, para transferencias de grandes cantidades de datos con dispositivos asncronos, como impresoras, escneres, cmaras de fotos (foto fija), etc. El PIC18F2550 soporta la trasferencia interruptiva (Mouse, teclado y cualquier dispositivo HID) y transferencias tipo Bulk (Paquetes) en dispositivos como por ejemplo osciloscopios USB. Desarrollaremos entonces la transferencia de control, interruptiva y Bulk.

TRANSFERENCIA DE CONTROL:
- Se desarrollan en 3 Transacciones: - Transaccin de Configuracin (Setup), en la que se enva al dispositivo un paquete que especifica la operacin a ejecutar. Ocupa 8 bytes. - Cero o ms Transacciones de Datos, en las que se transfieren los paquetes de datos en el sentido indicado por la Transaccin de Configuracin. La informacin til por paquete puede ser de 8, 16, 32 64 bytes para Endpoints FS, y de 8 bytes para Endpoints LS. - Transaccin de Estado, en la que el receptor informa del estado final de la operacin. - Se procesan por medio de un mecanismo "best effort", segn el cual el Controlador USB las va procesando en funcin del tiempo disponible en cada Trama. Como mnimo se reserva el 10% del tiempo de Trama, y se puede utilizar tiempo adicional siempre que las necesidades de los trficos iscrono y de interrupcin lo permitan. - Incorporan mecanismos de deteccin de errores (CRC) y de recuperacin/retransmisin de datos.

TRANSFERENCIAS DE INTERRUPCIN:

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

- Aseguran una transaccin (paquete) dentro de un periodo mximo (los dispositivos FS pueden solicitar entre 1 y 255ms, y los LS entre 10 y 255ms de periodo mximo de servicio). - Incorpora deteccin de errores y retransmisin de datos. - La informacin til por paquete puede oscilar entre 1 y 64 bytes para dispositivos FS y entre 1 y 8 bytes para dispositivos LS. - El sistema puede asignar como mximo el 90% del tiempo de Trama para transferencias iscronas y de interrupcin. Si el sistema no puede garantizar tiempo suficiente como para manejar una nueva conexin de interrupcin (transmitir un nuevo paquete dentro del periodo mximo requerido), simplemente no se establece la conexin.

TRANSFERENCIAS BULK:
- Slo son utilizables por dispositivos FS. - Se procesan por medio de un mecanismo "good effort", en el que el sistema aprovecha cualquier ancho de banda disponible y en el momento en que est disponible (en otras palabras, no se garantiza una latencia ni un ancho de banda mnimos). Se puede utilizar el tiempo de Trama reservado y no consumido por transferencias de control (10%). - Incorporan mecanismos de control de errores para garantizar la entrega de datos. - La informacin til por paquete puede ser de 8, 16, 32 64 bytes. Estos 4 tipos de transferencias estn disponibles como interfaces software que el sistema pone a disposicin de los manejadores de dispositivo, estando los manejadores obligados a comunicarse con los dispositivos nica y exclusivamente a travs de estos 4 interfaces de programacin. Esto viene a significar que un manejador de dispositivo USB jams accede directamente al hardware del dispositivo, y por otro lado significa que todos los dispositivos USB deben cumplir necesariamente unas especificaciones bsicas comunes, ya que deben gestionar adecuadamente los tipos de transferencias que soportan.
8

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Adicionalmente, los dispositivos USB se agrupan en Clases, de forma que todos los dispositivos de una misma Clase cumplen adems con las especificaciones de dicha Clase, ya que la Clase incide directamente en la manera en que el software interacta con el dispositivo.

MODELO LGICO:
Los dispositivos USB pueden tener una o ms configuraciones posibles, que definen distintas formas de funcionamiento. A nivel lgico, una determinada configuracin es un conjunto de interfaces, donde cada interfaz especifica qu partes del hardware de dispositivo se comunican con el sistema, donde cada una de estas partes de hardware se denomina Endpoints. En resumen, cada posible configuracin de un dispositivo USB es un conjunto de interfaces y cada Interfaz es un conjunto de Endpoints. Los Endpoints son unidireccionales, y se direccionan por un nmero y por el sentido en que transfieren la informacin (IN (entrada) si transfieren informacin hacia el sistema, y OUT (salida) si transfieren informacin hacia el dispositivo). La comunicacin entre una aplicacin y los distintos Endpoints de un dispositivo se realiza a travs de USB por medio de unos caminos lgicos de transferencias de datos denominados Pipes, de forma que cada Pipe comunica la aplicacin con un determinado Endpoint en el dispositivo. Los Pipes pueden ser de tipo Control (tambin denominadas de Mensaje), que son bidireccionales y con formato especificado por la norma, y de tipo Stream, que son unidireccionales (tipo FIFO) y con formato libre no especificado por la norma. Los Pipes de Control conectan la aplicacin con un Endpoint de control (formado por una pareja de Endpoints uno IN y otro OUT) para realizar transferencias bidireccionales de Control. Los pipes stream conectan la aplicacin con un Endpoint para realizar transferencias unidireccionales Iscronas, Interrupcin y Bulk. Todos los dispositivos USB deben implementar los dos Endpoints 0 (IN y OUT) para permitir que el sistema pueda establecer el Pipe de control por defecto y pueda acceder a informacin de identificacin y requisitos de configuracin y pueda configurar el dispositivo.
9

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Adicionalmente, USB permite direccionar otros 15 Endpoints IN y 15 endpoints OUT por dispositivo FS y otros 2 Pipes de control y/o interrupcin por dispositivo LS. Estos Endpoints adicionales son opcionales y dependientes de los requisitos de implementacin del dispositivo.

CLASES USB:
Una Clase USB es un grupo de dispositivos (o interfaces) con atributos o caractersticas similares. Las especificaciones para cada clase permiten el desarrollo de dispositivos que pueden controlarse por medio de un manejador adaptativo, es decir, que se configura segn la Clase reportada por el dispositivo. Dos dispositivos (o interfaces) pertenecen a la misma Clase si por ejemplo utilizan una misma forma de comunicarse con el sistema, o si por ejemplo utilizan el mismo formato de datos. Las Clases USB se usan principalmente para describir la manera en que los dispositivos (o interfaces) se comunican con el sistema, incluyendo los mecanismos de control y datos, y adicionalmente algunas Clases se usan para identificar en todo o en parte la funcionalidad del dispositivo (o interfaz). En este caso, la Clase se puede utilizar para identificar qu manejador debe controlar dicho dispositivo (o interfaz). Adicionalmente, los dispositivos de una Clase pueden agruparse en subclases, lo que facilita an ms el que los manejadores puedan explorar el bus y seleccionar todos aquellos dispositivos que pueda controlar. Antes de seguir con nuestro curso vamos a describir lo que hasta ahora hemos Visto: Host: Dispositivo maestro que inicia la comunicacin (Generalmente la computadora). Hub: Dispositivo que contiene uno o mas conectores o conexiones internas hacia otros dispositivos usb, el cual habilita la comunicacin entre el host y con diversos dispositivos. Cada conector representa un puerto USB. Dispositivo compuesto: Es aquel dispositivo con mltiples interfaces
10

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

independientes. Cada una tiene una direccin sobre el bus pera cada interfase puede tener un diferente driver device en el host. Puerto USB: Cada host soporta solo un bus, cada conector en el bus representa un puerto USB por lo tanto sobre le bus puede haber un varios conectores, pero solo existe una ruta y solo un dispositivo puede transmitir informacin a un tiempo. Driver: es un programa que habilita aplicaciones para poderse comunicar con el dispositivo. Cada dispositivo sobre el bus debe tener un driver, algunos perifricos utilizan los drivers que trae Windows. Puntos terminales (Endpoints): Es una localidad especfica dentro del dispositivo. El Endpoint es un buffer que almacena mltiples bytes, tpicamente es un bloque de la memoria de datos o un registro dentro del microcontrolador. Todos lo dispositivos deben soportar el punto terminal 0. Este punto terminal es el que recibe todo el control y la peticiones de estado durante la enumeracin cuando el dispositivo esta sobre el bus. Tuberas (Pipes): Es un enlace virtual entre el host (la PC) y el dispositivo USB, este enlace configura los parmetros asociados con el ancho de banda que tipo de transferencia se va a utilizar (Control, Bulk, Iscrona o Interrupt) direccin del flujo de datos y el mximo y/o mnimo tamao de los paquetes/buffers. Cada enlace est caracterizado por su banda de paso (Token), su tipo de servicio, el nmero de punto terminal (End Point) y el tamao de los paquetes. Estos enlaces se definen y crean durante la inicializacin del USB. Siempre existe un enlace virtual 0 que permite tener acceso a la informacin de configuracin del perifrico USB (estado, control e informacin). La norma USB define 2 tipos de enlaces virtuales (pipe); stream y message. Stream Pipes: se trata de un flujo sin formato USB definido, esto significa que se puede enviar cualquier tipo de dato. Este tipo de pipe

11

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

soporta las transferencias bulk, iscronas, e interrupt. Adems tanto el host como el dispositivo USB pueden controlar. Message Pipes: este tipo de enlace virtual si tiene un formato USB definido y solo puede soportar la transferencia Control. Cuando se conecta un dispositivo USB a la PC se produce el Proceso de Enumeracin, el cual consiste en que el host le pregunta al dispositivo que se presente y le diga cuales son sus parmetros, tales como: Consumo de energa expresada en unidades de Carga. Numero y tipos de Puntos terminales. Clase del producto. Tipo de transferencia. Razn de escrutinio, etc.

El proceso de enumeracin es inicializado por el host cuando detecta que un nuevo dispositivo que ha sido adjuntado al Bus. El host le asigna una direccin al dispositivo adjuntado al bus y habilita su configuracin permitiendo la transferencia de datos sobre el bus. Ahora que ya tenemos una nocin sobre como trabaja el puerto USB, vamos a ver un poco el PIC18F2550, su estructura interna, la etapa osciladora, registros internos, etc. A medida que vallamos avanzando en el estudio de este microcontrolador veremos sus caractersticas pero principalmente como comunicarnos con el puerto USB y el control de dispositivos mediante interfaces hechas en VB.net 2008.

PIC18F2550: Caractersticas principales

12

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Dentro de la hoja de datos del microcontrolador encontraremos las siguientes caractersticas.

Nota n 1: Soporta solo Full Speed y Low Speed * 1 Nota n 2: Soporta modos interruptivo, iscrono y bulk transfer. Nota n 3: Al tener una arquitectura optimizada para C utilizaremos un compilador de C como puede ser C de CCS para nuestros programas. * 1: Veamos el siguiente cuadro:

13

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Segn este cuadro vemos que 1.5Mb/seg. Es el total de ancho de banda que posee el bus por lo cual es imposible que el micro se comunique con el Host a esa velocidad ya que hay perdidas derivadas de restricciones del protocolo, otros perifricos conectados al Host, etc. En la mayora de los casos nos vamos a poder comunicar a 64KB/seg. La distribucin de pines del PIC18F2550 es la siguiente:

14

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Los pines marcados de rojo son los que le dan al PIC la capacidad de conectarse con un controlador USB externo. El mismo se conectara de la siguiente manera:

Esta funcin del microcontrolador no la estudiaremos ya que vamos a utilizar el transceptor USB interno del microcontrolador. El PIC18F4550, tambin tiene la posibilidad de conectarse al puerto paralelo mediante USB, es decir puede convertir los datos seriales provenientes del USB y convertirlos en un dato de 8 bits de forma paralela utilizando la funcin Streaming pararell Port. Esta funcin es utilizada en transmisiones iscronas donde hay que transmitir grandes volmenes de datos como por ejemplo la comunicacin con memorias externas. Al protocolo USB tambin lo llaman la pila USB: en las capas superiores tenemos las funciones bsicas que el usuario puede realizar (comunicacin lgica). esto a su vez va a parar a la segunda capa y luego a la tercera capa (comunicacin fsica) que involucra el

15

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

aspecto elctrico. En nuestro caso estaramos directamente metidos en la capa superior, pero algunas veces entrando en las otras dos:

Nosotros trabajaremos programando en C y las capas se distribuirn de la siguiente manera: primera capa (superior): programacin bsica en C. segunda capa (intermedio): llamados a los drivers que trae el compilador de C. tercera capa (inferior): llamados a los drivers que trae el compilador de C (procesos dentro de los drivers) y conexin del mdulo USB al HOST. Volviendo al tema de los pipes y los Endpoint, los mismos se pueden graficar de la siguiente manera:

16

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Como parte de su protocolo, nos encontraremos entre otras cosas que USB maneja la transmisin de datos por paquetes, llamados TOKEN en la cul el HOST es el iniciador de todas las transferencias que se producen en el BUS.

17

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

En la parte de transmisin de datos USB, los paquetes de datos se encuentran en grupos de paquetes de datos, y dentro de estos, existen unos llamados DATA0, DATA1. hay un proceso llamado sincronizacin del data toggle. A grandes rasgos esto no es ms que un mtodo de validacin de paquetes, y lo que hace es enviar alternadamente a DATA0 y DATA1 en una secuencia seguido de su ACK respectivo. todo con el objetivo de mantener la sincronizacin transmisor <-> receptor.

MDULO USB DEL PIC18F2550:


Bueno para empezar veremos donde estn ubicados los pines D- y D+ (Correspondientes a las seales de datos del puerto USB en el PIC18F2550 y en el PIC18F4550), as como tambin los otros pines

18

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

que intervienen en su funcionamiento.

Breve descripcin del funcionamiento del mdulo USB: La familia de dispositivos PIC18FX455/X550 contiene una interfaz serie compatible con el SIE (serial interfase engine o mquina con comunicacin serie en espaol) USB full-speed (2.0) y de poca velocidad (1.0) que permite la comunicacin rpida entre cualquier dispositivo USB y el microcontrolador PIC. El SIE puede interconectarse directamente al USB, utilizando el transmisor - receptor interno, o puede conectarse a travs un transmisorreceptor externo. El PIC tiene un regulador interno de 3,3V para alimentar el transmisor-receptor interno en aplicaciones de 5V. Se han incluido algunas caractersticas especiales en el hardware para mejorar el funcionamiento. Se proporciona memoria de puerto dual en la memoria de datos del dispositivo (RAM del USB) para tener acceso directo a la memoria desde el ncleo del microcontrolador y desde el SIE. Tambin se proporcionan unos buffer para que el programador elija libremente el uso de la memoria dentro del espacio de la RAM del USB. Existe un puerto paralelo para transmitir grandes cantidades de datos (SSP), para esto se ha proporcionado la ayuda de transferencia

19

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

ininterrumpida de volmenes de datos grandes, por ejemplo datos sncronos, a los buffer de memoria externos. Bueno ahora veremos en detalle como se comunica la SIE con el exterior y las diferentes opciones a nivel conexionado del USB con el exterior:

Antes que nada veremos las notas a las referencias 2 y 3 que estn dentro de la imagen. Aclarar que estas notas son importantes para no cometer equivocaciones a la hora de programar el cdigo que lo configura. Entonces: Nota* 2: Las pull - ups externas son opcionales, pero si queremos usarlas hay que desactivar las propias resistencias de pull - up internas que tiene el microcontrolador. La activacin o desactivacin de estas resistencias se hace mediante el bit UPUEN...que se ver ms adelante. Nota* 3: El regulador de voltaje de 3.3v, nos provee de tensin al mdulo USB en aplicaciones de 3.3v. En caso de tener una fuente externa de 3.3v conectada a Vusb, tenemos que desactivar el mdulo interno del regulador. Vemos en la imagen los diferentes pines que segn configuracin de la

20

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

SIE, podemos usar un transceptor externo, el fin de este tutorial no es el estudio de los mdulos externos, por lo que se ver muy superficialmente. Algo Muy importante! que tenemos que ver es el puente bidireccional entre la SIE y el SSP...este puente nos va a permitir el transporte a alta velocidad de grandes flujos de datos en modo sincrono, por lo que se estudiar tambin en su momento. Ver la siguiente imagen en donde se muestra dicho puente:

Estado y control del mdulo USB: En total hay 22 registros para manejar las transacciones del USB. Los registros son: Registro de control del USB (UCON) Registro de configuracin del USB (UCFG) Registro de estado de la transferencia del USB (USTAT) Registro de direccin de dispositivo USB (UADDR) Registros del nmero del frame (UFRMH: UFRML) Registros activadores de los Endpoints de 0 a 15 (UEPN) El primer registro que estudiaremos ser el UCON (registro de control del USB): En la siguiente imagen veremos como est constituido:

Este registro de control contiene los bits necesarios para determinar el comportamiento del bus durante las transferencias. El registro contiene los bits que gobiernan lo siguiente: Permiso del perifrico principal del USB

21

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones Reset de los punteros tipo ping-pong Control del modo al suspender Desactivar la transferencia de paquetes El significado de los diferentes bits se muestra a continuacin: BIT7: Bit no implementado se lee como "0" BIT6: El bit PPBRST, se encarga de controlar el estado del reset, cuando se utiliza el modo Doble - Buffering o modo Ping - Pong. Cuando se activa el bit PPBRST, todos los buffers Ping - Pong se fijan a los buffers intermedios. El bit PPBRST, tiene que borrarse por firmware. Este bit se ignora en los modos de buffer que no usen el buffer ping-pong. BIT5: El bit SE0, se utiliza para indicar el estado del bus, si slo se manda un cero. Cuando se permite el mdulo USB, este bit debe supervisarse para determinar si las lneas de datos han salido de una condicin de single-ended cero (slo se manda cero). Esto ayuda a distinguir el estado de ciclo inicial de la seal de reset del USB. BIT4: El bit PKTDIS, es un flag que indica si el SIE ha inhabilitado la transmisin y la recepcin de paquetes. Este lo bit activa el SIE cuando recibe un SETUP para permitir su procesamiento. Este bit no lo puede activar el microcontrolador, slo borrar; al despejarlo el SIE continua la transmisin y/o recepcin. Cualquier acontecimiento pendiente dentro del buffer intermedio todava estar disponible, indicado dentro del registro USTAT en el buffer FIFO. BIT3: El bit USBEN, la operacin total del mdulo USB se controla con este bit. Activar este bit setea el mdulo y resetea todos los bits PPBI en el Buffer a 0. Este bit tambin activa el regulador de tensin del chip y conecta las resistencias pull-up, si se permiten. As, este bit puede utilizarse como una unin/separacin al USB. Aunque se ignoran todos los estados y bits de control si este bit est borrado, el mdulo necesita preconfigurarse antes de activar este bit. BIT2: El bit RESUME, permite al perifrico realizar un reinicio ejecutando la seal resume. Para generar un reinicio vlido, por firmware se debe activar el RESUME durante 10ms y entonces borrar el bit. BIT1: El bit SUSPND, coloca el mdulo y soporte del circuito (es decir, regulador de tensin) en un modo de baja potencia. El reloj de entrada al SIE se desactiva. Este bit debe activarse por software dentro de la respuesta a una interrupcin IDLEIF. Debe borrarse por firmware despus de observar una interrupcin ACTVIF. Cuando este bit est activo, sigue estando el dispositivo unido al bus pero las salidas del transmisor-receptor permanecen en reposo. La

22

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones tensin en el pin VUSB puede variar dependiendo del valor de este bit. Activar este bit antes de un IDLEIF dar lugar a comportamiento imprevisible del bus. Nota: Cuando est en el modo de suspensin, el bus del dispositivo USB se limita al 500A de corriente. sta es la corriente completa cedida por el dispositivo PIC y su circuito de soporte. Hay que tener cuidado de ceder la corriente mnima cuando el dispositivo entre en el modo de suspensin. BIT0: Bit no implementado se lee como "0" Registro de configuracin del USB: Antes de comunicarse con el USB, se tiene que configurar el mdulo del hardware interno y/o externo. La mayor parte de la configuracin se realiza con el registro UCFG. El regulador de tensin del USB se maneja con la configuracin de los registros. El registro UFCG contiene la mayor parte de los bits que dirigen el comportamiento del mdulo USB. stos incluyen: Velocidad del bus (Alta velocidad vs Baja velocidad) Permiso de las resistencias pull-up del chip Permiso del transmisor del chip Uso del buffer ping-pong El registro UCFG tambin contiene dos bits que ayudan a probar el mdulo, eliminando errores y certificaciones del USB. La salida de control de estos bits permite el monitor de estado y generacin de patrones de ojo.

BIT 7: UTEYE: Bit de permiso del Tes. patrn de ojo del USB. 1 = prueba del patrn de ojo permitido. 0 = prueba del patrn de ojo inhabilitado. BIT 6: UOEMON: Bit de permiso del monitor OE del USB. 1 = seal del UOE* activa; indica los intervalos durante los cuales las lneas D+/D- estn conduciendo. 0 = seales del UOE* inactivas. BIT 4: UPUEN: Bit de permiso del pull-up del chip. 1 = Pull-up del chip permitido (pull-up en D+ con FSEN=1 o en D- con FSEN=0). 0 = Pull-up del chip desactivado. BIT 3: UTRDIS: Bit inhabilitador del transmisor del chip 1 = Transmisor del chip inhabilitado; la interfaz digital del transmisor permitida. 23

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones 0 = transmisor del chip activo. BIT 2: FSEN: Bit de permiso del Full-Speed. 1 = dispositivo Full-speed: controla los flancos del transmisor; requiere un reloj de 48MHz. 0 = dispositivo de poca velocidad: controla los flancos del transmisor; requiere un reloj de 6MHz. BIT 1-0 PPB1:PPB0: Bits de configuracin de los buffer ping-pong. 11 = buffers ping-pong permitidos en los End-Points 1 a 15. 10 = buffers ping-pong permitidos en todos los End-Points. 01 = buffer ping-pong permitido en los End-Points de salida 0. 00 = buffers ping-pong inhabilitados. Nota 1: 1: Si se activa UTRDIS, la seal UOE* estar activa independiente del ajuste del bit UOEMON. 2: Los bits UPUEN, UTRDIS y FSEN no deben cambiarse mientras el mdulo USB est permitido. Estos valores se deben preconfigurar antes de permitir el mdulo. 3: Este bit solamente es vlido cuando el transmisor del chip est activo (UTRDIS = 0); si no, se ignora. Nota 2: La velocidad del USB, la transmisin y las pull-up deben configurase solamente durante la fase de activacin del mdulo. No se recomienda cambiar estos ajustes mientras que el mdulo est funcionando. Viendo un poco el registro UCFG, en donde se encuentra el bit UTEYE, que es un bit de control de estado del USB que vigila los errores y es un generador de patrones. Luego tenemos al bit UOEMON. Este bit nos muestra cuando las lneas D+ y Destn conduciendo y lo que estos valores representan segn el siguiente cuadro:

24

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Ahora tenemos 2 bit que trabajan de forma conjunta FSEN y UPUEN, segn sea su configuracin activarn o desactivarn las Resistencias Pull - Up internas del mdulo USB o configuraran el mdulo USB para trabajar a full - speed o slow speed. Veamos el circuito lgico que realiza estas acciones y una pequea tabla donde se muestran las posibles configuraciones.

Luego tenemos UTRDIS, que habilita o deshabilita el transmisor del chip, en caso de que el bit sea 0, activamos el transceptor y los pines C4 y C5 son usados para conectar el dispositivo USB. En caso de que el bit sea seteado a 1, el transceptor es desactivado y las lneas C4 y C5 quedan para poder ser usadas como entradas digitales nicamente.

Por ltimo tenemos los bits de configuracin BIT 1-0 PPB1:PPB0: que establecen la configuracin del modo Ping - Pong.

25

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones Permiso de la salida del monitor del USB: El monitor del USB OE* proporciona informacin de la operacin del SIE si est escuchando el bus o est conduciendo por el bus. Esto se permite por defecto al usar un transmisor externo o cuando UCFG<6>=1. La supervisin del USB OE* es til para el eliminar errores del sistema inicial. Permiso del test patrn de ojo: Se genera una prueba automtica al activar el bit UCFG<7> del patrn de ojo. La salida del patrn de ojo depender de los ajustes del mdulo, significando que el usuario es el primer responsable de configurar los ajustes del reloj SIE, las resistencias pull-up y el modo transmisor. Adems, el mdulo tiene que estar permitido. Una vez que se active UTEYE, el mdulo emula un cambio a una recepcin para transmitir el estado y comenzar a transmitir una secuencia de bits J-K-J-K (KJ-K-J en velocidad completa). La secuencia se repetir indefinidamente mientras que el test patrn de ojo est permitido. Observar que este bit no se debe activar mientras que el mdulo est conectado con un sistema real USB. Este modo de prueba se utiliza para ayudar con las verificaciones internas de las pruebas de certificacin USB. Se utiliza para depurar los fallos obtenidos por el ruido de las seales que pueden afectar los flancos del sistema, uniones de impedancias mal hechas y proximidad a otros componentes. No comprueba correctamente la transicin de un estado de recepcin a uno de transmisin. Aunque el patrn de ojo no significa que se sustituya la prueba ms compleja de certificacin del USB, pero ayuda durante el primer test para eliminar errores del sistema. Regulador de voltaje interno: Los dispositivos PIC18FX455/X550 tienen un regulador incorporado 3,3V para proporcionar energa al transmisor interno y proporcionar una fuente para el pull-up interno y externo. Para que el regulador sea estable se necesita un condensador externo de 220nF (20%). Cabe aclarar que se pueden colocar capacitores de mayor capacidad pero no es necesario ya que con 220nF (20%) funciona correctamente. Nota: La corriente de VUSB es suficiente para controlar un pull-up externo y el transmisor interno. El regulador se activa por defecto y puede inhabilitarse a travs del bit de configuracin VREGEN. Cuando est activo, la tensin es visible en el pin VUSB. Cuando el regulador est desactivado, se tiene que conectar una fuente de 3,3V al pin VUSB para alimentar el transmisor interno. Si el transmisor interno no se utiliza, VUSB tampoco se activa. VDD debe ser mayor que VUSB en cualquier momento, o igual con el regulador inhabilitado.

26

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones Registro de estado del USB (USTAT): El registro de estado del USB divulga el estado de las transacciones dentro del SIE. Cuando el SIE publica una interrupcin de transferencia completa por el USB, hay que leer USTAT para determinar el estado de la transferencia. USTAT contiene el nmero del Endpoint de la transferencia, direccin y valor del puntero del buffer ping - pong (si est utilizado). Nota: Los datos en el registro de estado del USB son vlidos solamente cuando el flag de interrupcin TRNIF est activo. El registro USTAT es realmente una ventana legible de los cuatro bytes de estado FIFO mantenida por el SIE. Permite al microcontrolador procesar una transferencia mientras que SIE procesa los Endpoints adicionales. Cuando el SIE termina con un buffer de lectura o escritura de datos, actualiza el registro USTAT. Si se realiza otra transferencia USB antes de realizar una interrupcin de transaccin completa, el SIE almacenar el estado de la transferencia siguiente en el estado FIFO. Despejando el flag de la transferencia completa, TRNIF, provoca al SIE que avance el FIFO. Si los datos siguientes en el registro FIFO son vlidos, el SIE inmediatamente reafirma la interrupcin. Si no hay datos adicionales presentes, TRNIF seguir borrado; los datos de USTAT puede que no sean correctos. Nota: Si se recibe una peticin de Endpoint mientras que el USTAT FIFO este lleno, el SIE publica automticamente un NAK de nuevo al anfitrin. En la siguiente figura mostramos la FIFO:

Ahora veremos que significan cada uno de los bits dentro del registro.

27

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones BIT 7: No implementado, legible como "0" BIT 6 al 3: ENDP3:ENDP0: Bits de actividad del nmero codificado del ltimo Endpoint (representa el nmero del BDT actualizado por la ltima transferencia del USB). 1111 = Endpoint 15 1110 = Endpoint 14 . 0001 = Endpoint 1 0000 = Endpoint 0 BIT2: DIR: Bit puntero de la ltima direccin BD. 1 = la ltima transaccin era de entrada. 0 = la ltima transaccin era de salida o de SETUP. BIT1 PPBI: Bit puntero del puntero ping-pong BD* 1 = la transaccin pasada estaba al banco Odd de BD. 0 = la transaccin pasada estaba al banco Even de BD. NOTA: Este bit es solamente vlido para los Endpoints con registros Even y Odd BD disponibles.

Las funciones de cada bit se dan a continuacin: BIT 7 - 5: No implementados, se leen como "0". BIT 4 EPHSHK: Bit de permiso del protocolo de intercambio 1= Se permite el protocolo de intercambio del Endpoint. 0= Se inhabilita (utilizado con los Endpoints sncronos). BIT 3 EPCONDIS: Bit bidireccional de control del Endpoint Si EPOUTEN=1 y EPINEN=1: 1= Inhabilita las transferencias de control del Endpoint n; slo permite las de entrada y las de salida. 0= Permite las transferencias de control (SETUP) y las de entrada y salida del Endpoint n.

28

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones BIT2 EPOUTEN: Bit de permiso de la salida del Endpoint. 1= La salida del Endpoint n permitida. 0= La salida del Endpoint n inhabilitada. BIT 1 EPINEN: Bit de permiso de la entrada del Endpoint. 1= La entrada del Endpoint n permitida. 0= La entrada del Endpoint n inhabilitada. BIT 0 EPSTALL: Bit de permiso de la parada del Endpoint* 1= Se puede parar el Endpoint n. 0= El Endpoint n no se puede parar. Nota 1: Vlido solamente si se permite el Endpoint n; si no, se ignora el bit. Cada uno de los 16 Endpoints bidireccionales posibles tiene un registro de control independiente, UEPn (donde n representa el nmero del Endpoint). Cada registro tiene los mismos bits de control. El bit EPHSHK (UEPn<4>) controla el protocolo de intercambio de los Endpoints; activar este bit permite el protocolo de intercambio del USB. Tpicamente, este bit se setea siempre excepto al usar Endpoints sncronos. El bit EPCONDIS (UEPn<3>) se utiliza para permitir o inhabilitar las operaciones de control del USB (SETUP) con Endpoint. Borrar este bit permite las transacciones SETUP. Observar que los bits EPINEN y EPOUTEN se deben activar para permitir las transacciones de entrada y de salida. Para el Endpoint 0, este bit debe estar siempre borrado por que las especificaciones del USB identifican el Endpoint 0 como el Endpoint de control por defecto. El bit EPOUTEN (UEPn<2>) se utiliza para permitir o para inhabilitar las transacciones de salida del anfitrin. Activar este bit permite transacciones de salida. Semejantemente, el bit EPINEN (UEPn<1>) permite o inhabilita las transacciones de entrada al anfitrin. El bit EPSTALL (UEPn<0>) se utiliza para indicar la condicin STALL para el Endpoint. Si se ejecuta una STALL en un Endpoint particular, el bit EPSTALL para ese Endpoint lo activar el SIE. Este bit permanece hasta que se borre por software o hasta que ocurra un reset del SIE. REGISTRO DE DIRECCIN DEL USB (UADDR): El registro de direccin del USB contiene la nica direccin del USB que el perifrico descifra cuando est activo. UADDR se pone a 00h cuando recibe un reset del USB, indicado por URSTIF, o con un reset al microcontrolador. La direccin del USB la tiene que escribir el microcontrolador durante la fase de

29

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones setup del USB como parte del firmware del USB de la ayuda de microchip. REGISTROS DEL NMERO DEL FRAME DEL USB (UFRMH: UFRML): Los registros del nmero del frame contienen los 11bits del nmero del frame. El byte de orden inferior est en UFRML, mientras que los tres bits de orden superior permanecen en UFRMH. El par de registros se actualizan con el nmero de frame actual cuando recibe un SOF. Para el microcontrolador, estos registros son slo de lectura. El registro del nmero del frame se utiliza sobre todo para transferencias sncronas. RAM DEL USB: Los datos del USB se mueven entre el ncleo del microcontrolador y el SIE a travs de una memoria conocida como USB RAM. sta es una memoria de puerto dual especial que est mapeada en la memoria normal de datos en los bancos de 4 a 7 (400h a 7FFh) para un total de 1kbyte. El banco 4 (400h con 4FFh) se utiliza especficamente en el control del buffer del Endpoint, mientras que los bancos de 5 a 7 estn disponibles para los datos del USB. Dependiendo del tipo de buffer que se utilice, los 8 bytes del banco 4 pueden estar disponibles para utilizarlos como buffer del USB. Aunque la RAM del USB est disponible en el microcontrolador como memoria de datos, las secciones que est modificando el SIE no las puede usar el microcontrolador. Se utiliza un mecanismo de semforos para determinar el acceso a un buffer en un momento dado.

30

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones BUFFER DESCRIPTOR Y TABLA DEL BUFFER DESCRIPTOR: Los registros del banco 4 se utilizan especficamente para el control del buffer del Endpoint en una estructura conocida como Tabla del Buffer descriptor (BDT). Esto proporciona un mtodo flexible a los usuarios para construir y para controlar los Buffers del Endpoint de varias longitudes y configuraciones. Los BDT se componen de los Buffers descriptores (BD) que se utilizan para definir y controlar los Buffers reales del Espacio de la RAM del USB. Cada BD, alternadamente, consiste en cuatro registros, donde n representa uno de los 64 BDs posibles (gama de 0 a 63): BDnSTAT: Registro de estado de BD BDnCNT: Registro del byte de cuenta de BD BDnADRL: Registro bajo de la direccin de BD BDnADRH: Registro alto de la direccin de BD BDs ocurre siempre como bloque de cuatro bytes en la secuencia, BDnSTAT: BDnCNT: BDnADRL: BDnADRH. La direccin de BDnSTAT es siempre una compensacin de (4n-1) (en hexadecimal) de 400h, con n como el nmero del Buffer descriptor. Dependiendo de la configuracin del buffering utilizada, hay 32, 33 64 sistemas de Buffer descriptores. El BDT debe ser por lo menos 8 bytes de largo. Esto se debe a que la especificacin del USB asigna que por mandato debe tener cada dispositivo el Endpoint0 configurado como entrada y salida en la disposicin inicial. Dependiendo del Endpoint y de la configuracin buffering, el BDT puede ser de 256 bytes de largo. Aunque se puede creer que los buffers descriptores y los registros de direccin son registros de funciones especiales que no estn mapeados en hardware, como lo estn los SFRs convencionales en el banco 15 del microcontrolador. Si el Endpoint correspondiente a un BD particular no est permitido, sus registros no se utilizan. En vez de aparecer como direcciones no implementadas, aparecen como RAM disponible. Solamente cuando un Endpoint est permitido, activando el bit UEPn<1>, se consigue que la memoria de esas direcciones funcione como BD. Como los registros BD tienen cualquier direccin en la memoria de datos en un reset, tambin tienen un valor indeterminado. Un sistema particular de los registros BD son solamente vlidos si el Endpoint correspondiente est permitido usando el registro UEPn. Todos los registros BD

31

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones estn disponibles en la RAM del USB. El BD para cada Endpoint debe configurarse antes de permitirlo.

ESTADO Y CONFIGURACIN DE LOS BD: Los Buffer descriptores no slo definen el tamao de un Buffer Endpoint, sino tambin determina su configuracin y control. La mayor parte de la configuracin se hace con el registro de estado del BD, BDnSTAT. Cada BD tiene su propio registro correspondientemente numerado BDnSTAT. No como otros registros de control, la configuracin de los bits del registro BDnSTAT depende del contexto. Hay dos configuraciones distintas, dependiendo de si el microcontrolador o el mdulo del USB est modificando el BD y Buffer en un momento dado. Solamente se comparten tres definiciones de bit entre los dos. Propiedades del Buffer: Los Buffers y su BDs los comparten la CPU y el mdulo del USB, se utiliza un semforo para distinguir el BD y los Buffers asociados en memoria que se permiten actualizar. Esto se logra con el bit UOWN (BDnSTAT<7>). UOWN es el nico bit compartido entre las dos configuraciones BDnSTAT. Cuando UOWN est borrado, la entrada de BD la dirige por el ncleo del microcontrolador. Cuando se activa el bit UOWN, la entrada del BD y la memoria del Buffer los controla por el perifrico USB. El ncleo no debe modificar el BD o su Buffer correspondiente en este momento. Observar que el ncleo del microcontrolador puede leer BDnSTAT mientras que el SIE controla el Buffer y viceversa. Los Buffer descriptores tienen varios significados dependiendo de la fuente de actualizacin del registro. Antes de poner en sus manos el perifrico del USB, el usuario puede configurar las operaciones bsicas del perifrico con los bits 32

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones BDnSTAT. Durante este tiempo, el byte de control de la cuenta y los registros de direccionamiento del Buffer tambin pueden fijarse. Cuando se activa UOWN, el usuario puede depender de los valores escritos en los BDs. El SIE actualiza el BDs cuanto es necesario, sobrescribiendo los valores originales del BD. El registro BDnSTAT lo actualiza el SIE con el PID; la cuenta de la transferencia, BDnCNT, se actualiza tambin. El byte BDnSTAT del BDT debe ser el ltimo byte que se actualice al prepararse para armar un Endpoint. El SIE borrar el bit UOWN cuando se termine una transaccin. La nica excepcin es cuando KEN y/o BSTALL estn permitidos. No existe ningn mecanismo por hardware para bloquear el acceso cuando se setea el bit UOWN. As, puede ocurrir un comportamiento inesperado si el microcontrolador intenta modificar la memoria cuando el SIE lo posee. Semejantemente, leyendo tal memoria se pueden obtener datos inexactos hasta que el perifrico USB devuelve la propiedad al microcontrolador. Registro BDnSTAT (modo CPU): Cuando UOWN=0, el ncleo del microcontrolador posee BD. En este punto, los otros siete bits del registro toman las funciones de control. El bit, KEN (BDnSTAT<5>), determina si un BD permanece activo. Si se setea el bit, una vez que el bit UOWN est activo, seguir controlado el SIE independiente de la actividad del Endpoint. Esto previene a la FIFO USTAT de actualizarse, as como activar la interrupcin de transaccin completa para el Endpoint. Esta caracterstica se debe permitir solamente cuando el puerto paralelo se selecciona como canal de entradasalida de datos en lugar de la RAM del USB. El bit inhabilita el incremento de la direccin, INCDIS (BDnSTAT<4>), que controla el direccionamiento automtico por incremento del SIE. Activar INCDIS inhabilita el auto incremento de la direccin del Buffer por el SIE para cada byte transmitido o recibido. Esta caracterstica slo se tiene que utilizar con el puerto paralelo, donde cada byte de datos se procesa a/desde la misma posicin de memoria. El bit de permiso de la sincronizacin de palabras, DTSEN (BDnSTAT<3>), se encarga de comprobar la paridad de los datos. Activar DTSEN permite la sincronizacin con el SIE. Cuando est permitido, comprueba la paridad del paquete de los datos contra el valor de DTS (BDnSTAT<6>). Si un paquete llega con una sincronizacin incorrecta, los datos se ignoran. No se escriben en la RAM del USB y el flag de interrupcin de transferencia completa del USB no se activar. Sin embargo, el SIE enviar un ACK al anfitrin para reconocer el recibo. El bit del buffer de parada, BSTALL (BDnSTAT<2>), proporciona ayuda en el control de las transferencias, generalmente una parada en el Endpoint 0.

33

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones Tambin proporciona ayuda con los comandos SET_FEATURE/CLEAR_FEATURE; tpicamente, paradas continuas en cualquier Endpoint con excepcin del Endpoint de control por defecto. El bit BSTALL tambin permite las paradas del Buffer. Activar BSTALL hace que el SIE devuelva un STALL al anfitrin si el smbolo recibido utilizara el BD en esa localizacin. Cuando se activa el bit EPSTALL en el registro de control correspondiente UEPn se genera una interrupcin STALL cuando se manda la STALL al anfitrin. El bit UOWN activado y el BDs no se cambia a menos que se reciba un SETUP. En este caso, la condicin de la STALL se borra y la propiedad del BD se devuelve al ncleo del microcontrolador. Los bits BD9:BD8 (BDnSTAT<1:0>) guardan los dos dgitos ms significativos del byte de la cuenta del SIE; los 8 dgitos ms bajos se almacenan en el registro correspondiente BDnCNT. EFECTO DEL BIT DTSEN EN LA RECEPCIN DE PAQUETES PARES/IMPARES (DATA0/DATA1):

BDnSTAT: REGISTRO DEL ESTADO DEL BUFFER DESCRIPTOR n (BD0STAT HASTA BD63STAT), MODO CPU (LOS DATOS SE ESCRIBEN AL LADO):

BIT 7 UOWN: Bit de posesin del USB(1) 0 = El ncleo del microcontrolador posee el BD y su Buffer correspondiente. BIT 6 DTS: Bit de sincronizacin de los datos(2) 1 = Paquete de datos 1. 0 = Paquete de datos 0. BIT 5 KEN: Bit de permiso de la subsistencia de BD. 1 = USB guardar el BD indefinidamente una vez que UOWN se active 34

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones (requerido en la configuracin de los Endpoint del SPP). 0 = USB guardar el ltimo smbolo procesado. BIT 4 INCDIS: Bit de inhabilitacin del incremento de la direccin 1 = El incremento de la direccin inhabilitado (requerido en la configuracin de los Endpoint del SPP). 0 = Incremento de la direccin permitido. BIT 3 DTSEN: Bit de permiso de la sincronizacin. 1 = Sincronizacin de los datos permitida; los paquetes de los datos con valor incorrecto de la sinc. se ignoran excepto un SETUP, que se acepta. 0 = ninguna sincronizacin de los datos. BIT 2 BSTALL: Bit de permiso de paradas en el Buffer. 1 = Parada del Buffer permitida; el protocolo de la STALL publica si se recibe un smbolo que utilizara el BD en la localizacin dada (UOWN se activa, el resto sin cambios). 0 = parada del Buffer inhabilitado. BIT 1-0 BC9:BC8: Bits del byte de cuenta 9 y 8. Los bits de cuenta del byte representan el nmero de bytes que se transmitirn con un smbolo IN o recibidos durante un smbolo OUT. Junto con BC<7:0>, las cuentas de byte vlidas son 0-1023. Nota 1: Este bit debe inicializarlo el usuario con el valor deseado antes de permitir el mdulo USB. Nota 2: Se ignora este bit a menos que DTSEN = 1. Registros BDnSTAT (modo SIE): Cuando los BDs y su Buffer los gobierna el SIE, la mayora de los bits de BDnSTAT toman distintos significados. Al activarse UOWN, cualquier dato o ajuste de control escritos por el usuario se sobrescriben con datos del SIE. El registro BDnSTAT lo actualiza el SIE con el identificador del paquete (PID) se almacena en BDnSTAT<5:3>. Se actualiza la cuenta de la transferencia en el registro BDnCNT correspondiente. Los valores que desbordan el registro de 8 bits se transportan a los dos dgitos ms significativos de la cuenta, almacenados en BDnSTAT<1:0>. BDnSTAT: REGISTRO DE ESTADO DEL BUFFER DESCRIPTOR n (BD0STAT A BD63STAT), MODO SIE (DATOS DEVUELTOS POR EL LADO DEL MICROCONTROLADOR):

35

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

BIT 7 UOWN: Bit de posesin del USB. 1= El SIE gobierna el BD y el buffer correspondiente. BIT 5-2 PID3:PID0: Bits identificadores del paquete. El valor recibido del smbolo PID de la ltima transferencia (slo IN, OUT o SETUP). BIT 1-0 BC9:BC8: Bits del byte de cuenta 9 y 8. Esto bits los actualiza el SIE para reflejar al nmero de bytes recibidos en una transferencia OUT y el nmero de bytes transmitidos en una IN. BYTE DE CUENTA DE BD: El byte de cuenta representa el nmero total de bytes que se transmitirn durante una IN. Despus de la transferencia IN, el SIE devolver el nmero de bytes enviados al anfitrin. Para una transferencia OUT, el byte de cuenta representa nmero mximo de los bytes que se pueden recibir y almacenar en la RAM del USB. Despus de una transferencia OUT, el SIE devolver el nmero real de bytes recibidos. Si este nmero excede el byte de cuenta correspondiente, el paquete de datos se rechazar y se generar un protocolo de intercambio NAK. Cuando sucede esto, el byte de cuenta no se actualiza. El byte de cuenta de 10 bits se distribuye sobre dos registros. Los 8 bits ms bajos de la cuenta residen en el registro BDnCNT. Los dos altos en BDnSTAT<1:0>. Esto representa una gama vlida para el byte de 0 a 1023. VALIDACIN DE LA DIRECCIN DE BD: El par de registros de direccin de BD contiene la direccin de comienzo de la RAM para el Buffer del Endpoint correspondiente. Para que una localizacin que comienza en el Endpoint sea vlida, debe estar en la gama de la RAM del USB, 400h a 7FFh. No hay ningn mecanismo por hardware para comprobar la direccin del BD. Si el valor de la direccin de BD no seala a una direccin de la RAM del USB, o si seala a una direccin dentro del Buffer de otro Endpoint, es probable que se pierdan los datos o que se sobrescriban. Semejantemente, solapando un Buffer de recepcin (Endpoint de salida) con una localizacin de BD en uso se obtienen resultados inesperados. Cuando se desarrollan aplicaciones USB, el usuario puede incluir software para validar las direcciones en el cdigo. 36

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

BUFFERING PING-PONG: Un Endpoint se define para tener un Buffer ping-pong cuando tiene dos sistemas de entradas de BD: un sistema para una transferencia par y otro para una transferencia impar. Esto permite a la CPU procesar un BD mientras que el SIE procesa el otro BD. El doble buffering BD, permite un rendimiento de procesamiento mximo del/al USB. El mdulo USB apoya cuatro modos de operacin: Ninguna ayuda del ping-pong. Ayuda del Buffer del ping-pong del OUT Endpoint 0 solamente. Ayuda del Buffer del ping-pong para todas los Endpoints. Ayuda del Buffer del ping-pong para el resto de los Endpoints excepto el 0. Los ajustes del Buffer ping-pong se configuran con los bits PPB1:PPB0 en el registro UCFG. El mdulo USB no pierde de vista el puntero ping-pong de cada Endpoint. Todos los punteros estn reseteados inicialmente al BD par cuando se activa el mdulo. Al terminar una transaccin (SIE borra UOWN), el puntero se une al BD impar. Al terminar la transaccin siguiente, el puntero se une de nuevo al BD par y as sucesivamente. El estado par/impar de la transaccin realizada se almacena en el bit PBI del registro USTAT. El usuario puede resetear todos los punteros ping-pong al par con el bit PPBRST. Cada BD tiene una relacin fija con un Endpoint particular, dependiendo de la configuracin del buffering. Esta relacin significa tambin que pueden aparecer vacos en las BDT si los Endpoints no se activan contiguamente. Esto significa en teora, que los BDs de los Endpoints desactivados podan utilizarse como espacio de Buffer. En la prctica, los usuarios deben evitar usar tales espacios en el BDT a menos que el mtodo de validar direcciones de BD est en ejecucin. TABLAS DEL BUFFER DESCIPTOR MAPEADAS PARA LOS MODOS DE LOS BUFFER:

37

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

ASIGNACIN DE LOS BUFFERS DESCRIPTORES A LOS DIFERENTES MODOS DE BUFFERING:

38

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones SUMARIO DE LOS REGISTROS DE LOS BDT DEL USB:

Nota 1: En los registros de los BD, la n es un valor de 0 a 63. Los 64 registros son semejantes. Todos tienen valores indeterminados en los reset. Nota 2: Del bit 5 al 2 del BDnSTAT lo utiliza el SIE para devolver los valores PID3:PID0 una vez el registro haya cambiado al SIE (Activar el bit UOWN). Cuando los registros estn bajo el control del SIE, los valores de KEN, DTSEN, INCDIS y BSTALL no tienen validez. Nota 3: Antes de activar el bit UOWN, los bits 5 al 2 del BDnSTAT configuran KEN, DTSEN, INCDIS y BSTALL. Nota 4: Se ignora este bit a menos que DTSEN=1. INTERRUPCIONES DEL USB: El mdulo USB puede generar condiciones de interrupcin mltiples. Para acomodar todas estas fuentes de interrupcin, el mdulo proporciona su propia lgica de estructura de interrupcin, similar a la del microcontrolador. Las interrupciones del USB se activan con un sistema de registros de control y registradas con un sistema separado de flags. Todas las fuentes se concentran en una sola peticin de interrupcin del USB, USBIF (PIR2<5>). Hay dos capas de registros de interrupcin en el mdulo USB. El nivel superior consiste en todas las interrupciones de estado del USB; stos se permiten y se sealan por medio de un flag en los registros UIE y UIR, respectivamente. El segundo nivel consiste en las condiciones de error del USB, se permiten y sealan por medio de un flag en los registros UEIR y UEIE. Ninguna condicin de interrupcin en estos provoca la activacin del flag de interrupcin por error del USB (UERRIF) en el nivel superior. Las interrupciones se pueden utilizar para detectar acontecimientos rutinarios en una transaccin USB. LGICA DE LA INTERRUPCIN DEL USB:

39

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

EJEMPLO DE LOS EVENTOS TRANSACCIN E INTERRUPCIN:

Nota 1: La transferencia de control mostrada es slo un ejemplo que muestra los eventos que ocurren en cada transaccin. El control tpico de la transferencia se puede extender a varios frames. REGISTRO DE ESTADO DE LAS INTERRUPCIONES DEL USB (UIR): El registro de estado de las interrupciones del USB contiene los flags para el estado de cada fuente de interrupcin. Cada una de estas interrupciones tiene un bit de permiso en el registro UIE correspondiente. Todos los flags de estado del USB se suman para generar el flag de interrupcin USBIF para el tnel de interrupcin del micro. Una vez que el SIE active un bit de interrupcin, se tiene que borrar por

40

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones software escribiendo un 0. Los flags se pueden activar por software para ayudar en la bsqueda de errores del firmware

BIT 7: No implementado, se lee como "0" BIT 6 SOFIF: Bit de interrupcin del smbolo START-OF-FRAME. 1= START-OF-FRAME recibido por el SIE. 0= Ningn START-OF-FRAME recibido por el SIE. BIT 5 STALLIF: Bit de interrupcin del protocolo de STALL. 1= Protocolo de STALL enviado por el SIE. 0= Protocolo de intercambio STALL no se ha enviado. BIT 4 IDLEIF: Bit de interrupcin detector de reposo(1). 1= Reposo detectado (estado de reposo de 3ms o ms). 0= Ninguna condicin de reposo detectada. BIT 3 TRNIF: Bit de interrupcin de transaccin completa(2). 1= Transaccin pendiente completa; leer el registro USTAT para informacin del Endpoint. 0= Transaccin pendiente no completada o no hay. BIT 2 ACTVIF: Bit de interrupcin de deteccin de la actividad del bus(3). 1= Actividad detectada en las lneas D+/D-. 0= Ninguna actividad detectada en las lneas D+/DBIT. BIT 1 UERRIF: Bit de interrupcin de la condicin de error del USB(4). 1= Ha ocurrido una condicin de error desenmascarada. 0= No ha ocurrido ninguna condicin de error. BIT 0 URSTIF: Bit de interrupcin de reset del USB. 1= Ha ocurrido un reset en el USB, 00h se carga en el registro UADDR. 0= No ha ocurrido ningn reset del USB. Nota 1: Una vez que se detecte un estado de reposo, el usuario puede colocar al mdulo USB en este modo. Nota 2: Borrar este bit har avanzar la USTAT FIFO (vlido solamente con los 41

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones smbolos IN, OUT y SETUP). Nota 3: Este bit es desenmascarado al detectar un acontecimiento de interrupcin UIDLE. Nota 4: Solamente las condiciones de error permitidas a travs del registro UEIE activarn este bit. Este bit es bit de estado y no lo puede modificar el usuario. Bit de interrupcin de deteccin de la actividad del bus (ACTVIF): El bit ACTVIF no se puede ser borrar inmediatamente despus de despertar al mdulo USB del modo reposo o cuando se suspende. Se necesita un retraso para sincronizar el estado interno del hardware antes de que el bit ACTVIF pueda borrarse por firmware. Borrar el bit ACTVIF antes de sincronizar el hardware puede que no cause efecto. Adems, si el mdulo USB utiliza una fuente de reloj de 96MHz PLL,despus se borra el bit SUSPND, el mdulo del USB puede ser operacional inmediatamente mientras que espera los 96MHz PLL. BORRADO DEL BIT ACTVIF (UIR<2>): Ensamblador: BCF UCON, SUSPND LOOP: BTFSS UIR, ACTVIF BRA DONE BCF UIR, ACTVIF BRA LOOP DONE: REGISTRO DE PERMISO DE LAS INTERRUPCIONES (UIE): El registro de permiso de la interrupcin del USB contiene los bits de permiso del estado de las fuentes de interrupcin USB. No fijar ninguno de estos bits permitir la interrupcin elegida en el registro UIR. Los valores en este registro afectan solamente la propagacin de una condicin de interrupcin a la lgica de interrupcin del microcontrolador. Los flags todava estn activados por su condicin de interrupcin, permite que sean interrogados y se mantienen sin realmente la interrupcin.

42

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones BIT 7 : No implementado , se lee como '0'. BIT 6 SOFIE: Bit de permiso de la interrupcin del START-OF-FRAME. 1 = interrupcin permitida 0 = interrupcin inhabilitada BIT 5 STALLIE: Bit de permiso de la interrupcin del protocolo STALL. 1 = interrupcin permitida 0 = interrupcin inhabilitada BIT 4 IDLEIE: Bit de permiso de la interrupcin de reposo. 1 = interrupcin permitida 0 = interrupcin inhabilitada BIT 3 TRNIE: Bit de permiso de la interrupcin de transaccin completa. 1 = interrupcin permitida 0 = interrupcin inhabilitada BIT 2 ACTVIE: Bit de permiso de la interrupcin de deteccin de la actividad del bus. 1 = interrupcin permitida 0 = interrupcin inhabilitada BIT 1 UERRIE: Bit de permiso de la interrupcin de error del USB. 1 = interrupcin permitida 0 = interrupcin inhabilitada BIT 0 URSTIE: Bit de permiso de la interrupcin del reset del USB. 1 = interrupcin permitida 0 = interrupcin inhabilitada REGISTRO DE ESTADO DE LAS INTERRUPCIONES POR ERROR DEL USB (UEIR): El registro de estado de las interrupciones de error del USB contiene los flags para cada fuente de error del perifrico USB. Cada una de estas fuentes se controla con el bit de permiso de interrupcin correspondiente del registro UEIE. Todas los flags de error de USB se suman para generar el flag de interrupcin de error del USB (UERRIF) en el nivel superior de la lgica de interrupcin. Cada bit de error se activa cuando se detecta la condicin de interrupcin. As, la interrupcin normalmente no corresponde con el final de un smbolo que se acaba de procesar. Una vez que un bit de interrupcin haya activado el SIE, tiene que borrarse por software escribiendo un 0.

43

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

BIT 7 BTSEF: Flag de error del bit mercanca. 1= Error detectado. 0= No se ha detectado error. BIT 4 BTOEF: Flag de error de espera en el procesamiento del bus. 1= error detectado (han llegado ms de 16bits de reposo antes de un EOP). 0= error no detectado. BIT 3 DFN8EF: Flag de error del tamao de los datos. 1= error detectado (no era un nmero entero de bytes). 0= error no detectado. BIT 2 CRC16EF: Flag de fallo CRC16 1= error detectado. 0= error no detectado. BIT 1 CRC5EF: Flag de error del anfitrin CRC5. 1= error detectado (paquete simblico rechazado). 0= error no detectado. BIT 0 PIDEF: Flag de prueba de fallo de PID. 1= error detectado. 0= error no detectado. REGISTRO DE PERMISO DE LAS INTERRUPCIONES DE ERROR (UEIE): El registro de permiso de las interrupciones de error (UEIE) contiene los bits de activacin para cada fuente de interrupcin de error del USB. Activando cualquiera de estos bits se activa la fuente de la interrupcin respectiva. Como el registro UIE, los bits activos slo afectan la propagacin de la condicin de la interrupcin. Los flags se activan cuando se cumplen sus condiciones.

44

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones BIT 7 BTSEF: Bit de permiso de interrupcin del error del bit mercanca. 1= Interrupcin permitida. 0= Interrupcin no permitida. BIT 4 BTOEF: Bit de permiso de interrupcin del error de espera en el procesamiento del bus. 1= Interrupcin permitida. 0= Interrupcin no permitida. BIT 3 DFN8EF: Bit de permiso de interrupcin del error del tamao de los datos. 1= Interrupcin permitida. 0= Interrupcin no permitida. BIT 2 CRC16EF: Bit de permiso de interrupcin del fallo CRC16. 1= Interrupcin permitida. 0= Interrupcin no permitida. BIT 1 CRC5EF: Bit de permiso de interrupcin del error del anfitrin CRC5. 1= Interrupcin permitida. 0= Interrupcin no permitida. BIT 0 PIDEF: Bit de permiso de interrupcin de la prueba de fallo de PID. 1= Interrupcin permitida. 0= Interrupcin no permitida. MODOS DE ENERGA DEL USB: Las aplicaciones USB tendrn diferentes requisitos y configuracin de energa. Los casos ms comunes son los presentados aqu.
SLO ENERGA EN EL BUS:

En modo de slo energa en el bus. Es el mtodo ms simple de energa para el dispositivo.


SLO SELF-POWER:

45

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

En modo slo SELF-POWER, el uso del USB proporciona su propia energa, con la energa muy pequea cedida por el USB. Observar que indica cuando el USB ha estado conectado.
ENERGA DUAL CON DOMINANCIA SELF-POWER:

Algunas aplicaciones necesitan una opcin con dos energas. La aplicacin utiliza la fuente de energa interna como primaria, pero cambia a la energa del USB cuando no se dispone de una fuente lineal. Nota: Los usuarios deben tener presente los lmites de energa del USB. Segn la especificacin del USB 2.0, no puede exceder 100mA en un dispositivo de baja potencia 500mA en uno de alta. STREAMING PARALLEL PORT (SPP): El puerto paralelo (SPP) es una ruta alternativa de los datos adems de la RAM del USB. Usando el SPP, un Endpoint se puede configurar para enviar o para recibir datos directamente del hardware externo. Este mtodo presenta posibilidades de diseo donde el microcontrolador acta como encargado de los datos, permitiendo al SPP pasar bloques grandes de datos sin que el micro regule lo que procesa realmente. Un ejemplo de aplicacin puede incluir un sistema de adquisicin de datos, donde los datos fluyen de una FIFO externa a travs del USB al ordenador. En este caso, el control del Endpoint lo realiza el microcontrolador y los

46

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones movimientos de datos en bruto se procesan externamente. El SPP se permite como puerto de un Endpoint del USB a travs del BD asociado al Endpoint. El Endpoint tiene que activarse de la siguiente manera: 1. Activar BDnADRL:BDnADRH direccionado a FFFFh. 2. Activar KEN (BDnSTAT<5>) par que el SIE controle el Buffer. 3. Activar INCDIS (BDnSTAT<4>) para inhabilitar el incremento de direccin automtico. Nota 1: Si un Endpoint se configura para utilizar el SPP, el mdulo SPP debe configurarse para utilizar el mdulo USB. Si no, puede ocurrir una operacin inesperada. Nota 2: Adems, si un Endpoint se configura para utilizar el SPP, el tipo de transferencia de datos de ese Endpoint debe ser sncrona.
OSCILADOR:

El mdulo USB necesita una seal especfica de reloj. En operaciones fullspeed, el reloj tiene que ser de 48MHz. El microcontrolador y los perifricos no tienen porque tener la misma frecuencia de reloj o la misma fuente. REGISTROS ASOCIADOS A LAS OPERACIONES DEL MDULO USB:

47

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones Leyenda: = las localizaciones no estn implementadas. Las celdas sombreadas no se utilizan con el mdulo USB. Nota 1: Esta tabla incluye solamente las localizaciones SFRs mapeadas en el banco 15 de la memoria de datos. Los registros de los BD, que estn mapeados en el banco 4 y no son SFRs verdaderos, estn en la tabla 17-5.
DESCRIPCIN DEL USB:

Esta seccin presenta algunos conceptos bsicos del USB e informacin til necesaria para disear un dispositivo USB. As, se anima al lector que refiera a las especificaciones del USB para ms informacin (www.usb.org). Si ests muy al corriente de los detalles de USB, entonces sta seccin sirve como recuerdo bsico, de alto nivel del USB.
ESQUEMA DE CAPAS:

La funcionalidad del dispositivo del USB se estructura en un esquema de capas. Cada nivel se asocia a un nivel funcional dentro del dispositivo. La capa ms alta, con excepcin del dispositivo, es la de configuracin. Un dispositivo puede tener configuraciones mltiples. Por ejemplo, un dispositivo particular puede tener requisitos de energa mltiples basados en Self-Power o modos de energa slo del bus. Para cada configuracin, puede haber mltiple interfaces. Cada interfaz poda apoyar un modo particular de esa configuracin. Debajo del interfaz estn los Endpoints. Los datos se mueven directamente a este nivel. Puede haber 16 Endpoints bidireccionales. El Endpoint 0 es siempre el Endpoint de control por defecto; cuando el dispositivo est en el bus, el Endpoint 0 debe estar disponible para configurarlo.

48

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

ENUMERACIN
Cuando el dispositivo se une al bus, el anfitrin crea un proceso de enumeracin en un intento por identificar el dispositivo. Esencialmente, el anfitrin interroga al dispositivo, recopila informacin tal como el consumo de energa, tarifas y tamaos de los datos, protocolo y otra informacin descriptiva, que contienen los descriptores. El proceso de enumeracin sera: 1. Reset del USB: Resetear el dispositivo. As, el dispositivo no se configura y no tiene una direccin (direccin 0). 2. Conseguir el descriptor del dispositivo: El anfitrin solicita una pequea parte del descriptor del dispositivo. 3. Reset del USB: Resetear el dispositivo otra vez. 4. Fijar la direccin: El anfitrin asigna una direccin al dispositivo. 5. Conseguir el descriptor del dispositivo: El anfitrin recupera el descriptor del dispositivo, recolectando la informacin, por ejemplo fabricante, tipo de dispositivo, control mximo del tamao de los paquetes. 6. Conseguir los descriptores de configuracin. 7. Conseguir cualquier otro descriptor. 8. Fijar una configuracin. El proceso exacto de enumeracin depende del anfitrin.

49

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

DESCRIPTORES:
Hay ocho estndares del descriptor de cul cinco son los ms importantes para este dispositivo. Descriptor del dispositivo: El descriptor del dispositivo proporciona la informacin de carcter general, por ejemplo fabricante, nmero del producto, nmero de serie, la clase del dispositivo y el nmero de configuraciones. Hay solamente un descriptor del dispositivo.

Descriptor de la configuracin: El descriptor de la configuracin proporciona la informacin de los requisitos de energa del dispositivo y cuntos interfaces diferentes soporta cuando est en esta configuracin. Puede haber ms de una configuracin del dispositivo (es decir, configuraciones de baja potencia y de alta potencia).

50

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones Descriptor de la interfaz El descriptor de la interfaz detalla el nmero de Endpoints utilizados en esta interfaz, as como la clase de la interfaz. Puede haber ms de una interfaz en la configuracin.

Descriptor del Endpoint El descriptor del Endpoint identifica el tipo de transferencia y direccin, tambin algunos otros especficos del Endpoint. Puede haber muchos Endpoints en un dispositivo y los Endpoints pueden compartirse en diversas configuraciones.

Descriptor de la secuencia Muchos de los descriptores anteriores se refieren a uno o ms descriptores de la secuencia. Los descriptores de la secuencia proporcionan informacin legible por un humano sobre la capa que pueden describir. Estas secuencias muestran en el anfitrin una ayuda para identificar el dispositivo. Los descriptores de la secuencia son generalmente opcionales para ahorrar memoria y se codifican en formato unicode.

51

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

VELOCIDAD DEL BUS


Cada dispositivo USB debe indicar su presencia del bus y su velocidad al anfitrin. Esto se logra con una resistencia de 1,5k que se conecta al bus en el momento del acoplamiento. Dependiendo de la velocidad del dispositivo, la resistencia une la lnea D+ o D - 3,3V. En dispositivos de poca velocidad, la resistencia se conecta a la lnea D-. En los dispositivos full-speed, la resistencia se conecta a la lnea D+. Para full speed la velocidad es de 12Mb/seg (terico)ver la figura siguiente:

Para low - speed la velocidad es de 1.5Mb/seg (terico)ver la figura siguiente:

52

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

ESPECIFICACIONES DE CLASE Y DRIVERS:


Las especificaciones del USB incluyen las especificaciones de clase que los vendedores del sistema operativo apoyan opcionalmente. Los ejemplos de clases incluyen el audio, memoria de masa, comunicaciones e interfaz humano (HID). En la mayora de los casos, se requiere un driver en el lado del anfitrin para comunicarse con el dispositivo USB. En aplicaciones de encargo, se puede necesitar un driver convertido. Afortunadamente, los drivers estn disponibles para la mayora de los sistemas anfitriones comunes para las clases ms comunes de los dispositivos. As, estos drivers se pueden reutilizar.

PUERTO PARALELO STREAMING (SPP):


Nota: El puerto paralelo streaming est solamente disponible en los dispositivos de 40/44-pines. Los dispositivos USB PIC18F4455/4550 proporcionan un Puerto Paralelo Streaming como interfaz de alta velocidad para mover datos a y desde un sistema externo. Este puerto paralelo funciona como puerto principal, completo con un chip select y salidas de reloj para controlar el movimiento de los datos a los dispositivos auxiliares. Los datos se pueden dirigir directamente al SIE del USB o al ncleo del microprocesador.

53

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

TRAYECTORIA DE DATOS DEL SPP:

Adems, el SPP pueden proporcionar tiempo multiplexado tratando la informacin junto con los datos usando segunda salida estroboscopia. As, el nmero del Endpoint del USB se puede escribir conjuntamente con los datos en ese Endpoint.

CONFIGURACIN DEL SPP:


La operacin del SPP se controla con dos registros: SPPCON y SPPCFG. El registro SPPCON dirige la operacin total del puerto paralelo y determina si funciona bajo el control del USB o del microcontrolador. El registro SPPCFG controla la configuracin del tiempo y los pines de salida.

PERMITIR EL SPP:
Para permitir el SPP, activar el bit SPPEN (SPPCON<0>). Adems, los bits del TRIS del SPP correspondientes los pines se deben configurar correctamente. El mnimo: Bits TRISD<7:0> se deben activar (= 1) Bits TRISE<2:1> se deben borrar (= 0) Si se utiliza CK1SPP: El bit TRISE<0> se debe borrar (= 0) Si se utiliza CSPP: El bit TRISB<4> se debe borrar (= 0) SPPCON: REGISTRO DE CONTROL DEL SPP:

54

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

BIT2 EPOUTEN: Bit de permiso de la salida del Endpoint. 1= la salida del Endpoint n permitida. BIT1 SPPOWN: Bit de propiedad del SPP 1= El perifrico USB controla el SPP. 0= El microcontrolador controla directamente el SPP. BIT0 SPPEN: Bit de permiso del SPP. 1 = se permite. 0 = se desactiva.

SPP FG: REGISTRO DE LA CONFIGURACIN DE EL SPP:

BIT 7-6 CLKCFG1:CLKCFG0: Bits de configuracin del reloj del SPP 1x= CLK1 cambia a lectura o escritura una direccin impar de Endpoint; CLK2 cambia a lectura o escritura una direccin par de Endpoint. 01= CLK1 cambia a escritura; CLK2 cambia a lectura. 00= CLK1 cambia slo en la direccin del Endpoint de escritura; CLK2 cambia en la lectura o escritura de datos. BIT 5 CSEN: Bit de permiso del pin selector del chip del SPP. 1 = RB4 lo controla el mdulo SPP y funciona como salida CS del SPP. 0 = RB4 funciona como un puerto digital de E/S. BIT 4 CLK1EN: Bit de permiso del pin del SPP CLK1. 1 = RE0 lo controla el mdulo SPP y funciona como la salida del SPP CLK1. 0 = RE0 funciona como un puerto digital de E/S. BIT 3-0 WS3:WS0: Bits de los estados espera del SPP. 1111 = 30 estados de espera adicionales. 1110 = 28 estados de espera adicionales.

55

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones 0001 = 2 estados de espera adicionales. 0000 = 0 estados de espera adicionales. REGISTRO DE DATOS: El SPP tiene cuatro salidas del control: Dos salidas de reloj separadas (CK1SPP y CK2SPP) Salida permitida (OESPP) Chip select (CSSPP) Despus, permiten diversas configuraciones para controlar el flujo de datos a los dispositivos auxiliares. Cuando se utilizan todas las salidas de control, las tres opciones principales son: CLK1 controla la informacin del Endpoint diseccionado cuando CLK2 controla los datos. CLK1 controla las operaciones de escritura mientras que CLK2 controla las de lectura. CLK1 controla los datos en las direcciones impares mientras que CLK2 controla las de los pares. Las opciones de control adicionales derivan inhabilitando las salidas CK1SPP y CSSPP. Se permiten o inhabilitan con los bits CLK1EN y CSEN, respectivamente. ESTADOS DE ESPERA: El SPP se disea con la capacidad de agregar estados de espera para las operaciones de lectura y de escritura. Esto permite el acceso paralelo a los dispositivos que requieren ms tiempo para acceder. Registrar el estado de espera se basa en el reloj de la fuente de datos. Si el SPP se configura para funcionar como Endpoint del USB, entonces los estados de espera se basan en el reloj del USB. Asimismo, si el SPP se configura para funcionar desde el microcontrolador, entonces los estados de espera se basa en el ratio de instruccin (FOSC/4). Los bits WS3:WS0 activaron los estados de espera utilizados por el SPP, con una gama de ningunos estado de espera a 30 estados de espera, en mltiplos de dos. Los estados de espera se agregan simtricamente en todas las transacciones, con una mitad aadida a cada uno de los dos ciclos de reloj requeridos para la transaccin.

SPP PULL-UPS:
Las lneas de datos del SPP (SPP<7:0>) se equipan con pull-ups internas para aplicaciones que puedan salir del puerto en condiciones e alta impedancia. Los pull-ups se permiten con el bit de control, RDPU (PORTE<7>).

56

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones SINCRONIZACIN PARA EL MICROCONTROLADOR ESCRIBE DIRECCIN, ESCRIBE DATOS Y LEE DATOS (NINGN ESTADO DE ESPERA).

SINCRONIZACIN PARA EL USB ESCRIBE DIRECCIN Y DATOS (4 ESTADOS DE ESPERA).

SINCRONIZACIN PARA EL USB ESCRIBE DIRECCIN Y LEE DATOS (4 ESTADOS DE ESPERA).

SISTEMA PARA EL CONTROL DEL USB: Cuando el SPP se configura para operar como USB, los datos se pueden controlar directamente a y desde el perifrico USB sin la intervencin del microcontrolador; as, no requiere tiempo de procesado. Los datos se manejan a o hacia fuera del SPP con la informacin del Endpoint (direccin) primero, seguido por uno o ms bytes de datos. Esto es ideal en aplicaciones

57

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones que requieren transmisin sncrona, de gran capacidad. Los siguientes pasos se requieren para configurar el SPP para controlr el USB: 1. Configurar el SPP segn lo deseado, incluyendo estados de espera y relojes. 2. Activar el bit SPPOWN para la propiedad del USB. 3. Activar el descriptor del buffer que comienza la direccin (BDnADRL: BDnADRH) a FFFFh. 4. Activar el bit KEN (BDnSTAT<5>) pero el buffer descriptor lo se guarda indefinidamente el SIE. 5. Activar el bit INCDIS (BDnSTAT<4>) para inhabilitar el incremento automtico de la direccin del buffer. 6. Activar el bit SPPEN para permitir el mdulo. Nota: Si un Endpoint del USB se configura para utilizar el SPP, el tipo de la transferencia de datos de ese Endpoint debe ser sncrona. TRANSFERENCIA DE DATOS ENTRE USB SIE Y SPP:

SITEMA PARA EL CONTROL DEL MICROCONTROLADOR:


El SPP puede actuar como puerto paralelo del microcontrolador. En este modo, el registro SPPEPS proporciona el estado y la direccin de control de escritura. Los datos se escriben y se leen en el registro SPPDATA. Cuando el SPP lo gobierna el microcontrolador, el reloj del SPP lo controla el reloj de instruccin (FOSC/4). Los pasos siguientes se requieren para configurar el SPP para operacin del microcontrolador: 1. Configurar el SPP segn lo deseado, incluyendo estados de espera y relojes. 2. Borrar el bit SPPOWN. 3. Activar SPPEN para permitir el mdulo.

INTERRUPCIONES SPP:
Cuando lo controla el ncleo del microcontrolador, el control puede generar una interrupcin para notificar la aplicacin cuando termina cada operacin de lectura y escritura. El flag de interrupcin es SPPIF (PIR1<7>) y se permite con el bit SPPIE (PIE1<7>). Como el resto de prioridades de interrupciones del microcontrolador, se puede fijar a un nivel bajo o prioritario. Esto se hace con el bit SPPIP (IPR1<7>).

58

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

ESCRIBIR EL SPP:
Una vez que est configurado, la escritura del SPP se realiza escribiendo los registros SPPEPS y SPPDATA. Si el SPP se configura para registrar la direccin de los Endpoint OUT con los datos, escribiendo el registro SPPEPS inicia el ciclo de escritura en la direccin. Si no, la escritura comienza escribiendo los datos al registro SPPDATA. El bit SPPBUSY indica el estado de la direccin y los datos de los ciclos de escritura. Lo que sigue es un ejemplo de secuencia de escritura: 1. Escribir la direccin de 4 bits al registro SPPEPS. El SPP comienza automticamente escribiendo la direccin. Si la escritura de la direccin no se utiliza, vamos al paso 3. 2. Supervisar el bit SPPBUSY para determinar cuando se ha enviado la direccin. La duracin depende en los estados de espera. 3. Escribir los datos al registro SPPDATA. El SPP comienza automticamente a escribir los datos. 4. Supervisar el bit SPPBUSY para determinar cuando se han enviado los datos. La duracin depende de los estados de espera. 5. Ir de nuevo a los pasos 1 3 para escribir una nueva direccin o datos. Nota: Se debe comprobar el bit SPPBUSY para asegurarse de que las sucesivas escrituras a los registros SPPEPS o SPPDATA no invadan el tiempo de espera debido al ajuste del estado de espera.

LECTURA DEL SPP:


La lectura del SPP implica leer el registro SPPDATA. Leyendo el registro por primera vez inicia la operacin de lectura. Cuando la lectura ha finalizado, se indica con el bit SPPBUSY, el SPPDATA se habr cargado con los datos actuales. Ejemplo de secuencia de lectura: 1. Escribir la direccin de 4bits al registro SPPEPS. El SPP comienza automticamente escribiendo la direccin. Si la direccin escrita no se usa saltemos al paso 3. 2. Supervisar el bit SPPBUSY para determinar cuando se ha enviado la direccin. La duracin depende de los estados de espera. 3. Leer los datos del registro SPPDATA; se devuelven los datos de la operacin de lectura anterior. El SPP comienza automticamente la lectura para el prximo ciclo de lectura. 4. Supervisar el bit SPPBUSY para determinar cuando se han ledo los datos. La duracin depende de los estados de espera. 5. Ir al paso 3 para leer el byte actual del SPP y empezar el siguiente ciclo de lectura.

59

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones SPPEPS: DIRECCIN DEL ENDPOINT DEL SPP Y REGISTRO DE ESTADO:

BIT 7 RDSPP: Bit del estado de lectura del SPP (vlido cuando SPPCON<SPPOWN>=1, USB). 1 = la transaccin anterior del SPP era de lectura. 0 = la transaccin anterior del SPP no era de lectura. BIT 6 WRSPP: Bit de estado de escritura del SPP (vlido cuando SPPCON<SPPOWN>=1, USB) 1 = la transaccin anterior del SPP era de escritura. 0 = la transaccin anterior del SPP no era de escritura. BIT 4 SPPBUSY: Bit de ocupacin del bus del SPP. 1 = El SPP est ocupado. 0 = El SPP est listo para aceptar otras peticiones de lectura y escritura. BIT 3-0 ADDR3:ADDR0: Bits de direccin del Endpoint del SPP. 1111 = Endpoint 15. 0001 0000 = Endpoint 0 REGISTROS ASOCIADOS AL PUERTO PARALELO STREAMING:

Leyenda: - no implementado, se leen 0. Las casillas sombreadas no se utilizan con el SPP. Nota 1: Implementado cuando el Master Clean est desactivado (configuracin del bit MCLRE=0). Nota 2: RE3 es el nico bit de PORTE implementado en dispositivos de 28 pines y de 40/44 pines. El resto de pines se implementan si existen el resto del PORTE. (es decir, en los dispositivos de 40/44 pines). 60

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones Nota 3: Estos registros y/o bits no estn implementados en los dispositivos de 28 pines.

CONFIGURACIN DEL MDULO OSCILADOR:


El mdulo oscilador del PIC18F2550 viene dado de la siguiente manera:

El oscilador tiene varias configuraciones segn el cristal usado y que dispositivos utilizarn el oscilador. Las configuraciones para los diferentes cristales se detallan en la prxima imagen.

61

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Veremos ahora como quedan configurados nuestros fuses para trabajar. Si trabajamos con un cristal de 4.00Mhz:
#fuses MCLR,XTPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN,NOPBADEN

Detallaremos cada uno de los fuses:


62

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

MCLR: Ac le decimos al compilador que usaremos la funcin MCLR del Pin 1 del microcontrolador. Tambin podemos poder NOMCLR con lo cual dejamos libre el pin RE3 que lo podemos configurar como entrada. Veamos en el cuadro como se configura este bit.

Por lo visto anteriormente dejaremos el fuses del puerto A/D del PORTB como NOPBADEN, por lo que dejaremos configurado el puerto B del microcontrolador como I/O digital.

63

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

XTPLL: Con esto le indicamos al compilador que usaremos un cristal en conjunto con el PLL para generar 48Mhz. Si estamos usando un cristal de 4Mhz no ara falta usar divisin en el postcaler. En caso de que usemos un cristal de 20Mhz tendramos que poner HSPLL y un divisor de postcaler de 5 para obtener los 4Mhz en la entrada del PLL. Veamos en el cuadro que opciones tenemos.

64

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

NOWDT: No utilizamos el Whachdog o perro guardin. Fijmonos en el siguiente cuadro que opciones tenemos:

NOPROTECT: Memoria de programa no protegida contra lecturas. NOLVP: Modo de programacin a bajo voltaje desactivado.

65

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

NODEBUG: No utilizaremos el modo debug.

USBDIV: Este bit puede ser 1 o 0 y con el seleccionamos la fuente de oscilacin del perifrico USB o directa utilizando la frecuencia del cristal seleccionado o del PLL/2.

66

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

67

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

PLL1: Aqu seleccionamos el factor de divisin del postcaler, el mismo se seleccionar teniendo en cuenta el valor del cristal que se ha utilizado. Siempre se tiene que tener la premisa que se necesitan 4Mhz en la entrada del PLL para que este genere 96Mhz. Nosotros utilizaremos un cristal de 4Mhz por lo que el factor de divisin va a ser %1.

Por ltimo vemos el bit de configuracin VRGEN que es utilizado para habilitar el regulador interno de 3.3v para el puerto USB, en caso de que estemos usando el USB interno pero en caso de que estemos usando un controlador externo desactivaremos este bit y usaremos una fuente externa. La siguiente inmgen nos muestra esto detalladamente.

68

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Ahora que ya sabemos configurar los fuses, vamos a nuestra primera aplicacin Que es el encendido y apagado de 8 leds utilizando la PLACA de desarrollo PIC28USB. Antes que nada abrimos una ventana en el MPLAB:

69

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Luego vamos a la pestaa new y creamos un nuevo achivo de trabajo el cual guardaremos con el nombre de ejercicio 1.C, con lo cul crearemos un archivo fuente de C. Tendra que quedar algo as:

Y el espacio de trabajo de la siguiente de forma:

70

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Antes de ponernos a trabajar tenemos que configurar ciertos parmetros: 1 - Configurar el compilador de C con el trabajaremos. Como vamos a usar C de CCS, primero tendremos que instalar este software y luego tendremos que instalar el plugin que trae para MPLAB. Luego de esto vamos a: y configuramos lo siguiente:

Con esto detecta automticamente que vamos a trabajar con ese compilador.

71

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

2 - Seleccionamos el dispositivo con el cual trabajaremos en este caso el PIC18F2550.

3 - Es til que cada vez que abramos el MPLAB se cargue el proyecto en el que estbamos trabajando para esto hacemos lo siguiente:

4 - Una vez que tenemos configurado el MPLAB hay que crear nuestro proyecto y para este fin podemos usar el proyect Wizard del programa.

72

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Apretamos siguiente y aparecer la siguiente ventana:

Aqu configuraremos el microcontrolador utilizado en este caso el PIC18F2550. Luego se selecciona el compilador utilizado C de CCS.

73

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Luego nos va a pedir que creemos un nuevo archivo de proyecto y nos dir que lo guardemos.

74

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Al proyecto lo llamaremos Ejercicio 1.mcp

Luego nos va a pedir que enlacemos el cdigo fuente del programa con el proyecto.

75

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Por ltimo nos muestra una pantalla indicndonos la finalizacin de la creacin del proyecto.

Por ltimo se nos abrir una pantalla donde aparecer una ventana como la que se muestra a continuacin indicndonos que ya podemos empezar a trabajar.

76

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Ahora maximizamos la pantalla de trabajo del MPLAB y comenzamos a escribir nuestro programa para esto seleccionamos el archivo Ejercicio 1.c que est en la ventana proyect y le damos maximizar. Nos tendra que quedar algo como esto:

Con esto ya estamos en condiciones de empezar a introducir cdigo.


Nota: Todos mis programas se desarrollarn bajo la plataforma de desarrollo PICUSB28 ya que es la nica herramienta con la que cuento para poder hacer mis experimentos.

77

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

En la pgina anterior vimos el encabezado del programa donde pusimos los siguientes datos: - El archivo cabecera con la definicin de los registros internos del PIC. - Los fusibles configurados. - La frecuencia de trabajo expresada en Hz. Antes de seguir veremos un poco la estructura de programacin en C, para ello veamos el siguiente diagrama:

Lo primero que definimos son las variables globales. Estas variables pueden ser usadas en todo el programa y son registros dentro del PIC donde se pueden guardar datos. Luego definimos las funciones, aqu definimos el tipo de funcin si va a devolver un resultado o no. Luego en el bloque main o bloque principal del programa definimos las funciones que se utilizarn dentro del main las instrucciones propias del programa principal, configuracin de dispositivos internos del microcontrolador, configuracin de puertos, etc. Y por ltimo desde el main llamamos a las funciones previamente definidas. Ya dentro de la funcin en si tenemos las respectivas variables de la funcin, el bloque de sentencias que dicta que va a hacer la funcin, es decir cual va a ser la funcin en si. Y dentro de la misma funcin podemos llamar a otras funciones. Algo a tener muy en cuenta a la hora de programar en C es dividir las tareas en funciones para que el programa quede ms modular y entendible y a su vez el mantenimiento sea ms fcil.
78

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Dicho lo anterior podemos seguir con nuestro programa de ejemplo Ejercicio 1.c

Ahora compilamos el programa para esto hay que hacer lo siguiente:

79

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Luego de que el compilador vea que no hay ningn error nos mostrar la siguiente pantalla:

80

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

El prximo paso es programar nuestra aplicacin en la memoria del microcontrolador del la placa PICUSB28. Para esto seleccionamos en la pestaa programmer del MPLAB el PICKIT 2 que es el programador USB que yo poseo, en caso de tener otro programador compatible seleccionar de la misma forma.

Como la placa es autoalimentada hay que poner en OFF la tensin de programacin.

Con esto el programa comenzar a correr y el LED parpadear cada 1 segundo.

81

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

CLASE CDC: Comunication device class Desarrollo de aplicaciones en VB.net


Por fin hemos llegado al primer tema importante del manual, aqu veremos como crear un puerto COM virtual a travs del PIC18F2550 programando en C de CCS y crearemos aplicaciones en VB.net para comunicarnos con la PC. En este apartado se desarrollarn los siguientes temas: - Deteccin del puerto COM generado. - Conexin / Desconexin en caliente. - Envo y recepcin de mensajes. - prender y apagar un LED. - Control de 8 rels. - Control de 8 entradas analgicas y 8 rels. - Lectura de 3 canales analgicos. - Lectura completa de 8 entradas digitales, 3 analgicas y control de 8 rels. - Lectura / escritura de una memoria EEPROM a travs de una interfaz en VB.net. Para comenzar con los ejemplos lo primero que hay que instalar es el Visual Basic 2008 Express Edition, en caso de tener Visual Studio 2008 mucho mejor. Para poder bajarlo hay que meterse a la pgina de Microsoft en la parte de descargas.

82

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Una vez seleccionado el idioma, presionamos el link "Download" y se nos preguntar si queremos descargar el archivo "vbsetup.exe" de 2.6MB:

Luego de que lo descarguemos comenzar la descarga del programa que durar en funcin a la velocidad de conexin que tengamos.

Nos pedir que aceptemos la licencia de uso:

83

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Luego nos preguntar donde guardaremos los archivos, y le damos a todos la misma ruta por defecto.

84

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Por ltimo comenzar a descargarse y a instalarse:

Luego de que se haya descargado por completo el programa, pedir que reiniciemos la mquina. Luego vamos a donde tenemos instalado el programa y lo iniciamos por primera vez, esto llevar un para de minutos ya que se tienen que configurar unos parmetros iniciales antes de comenzar a programar.

Luego de que se cargan todos los parmetros, el programa se inicia y muestra la siguiente pantalla:

85

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Este es el IDE de desarrollo, las iniciales corresponden a: Integrated Development Environment, o entorno de desarrollo integrado. Luego vamos a la pestaa archivo --> nuevo proyecto y nos tiene que aparecer la siguiente pantalla:

86

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Desde aqu podemos elegir que tipo de proyecto vamos a utilizar, en este curso trabajaremos con 2 tipos nicamente Aplicacin de Windows form Y Biblioteca de clases. Definamos cada una de ellas para tener una idea ms clara de que es cada cosa: Aplicacin de Windows form: Es una aplicacin .exe donde nosotros tenemos el marco o estructura al que le llamamos formulario donde nosotros le agregamos los controles tales como botones , cuadros de texto, temporizadores, menes, etc. Biblioteca de clases: La biblioteca de clases de .NET Framework est constituida por espacios de nombres. Cada espacio de nombres contiene tipos que se pueden utilizar en el programa: clases, estructuras, enumeraciones, delegados e interfaces. Cuando se crea un proyecto de Visual Basic o Visual C# en Visual Studio, se sigue haciendo referencia a las DLL ms comunes de la clase base (ensamblados). No obstante, si necesita utilizar un tipo incluido en una DLL a la que an no se hace referencia, deber agregar la referencia de esa DLL Dentro de nuevo proyecto se le da clic a aplicacin de Windows form. Nota: Todos los proyectos de la clase CDC se programarn en Visual Basic .NET 2008 bajo la suite Visual Studio. Por lo tanto mi pantalla queda as:

87

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Y seleccionamos:

Una vez elegido el tipo de proyecto le damos un nombre, en este caso PROYECTO DE CURSO CDC ya que vamos a escribir un solo ejemplo y se le van a ir aadiendo controles a medida que vallamos aprendiendo a trabajar con ellos y segn valla avanzando la complejidad de la programacin.

La pantalla para empezar a aadir controles les tendra que quedar como la siguiente:

88

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Antes de seguir trabajando es conveniente guardar nuestro proyecto:

89

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Nos pedir un nombre para el proyecto que se lo habamos designado antes y una ruta donde se guardar el proyecto.

Antes de comenzar a trabajar el IDE nos tiene que quedar de la siguiente forma:

Para dar comienzo a nuestro trabajo en VB.net lo primero que tenemos que hacer es modificar las caractersticas de nuestro formulario para que quede acorde a lo que nosotros necesitamos, para esto nos vamos a la pestaa propiedades y modificamos los siguientes parmetros:

90

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Y luego cambiamos el name del proyecto, quedando algo as:

Luego cambiamos la posicin inicial del formulario a center screen al ejecutarse, esto nos servir cuando estemos depurando nuestro programa.

91

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Luego de los cambios la ventana del formulario quedara de la siguiente manera:

Y en la ventana de programacin nos tendra que quedar de la siguiente manera:

Para ejecutar nuestra aplicacin presionaremos F5 y el formulario tendr que aparecer en el centro de la pantalla de la PC. Otra cosa que podemos modificar en nuestro formulario es el icono del mismo (Que puede ser o no el mismo que el icono de la aplicacin). Para modificar el icono de la aplicacin se procede de la siguiente manera:

Aqu nos enviar a un explorador donde podremos seleccionar el icono que deseemos. Bueno hasta aqu lleg la configuracin bsica de nuestro proyecto, con lo que comenzaremos con nuestro primer ejemplo que se basa en detectar el puerto COM generado por el dispositivo conectado al host.

92

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Comenzaremos a aadir algunos controles que utilizar nuestra aplicacin, estos sern un puerto serie y un label para aadir texto a la aplicacin y un Combobox para identificar el puerto serie generado por el microcontrolador y por ltimo un botn para conectar la aplicacin al dispositivo. El formulario debera quedarnos de la siguiente manera:

Ahora veremos cuales son las propiedades de los diferentes objetos agregados hasta ahora en el formulario. Dentro del formulario en la opcin MaximizeBox pondremos de opcin False ya que el tamao del formulario va a variar segn la cantidad de controles.

El cuadro de texto donde hemos puesto la descripcin del programa tiene las siguientes caractersticas.

93

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Para poder escribir con mltiples lneas, hay que activar la opcin Multiline dentro de las propiedades:

Las propiedades del ComboBox son las siguientes:

Luego las propiedades del botn son las siguientes:

94

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Nombre del objeto. Y por ltimo tenemos las propiedades del puerto serie que vamos a utilizar:

Ya tenemos definidas todas las caractersticas de la aplicacin y de sus controles ahora nos evocaremos un momento al estudio de la programacin del lado del PIC18F2550, explicando como se realizar la comunicacin y explicando paso a paso el cdigo fuente y sus funciones. Lo primero que debemos realizar es crear un proyecto con el MPLAB, esto ya est explicado ms arriba y solo pondremos lo ms importante.

95

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Bueno en esta pantalla vemos la inclusin de 2 libreras al proyecto: usb_cdc.h y usb_desc_cdc.h, estas libreras me permiten la comunicacin a travs del puerto USB y adems son las encargadas de la creacin de un puerto COM virtual en la PC con el que nosotros trabajaremos. Comenzaremos a describir usb_desc_cdc.h esta librera es la que identifica al dispositivo con el Host. Es decir le indica todas las caractersticas para que el Host pueda identificar al dispositivo como un puerto de comunicaciones virtual. Esta librera la generaremos con el siguiente programa:

Este programa lo creo el usuario Palitroquez, del foro todopic.

96

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Bsicamente el programa posee los siguientes controles: Este va a ser el nombre del dispositivo, cuando yo conecte el microcontrolador al puerto USB, la PC me va a mostrar un cartel mostrando este nombre. Esto es el identificador del dispositivo posee 2 Vendor ID (ID del fabricante) y Product ID (ID del producto). Por ahora lo dejaremos como est. Esto muestra una breve descripcin de que se trata el dispositivo, en el caso de la emulacin CDC se est emulando un puerto de comunicaciones serie. Este el nombre del fabricante que nosotros establezcamos, opcin muy interesante en caso de que sea un producto comercial. Esta es la versin del driver tanto para PC como para el PIC. Esta es la fecha de creacin del driver.

Aqu seleccionamos la clase de comunicacin que estamos utilizando, en este caso CDC RS232.

Seleccionamos el lenguaje de programacin para el cul se generar el driver, en este caso hay un nico lenguaje que es el C de CCS. Luego de configurar todo los parmetros que aqu enumer, se proceder a guardar las 2 plantillas tanto del driver para el microcontrolador como la plantilla del driver para la PC. El driver correspondiente a la PC es soportado por Win XP, Win Vista y no tendra que tener problemas con Win 7.

97

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Bien una vez generada la librera veamos como es su estructura interna.

Al principio incluye la librera del mdulo USB del PIC18F2550. Luego comienza con los descriptores.

98

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

99

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Ahora viene una parte muy importante de nuestro descriptor que son las descripciones del dispositivo (Lo que aparecer cuando conectemos el microcontrolador a la PC y lo que mostrar el administrador de dispositivos.

100

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Esta ltima parte del descriptor podemos modificarla nosotros a nuestro gusto Usando la siguiente frmula: (Nmero de caracteres del descriptor + 1) * 2 Damos el ejemplo del descriptor anterior (MoyaPIC_USB = 11 caracteres + 1) * 2 = Longitud del descriptor La longitud del descriptor est definida en la siguiente parte:

101

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Bueno ya que tenemos el driver para el PIC tendramos que echarle un vistazo al driver para la PC. Este driver es el lazo de comunicacin entre el microcontrolador que mediante sus descriptores establece comunicacin con el HOST. Por esto es importante que veamos como trabaja el driver para la PC, mencionando las partes ms importantes:

Aqu instala el driver en el directorio correspondiente una vez que el dispositivo es enumerado.

Aqu es la parte ms importante ya que enlaza los drivers del PIC y la PC mediante sus VID y PID. Y por ltimo:

102

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Por ltimo ac tenemos los string definitions que no son ms que cadenas de datos que me identificarn al microcontrolador dentro del administrador de dispositivos. El driver para la PC es generado tambin con el programa que vimos anteriormente y se crea en conjunto con el driver para el PIC. Anteriormente vimos que en la librera usb_desc_cdc.h vimos que dentro del apartado incluye otra librera USB.h, en esta librera se encuentran todas las definiciones de variables, prototipos de variables y funciones. Esta librera no la estudiaremos a fondo ya que solamente nos muestra las definiciones de las variables, como as tambin las banderas para algunas constantes. Ahora veremos la librera usb_cdc.h, donde define las funciones de control que permiten al microcontrolador crear un puerto serie virtual en el administrador de dispositivos. De esta librera veremos solo las funciones principales ya que desarrollar la librera en su extensin no es el objetivo principal de este manual. En ella encontraremos todas las funciones necesarias para poder establecer la comunicacin con la PC como si de un puerto serie se tratara. Por lo tanto todos los programas hechos para la PC en cualquier lenguaje que se comuniquen con el puerto serie sern compatibles con el puerto generado por el microcontrolador.

103

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

104

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Aqu mostramos un pantallazo general de algunas funciones que se utilizan dentro de la librera. Dentro de la estructura general de la librera hay ms funciones que se definirn a medida que avancemos en el estudio de la misma.

105

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

106

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Las funciones que estn minimizadas son importantes pero no estn para el control del usuario sino que son las encargadas de gestionar las interrupciones de la comunicacin. Esta funcin que vemos a continuacin es la encargada de configurar el puerto de comunicaciones para poder comunicarnos con los programas de la PC como puede ser por ejemplo hyperterminal.

107

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Aqu podemos ver 3 datos importantes:

Es decir la librera tiene que estar configurada para poder comunicarse con hyperterminal, caso contrario no se realizar el enlace. Por ltimo tenemos las funciones del usuario, donde veremos que podemos hacer usando la clase CDC. Veamos las siguientes imgenes donde se irn explicando cada una.

108

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Esta funcin retorna con un carcter proveniente desde la PC, en caso de no haber un carcter disponible entrar en un bucle infinito hasta que lo haya. Para que esto no suceda tendremos que colocar la sentencia: Antes de llamar a la funcin.

Esta funcin se encarga de enviar caracteres rpidamente hacia la PC.

109

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Esta funcin enva datos a la PC, siempre y cuando est libre el buffer de salida. En caso de que no est libre, entra en un bucle infinito. Para poder salir del mismo hay que utilizar la siguiente sentencia antes de llamar a la funcin:

Las funciones que siguen en la librera, son importadas de la librera input.c, las misma son para obtener datos directamente del puerto USB en modo CDC, pero no la explicaremos ya que no son utilizadas normalmente por el usuario.

110

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

111

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Hemos terminado de describir el funcionamiento de ambas libreras pero me he dado cuenta de que pasamos algo por alto:

Aqu hay 2 libreras muy importantes que tendremos que definir y explicar ya que son MUY IMPORTANTES. Primero desarrollaremos la librera pic18_usb.h la cual contiene el driver correspondiente al mdulo USB de la familia PIC18FXX5X. A continuacin veremos una pequea descripcin de las funciones descriptas en la librera.

112

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

113

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Esa fue una pequea descripcin de las funciones ms utilizadas por el usuario. Ahora veremos la estructura interna del driver.

114

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

115

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

En el mapeo de la RAM vemos los registros que intervienen en el uso del puerto USB y su configuracin.

116

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

117

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Aqu comenzamos a definir y explicar una por una las funciones de control del usuario que ms utilizamos y algunas otras que podemos utilizar en caso de necesitarlo.

Es una funcin que nos devuelve un 1 si el dispositivo est conectado al Host. En caso de que el pin de censado de conexin no est definido esta funcin es transparente al usuario (No se utiliza).

118

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Esta funcin bsicamente desconecta el dispositivo del host en caso de que requiera. Para esto deshabilita las interrupciones que manejan la conexin USB y reseteamos el stack USB.

Funcin que conecta el dispositivo al host, conectado las lneas D + y D de mdulo USB al bus y encendiendo las interrupciones.

119

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Esta pequea funcin inicializa el mdulo USB, pero no lo conecta al bus. La funcin puede ser utilizada en caso de queramos que el microcontrolador realice otros procesos mientras que el dispositivo no est conectado al bus.

Esta funcin es la que se encarga de inicializar el perifrico USB en caso de que sea necesario. Tambin habilita las interrupciones del y lo conecta al bus conectando las lneas D+ y D-

120

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Esta funcin inicializa y conecta el mdulo USB al bus, la misma se indica en caso de que la nica tarea del microcontrolador sea atender las tareas correspondientes a lo que sucede en bus USB ya que entra en un loop infinito hasta que el dispositivo es conectado al bus.

121

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Esta funcin enva un dato hacia el host (No es usada en el modo CDC).

Esta funcin retorna con un paquete desde el endpoint de entrada y guarda en un buffer hasta que el usuario lo tome. Hasta ac llegan las funciones ms utilizadas por el usuario. En caso de tener que usar otra funcin en algn ejemplo, se explicar adecuadamente.

122

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

Aqu comienza la explicacin de las funciones de la librera USB.C.

123

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

En esta funcin podemos determinar al igual que con kbhit (), si hay datos en el buffer de entrada del endpoint que estemos testeando.

Funcin que retorna un 1 o un 0 segn el host hay enumerado/configurado el dispositivo.

Esta funcin, espera en un loop infinito a que el dispositivo sea conectado al host. No es recomendable si el microcontrolador tiene que ejecutar otros procesos a parte del USB.

124

Moyano Jonathan PIC18F250 y USB Desarrollo de aplicaciones

125

También podría gustarte