Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
Si te ha funcionado antes , es problema de la PC no de los ejemplos. Algo que hay que tener en cuenta es cuando uno conecta un dispositivo USB la PC toma los descriptores del dispositivo y crea un archivo que guarda en el registro para que cada vez que el usuario conecte el dispositivo este no pida los drivers continuamente y se enumere de forma automatica.
El problema recae en cuando uno ha conectado y desconectado muchos dispositivos con el mismo descriptor y diferente driver o funcionamiento pueden aparecer conflictos de software. Que te soy sincero la única opción que hay es formatear la máquina o buscarte un programa para limpiar los driver's USB ...si buscas en la red seguro los encontras.
El capacitor de Vusb ha sido comentado ampliamente y te digo que no es critico siempre y cuando tenga un valor de 470nf para arriba.
Hola a todos. Estoy probando un programa con el PIC18F4550, para la comunicación por USB clase CDC. El programa que uso como entorno es el HYPERTERMINAL. El programa anda muy bien en el envio de datos (PIC-PC), pero cuando intento realizar el envio de datos al reves (PC-PIC) nunca recibo los caracteres. Este es el programa. Cuando preciono la 'x' para recibir el dato, nunca funciona. Muchas gracias.
#include <18F4550.h>
#fuses HSPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PL L3,CPUDIV1,VREGEN,NOPBADEN
Código:#include <18F4550.h> #include "usb_cdc.h" // Descripción de funciones del USB. #include "usb_desc_cdc.h" // Descriptores del dispositivo USB. #fuses HSPLL, MCLR, NOWDT, NOPROTECT, NOLVP, NODEBUG, USBDIV, PLL3, CPUDIV1, VREGEN, NOPBADEN #use delay(clock=48000000) // Frecuencia máxima de trabajo. char letra; void main() { float medicion; usb_cdc_init(); // Configuramos al puerto virtual. usb_init(); // Inicializamos el stack USB. setup_adc_ports (all_analog); setup_adc (adc_clock_internal); //enciende adc set_adc_channel(0); //elige canal a medir RA0 delay_us(10); while(!usb_cdc_connected()) { // Mientras el USB no esté conectado. output_high(PIN_B6); // Función USB no detectada. (Enciende LED rojo) output_low(PIN_B7); // (Apaga LED verde) } // espera a detectar una transmisión de la PC (Set_Line_Coding). output_high(PIN_B7); // Función USB detectada. (Enciende LED verde) output_low(PIN_B6); // (Apaga LED rojo) printf(usb_cdc_putc, "Dispositivo USB_CDC\n\r"); do{ usb_task(); if (usb_enumerated()){ // Espera a que el dispositivo sea enumerado por el host // medicion=read_adc(); // printf(usb_cdc_putc, "Dispositivo USB_CDC\n\r"); // delay_ms(2000); // printf(usb_cdc_putc, "Emilio D'Olivo\n\r"); // delay_ms(2000); // printf(usb_cdc_putc, "Grupo GIDE\n\r"); // delay_ms(2000); // printf(usb_cdc_putc,"\r"); // printf(usb_cdc_putc,"-%2.1g",medicion); // delay_ms(500); if(usb_cdc_kbhit()){ // En espera de nuevos caracteres en el buffer de recepción. letra=usb_cdc_getc(); output_high(PIN_B7); delay_ms(2000); output_low(PIN_B7); if(letra=='x' || letra == 'a'){ //¿lo que llegó fué el caracter x o el a? printf(usb_cdc_putc, "Se recibe el caracter %c.\n\r",letra); //si, entonces envía una cadena hacia el PC // usb_cdc_putc(letra); //si no anda proba poniendo directamente } else{ usb_cdc_putc('?'); //para lee mal el buffer } } } }while (TRUE); // bucle infinito. }