TODOPIC
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
. ¿Perdiste tu
email de activación
?
1 Hora
1 Día
1 Semana
1 Mes
Siempre
Ingresar con nombre de usuario, contraseña y duración de la sesión
Este tema
Este sub-foro
Todo el foro
Google
Inicio
Ayuda
Buscar
Ingresar
Registrarse
TODOPIC
»
Microcontroladores PIC
»
Lenguaje C para microcontroladores PIC
(Moderadores:
pikman
,
pocher
,
vszener
,
Suky
) »
Detectar USB conectado
« anterior
próximo »
Imprimir
Páginas: [
1
]
Ir Abajo
Autor
Tema: Detectar USB conectado (Leído 1441 veces)
0 Usuarios y 1 Visitante están viendo este tema.
jorgejg
PIC12
Mensajes: 96
Detectar USB conectado
«
en:
26 de Octubre de 2011, 00:00:40 »
Estoy tratando de inicializar el usb cuando la PC se conecta al PIC mediante el cable usb (tengop RB0 conectado a los 5V que viene desde el cable usb) pero a lo mucho enciendo un led de detección del cable conectado mas no inicializa correctamente el usb.
Estoy haciendo un poll a RB0 cada 20 ms :
if (Aux0.Testear_pinUSB==1)
{
if ( PORTBbits.RB0==1 ) //1: USB conectado
{
USBDeviceAttach(); //Solo se debe llamar en el main y cuando "USB_INTERRUPT" esté definido
USBDeviceInit(); //Inicializo el Módulo USB
while((USBGetDeviceState() < CONFIGURED_STATE) || (USBIsDeviceSuspended() == TRUE))
{
USBDeviceTasks();
}
Aux0.Testear_pinUSB=0;
}
}
else
{
if ( PORTBbits.RB0==0 ) //0: USB desconectado
{
USBDeviceDetach();
Aux0.Testear_pinUSB=1;
}
}
Alguna sugerencia?
«
Última modificación: 26 de Octubre de 2011, 00:08:24 por jorgejg
»
En línea
jorgejg
PIC12
Mensajes: 96
Re: Detectar USB conectado
«
Respuesta #1 en:
26 de Octubre de 2011, 11:39:25 »
Bueno, luego de intentar mas veo que solo me funciona cuando lo coloco en el Main, yo buscaba hacerlo por interrupción, seguiré intentando luego.
En línea
Suky
Moderador Local
DsPIC33
Mensajes: 6758
Re: Detectar USB conectado
«
Respuesta #2 en:
26 de Octubre de 2011, 11:44:28 »
En C18 se hace de la siguiente forma:
Código: C
void
YourHighPriorityISRCode
(
)
{
#if defined(USB_INTERRUPT)
USBDeviceTasks
(
)
;
#endif
}
void
main
(
)
{
USBDeviceInit
(
)
;
#if defined(USB_INTERRUPT)
USBDeviceAttach
(
)
;
#endif
while
(
1
)
{
#if defined(USB_POLLING)
USBDeviceTasks
(
)
;
#endif
if
(
PIN_POWER_USB
==
1
)
{
ProcessUSB
(
)
;
}
}
}
void
ProcessUSB
(
void
)
{
//Blink the LEDs according to the USB device status
if
(
blinkStatusValid
)
{
BlinkUSBStatus
(
)
;
}
// User Application USB tasks
if
(
(
USBDeviceState
<
CONFIGURED_STATE
)
||
(
USBSuspendControl
==
1
)
)
return
;
if
(
!
HIDRxHandleBusy
(
USBOutHandle
)
)
// Hay datos desde el Host?
{
// Se tratan datos
}
}
O sea, las tareas que se realizan de USB no se desactivan nunca, solo se pregunta si está conectado, entonces paso a trabajar con el USB. Si todavía no está configurado retorno, sino ya está listo para trabajar (enviar/recibir datos)
Saludos!
En línea
No contesto mensajes privados, las consultas en el foro
Imprimir
Páginas: [
1
]
Ir Arriba
« anterior
próximo »
TODOPIC
»
Microcontroladores PIC
»
Lenguaje C para microcontroladores PIC
(Moderadores:
pikman
,
pocher
,
vszener
,
Suky
) »
Detectar USB conectado