Hola amigos !
Me estoy embarcando en ésto de la conectividad USB y me está costando bastante más de lo que creía.
Mi deseo es trabajar con sistemas autónomos de instrumentación; (cómo ser un voltímetro ó un amperímetro) a los cuales cuando quisiera, pudiera conectar mediante USB al PC para poder graficar las mediciones realizadas.
Sin haber llegado aún a trabajar en el código de VB6, me estoy encontrando con muchas piedras en el camino que están siendo difíciles de resolver.
Lo que he hecho hasta aquí, es poder compilar el programa que vá dentro del PIC (EasyHID lo hace solo) y que el PC me reconozca el dispositivo conectado.
El circuito que he realizado sólo pretende encender un led (o activar un blinker) mientras esté desconectado de USB y que el mismo se apague y encienda otro al conectar USB.
El mejor de los casos sería armar un blinker en ambos estadíos a través de RB0 para "desconectado" y RB1 para "conectado"
Me suceden cosas al intentar hacerlo que no comprendo muy bien.
Estoy usando Protón para desarrollar la aplicación y no logro comprender bien "dónde" debo colocar mis fragmentos de programa para que el asunto funcione.
No alcanzo a darme cuenta dónde debo colocar, cómo había puesto de ejemplo, un blinker al no estar conectado y el otro al conectar a USB.
Porque quiero llegar a un equipo autónomo, que tenga conexión USB.
No busco un equipo que funcione al conectarse a USB solamente.
Al iniciar el programa, (utilizo la opción que hace que el mismo programa genere las interrupciones para controlar el estado del bus), una vez que se declararon las variables y constantes del inicio y el programa entra en la parte de
ProgramStart lo primero que encuentra es la llamada a
AttachToUSB; lo cual me lleva a un bucle infinito del cual no sale hasta que el hard no se conecte al bus USB.
Es lo que aparece al final del listado cómo
AttachToUSB:
REPEAT
USBPOLL
UNTIL PP0 = ATTACHED_STATE
RETURN
y queda allí indefinidamente hasta que conecto el hard al bus y pasa a la parte de programa
ProgramLoop (Estoy usando los nombres que usa EasyHID para que sea más clara la explicación de mi duda)
Una vez en el
ProgramLoop puedo armar un blinker para indicar que no hemos conectado a USB y el mismo funciona sin inconvenientes.
Pero dónde coloco el anterior ? , el de indicación de espera de conexión ? Dentro del
AttachToUSB:?
Ya hice el intento y no funciona.
Es decir.
Puedo lograr muchas cosas hasta ahora, pero aquí viene la catarata de dudas y pruebas frustradas y frustrantes que he realizado:
Una vez que el programa entró en el ProgramLoop, debido a haber conectado el hard a USB, y luego intentar desconectar el hard del mismo, el programa no sale nunca de ése lazo.
Queda siempre allí cómo si estuviera "enganchado" a USB, cuando en realidad no lo está.
No es que se arma la rutina con un Timer para checkear el estado de la conexión en forma automática y permanente ? No debiera salirse del lazo al desconectar USB ?
Cómo debiera armar la rutina para que me controle el estado de conexión en el hard ?
He probado de colocar la instrucción
GOSUB AttachToUSB dentro del mismo, pero el programa muere dentro del lazo ProgramLoop.
Digo muere porque yo armo un blinker que arranque al conectar USB y el mismo funciona correctamente siempre que no haya colocado la instrucción antes mencionada. Si la coloco el blinker no funciona.
Es cómo si se fuera el programa a controlar el Attach y quedara por allí dando vueltas quien sabe dónde ...
Sintetizando un poco.
Quisiera hacer un blinker que funcione al energizar mi circuito (RB0), que pase a otro al conectar USB (RB1) y "que vuelva" al blinker inicial al desconectar USB (RB0) y que vuelva al otro al conectar ...... y así indefinidamente.
No tengo claro, dónde ni cómo, colocar mis líneas de código para ello, ó cómo reformar lo que Protón me entrga "pre-armado" para lograr mi objetivo.
O sea, al blinker al menos, lo sé armar, lo que no logro comprender de hacer es que el programa del PIC haga lo que deseo.
Ya vendrá luego el tiempo de solicitar datos al PIC y trabajar en Visual, pero en ésta primera etapa quiero trabajar con un PIC autónomo que sea capáz de conectarse al PC, luego desconectarse y seguir funcionando y no comprendo cómo lograrlo.
Ojalá se haya entendido mi inquietud y puedan ayudarme con la misma.
Saludos !
Mario