I need to have a micro circuit works with connection to the PC, and when it
is unplugged it has to change
to a standalone mode, and when it is connected to PC, it again should give
control to USB host and work as USB device.

There is a code sample using a modification of Albert's USB code, and
description about how i managed to solve this with hardware, below.

Has anyone an idea for this with pure software ?
I know this is theoretically possible, but how to do it with JAL way ?

2010/12/1 Serdar K. <[email protected]>

>
>> How did you solve your cdc line status check problem ?
>>
>>
> I had this problem for a circuit which has a battery and works in a dual
> way:
>
> When connected to PC, it was needed to deliver the data to the PC, and
> if it wasn't connected on startup, it should work in another forever loop
> and acquire data.
>
> Also when plugged out when running, it should be reset by own, and go to
> the other mode,
> and when it is connected to pc when logging, it had to stop logging and go
> to usb comm
> emulation mode.
>
> I couldn't do this with line status or usb enabled flag, it always stuck (i
> think it is come too early in usb mode, since comm has to initialize for a
> while, i couldn't do it anyway, it freezed when changing mode, since the
> device was already running and started up with battery) , so i did find my
> solution. Like in bootloader, i used a pin as input, a pulldown to the
> ground, a diode array connected from usb power line to the power pin of
> micro., and a resistor to the USB power from the dedicated pin described
> above.
>
> I named it with an alias USB_SENSE ,
>
> -------------------------------------------------------------------------------------
> alias USB_SENSE          is PORTA_RA0
> alias USB_SENSE_direction  is pin_A0_direction
> alias RED_LED is PORTB_RB0
> alias RED_LED_direction is pin_B0_direction
>
> RED_LED_direction = output
> USB_SENSE_direction = input
>
>
> procedure DoEvalUSBActive is
>   if ( USB_SENSE == high ) then
>     asm goto 0x800
>   end if
> end procedure
>
> procedure DoEvalUSBInActive is
>  if ( USB_SENSE == low ) then
>      asm goto 0x800
>  end if
> end procedure
>
> if ( USB_SENSE == low ) then
>
>
> ;indicate USB disconnection
> for 10 loop
> RED_LED = on
> delay_100ms(1)
> RED_LED = off
> delay_100ms(1)
> end loop
>
> forever loop
>  ;Check if USB connected, if connected  reset chip and go to connected mode
>    DoEvalUSBActive
>
>
> ; do the non-connected stuff
>
> end loop
>
>
> else
> ;; USB connected
> ;;;; here is the rest running with USB, the same in Albert's code..
>
>
> else
>
> for 3 loop
> RED_LED = on
> delay_1ms(25)
> RED_LED = off
> delay_100ms(3)
> end loop
>
> end if
>
> ---...And go USB....
> ....
> ...
>
> -- interrupts? No thanks
> while INTCON_GIE loop
>     INTCON_GIE = false
> end loop
> ---     INTCON_RBIE = false
>
>
> -- setup the USB device
> usb_setup()
>
> -- enable the interrupt flags, move to library?
> turn_usb_ints_on()
>
> delay_1ms(200)
>
> -- enable USB device
> usb_enable_module()
>
> ...
> ...
> ....
>
> USB_SENSE_direction  = input
>
> forever loop
>
> DoEvalUSBInActive ;;;; if usb disconnected, go to the reset PIC and go to
> non connected mode...
>
>
>     -- poll the usb ISR function on a regular base, in order to
>     -- serve the USB requests
> usb_tasks()
>
>
>     -- check if USB device has been configured by the HOST
> if usb_is_configured()  then
>         if usb_initialized == false ....
> ....
> ...
> ...
>
> while ( usb_cdc_rx_avail() == high ) loop
> DoEvalUSBInActive ;;;; if usb disconnected, go to the reset PIC and go to
> non connected mode...
>
> var byte ch = usb_cdc_getc()
>
>  if ( ch == "a" ) then
> ...
> ..
> end if
>
> ...
> ....
> end loop ;;;; while ( usb_cdc_rx_avail() == high ) loop
>
>
> else ;;;
>
> end if  ;;; if enable_modem then
>
>
> end loop ;; forever loop
>
>
>
> --------------------------------------------------------------------------------------------------------
>
> my solution was with hardware, but it could be nice if it could work with
> software...
>
> Greetings,
> Serdar
>
>
>
>
>
>
>


-- 
*Serdar KIZILTOPRAK
Intelligence **Technology Systems
[email protected]
http://www.its3k.com
+90(216) 518 15 00*
 **

-- 
You received this message because you are subscribed to the Google Groups 
"jallib" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/jallib?hl=en.

Reply via email to