Conectar Nokia 3310 LCD al USB usando AVR (5 / 9 paso)

Paso 5: Entender el código USB

Esto es donde empieza la diversión!

Si has venido esto lejos, usted debe tener una pantalla que dice "Mostrar inicializar" cuando encienda el dispositivo.

Si no has hecho ya, descargar el código fuente adjunto a este instructivo, y tendremos un vistazo sobre cómo se comunica el AVR con la pantalla y el ordenador.

Si nunca has trabajado con V-USB antes, puede ser muy confuso al principio. Por lo menos lo fue para mí. Desplácese hasta la función de usbFunctionSetup y vamos a tener una mirada más cercana sobre cómo realmente funciona. Es la única función que usted necesita cuidado de edición además de la función principal.

usbFunctionSetup es la función donde se procesan todos los datos que envié al microcontrolador por el puerto USB. Si observas las declaraciones IF, todos ellos busque un número específico en la variable rq -> bRequest . Este i donde se almacenan los códigos de petición. Usted puede pensar de los códigos de petición como comandos. En el software del host, tenemos una función como esta: SendData (int petición, datos), el valor que pones en el parámetro de la petición se transfirió al microcontrolador y se almacenarán en el rq -> variable bRequest, y utilizar este código de solicitud que para hacer varias cosas en el usbFunctionSetup.

Solamente han añadido 6 códigos de solicitud, pero si quieres hacer un 7 solicitar código simplemente escribe esto en un lugar en la función usbFunctionSetup:

Si la petición es 7
si (rq -> bRequest == 7) {/ / comando 7 - SEND_MYCOMMAND
Hacer mi código
}

Si ahora llama a la función SendData así: SendData (7, 0);
Se ejecutará la instrucción IF que acaba de crear.

El 2 º parámetro en la función SendData es los datos reales que usted envía al microcontrolador. Este número se almacenará en struct rq -> wValue . Se trata de una palabra (2 bytes), pero si sólo desea usar 1 de los 2 bytes almacenados aquí, puede hacerlo mediante el uso de la matriz de bytes, como este: rq -> wValue.bytes[0]. Si desea utilizar la palabra completa, puede acceder a él así: rq -> wValue.word. Tenga en cuenta que usted debe usar un int sin signo si desea utilizar la palabra completa.

Usted debe funciones avanzadas que toman mucho tiempo para hacer fuera de la función usbFunctionSetup y en su lugar el bucle principal ejecutarlos. Si tienes en la usbFunctionSetup y usan mucho tiempo para terminar (50ms), podría perder la conexión USB al ordenador. Decidí tenerlos en el usbFunctionSetup porque la escritura a la pantalla es mucho más rápida que el USB (de hecho, escribimos un 1 estable, 33Mbit/s y la pantalla, la pantalla soporta hasta 4Mbits/s) por lo que no hay riesgo de perder la conexión por tomar demasiado tiempo.

El resto del código debe ser comentado lo suficiente para que usted pueda entender. Si algo está claro, me avisas y voy a intentar aclarar las cosas para usted.

Artículos Relacionados

Recuperación de un NOKIA 3310 LCD y usarlo con Arduino

Recuperación de un NOKIA 3310 LCD y usarlo con Arduino

Este instructable dice cómo extraer la pantalla LCD del defecto práctico Nokia 3310 y a modificarlo para usar con Arduino.Tenía un defecto antiguo Nokia 3310 práctico. No era carga de la batería. Quería tirarla, pero me vino la idea, que la pantalla
Registrador de aceleración Nokia 3310

Registrador de aceleración Nokia 3310

cómo hacer un registrador de aceleración en un celular Nokia 3310.Lo utilizo para medir las fuerzas rusas :)Paso 1: Herramientas que necesariasAlgunas herramientas que pueda necesitar:Nokia 3310soldadura de hierroDestornillador T6material para hacer
Conectar una pantalla LCD con Arduino

Conectar una pantalla LCD con Arduino

en este instructable nos va a ver cómo conectar un LCD paralelo a un Arduino. La pantalla LCD que estoy usando utiliza la interfaz de HD44780 común.  Muchos LCDs tienen esto, usted puede decir generalmente por la interfaz de 16 pines. Sólo necesita 1
Cómo conectar el Cable de datos USB de un Samsung Galaxy Tab con ayuda de Sugru

Cómo conectar el Cable de datos USB de un Samsung Galaxy Tab con ayuda de Sugru

cuando compré mi Samsung Galaxy Tab 7.0 siempre conectar el Cable de datos USB invertido.Para que nunca vuelva a conectarlo al revés, utilizar algunos Sugru que recibimos para construir de noche en nuestro local hackerspace (LHC - http://lhc.net.br).
Transmisor de RC a Gamepad USB usando Arduino

Transmisor de RC a Gamepad USB usando Arduino

¿Por qué debo hacerlo?Cuando se trata de RC aviones, un simulador de vuelo puede ser una excelente manera de perfeccionar sus habilidades durante la temporada baja o incluso prepararse para su primer vuelo. La desventaja principal al uso de un simula
Monitor de baterías caseras usando AVR

Monitor de baterías caseras usando AVR

chicos,Quiero compartir mi experiencia con el divisor de voltaje, ADC y AVRMonitor de baterías caseras con AVREs bastante simple el sensor son solo dos resistores y diodos zener con capasitor, no comprarlos, lo encontré en mi caja.Podemos usarlo para
Conectar una pantalla LCD y un Sensor de distancia por ultrasonidos a un Arduino

Conectar una pantalla LCD y un Sensor de distancia por ultrasonidos a un Arduino

Cuando empecé a jugar con los Arduinos, ésta fue la primera creación poco hasta me. La orientación del vídeo es un poco pobre. Esta fue mi primera ve las cosas así que pido disculpas que no era tabaco de hasta entonces. De todas formas, muy simple de
Cómo interfaz 16 X 2 LCD con el Microcontrolador AVR

Cómo interfaz 16 X 2 LCD con el Microcontrolador AVR

aquí está el diagrama del circuito de interface 16 X 2 LCD al Microcontrolador AVR. En este circuito, el oscilador de cristal dará el reloj en el microcontrolador. Los condensadores conectados a la voluntad de cristal actúan como filtros y ayudar el
INFRA rojo mando ROBOCAR usando AVR (ATMEGA32) MCU

INFRA rojo mando ROBOCAR usando AVR (ATMEGA32) MCU

El presente proyecto describe un diseño e implementación de un infrarrojo (IR) remoto controlado RoboCar que puede ser utilizado para diversas aplicaciones de control sin tripulación automatizado. He diseñado RoboCar controlado remoto (movimiento de
Diseñar un lápiz USB usando Autodesk Inventor

Diseñar un lápiz USB usando Autodesk Inventor

en este tutorial, se camina a través de cómo diseñar un pendrive USB personalizado para impresión 3D.Si eres un maestro, a los estudiantes a diseñar objetos con aplicación de mundo real es una gran manera de enganchar su creatividad, así como obligar
Arduino con 4 x 20 LCD y LCD Smartie USB

Arduino con 4 x 20 LCD y LCD Smartie USB

aquí es un Arduino conectado a un 4 x 20 display HD44780, incluido en 8 "x 4 1/2" Lexan.Usé una versión modificada de la librería de arduino LCD y había hackeado el LCD Smartie bosquejo utilizando comandos de matriz Orbital.Smartie LCD corre los
Moldeado conector USB usando la pistola de pegamento caliente o sugru

Moldeado conector USB usando la pistola de pegamento caliente o sugru

todos sabemos que puede fácilmente re soldadura conectores de usb de muchos dispositivos como mouse, teclado, etc. y ahorrar dinero. pero qué pasa con la carcasa o cubierta...lo hice con piezas rescatadas del antiguo cable vga...Así que aquí me m com
Emulador de logotipo usando AVR

Emulador de logotipo usando AVR

hace cuarenta años, los investigadores desarrollaron un lenguaje de programación que se convertiría en una brillante herramienta educativa. Logo era un lenguaje de programación interesante, diseñado por Seymour Papert para niños, una vez utilizado en
HP48GX Cable de USB usando el protocolo XMODEM para archivo de transferencia (HP48 cable USB).

HP48GX Cable de USB usando el protocolo XMODEM para archivo de transferencia (HP48 cable USB).

Configurar el Cable USB para la serie de calculadora HP48 gráficas: HP48GX, HP48G + HP48G, HP48SX y HP48S.