Shop OBEX P1 Docs P2 Docs Learn Events
USB Connection Issue — Parallax Forums

USB Connection Issue

mynet43mynet43 Posts: 644
edited 2010-11-16 09:43 in Propeller 1
I'm using a Propeller board with the FT232RL USB interface. This works fine when connected to a PC running Windows.

I'm talking to it running an exe file, compiled by RobotBasic, on the PC. This also works fine and allows serial I/O at 115200 baud.

When I try to run multiple instances of the PC program, with each Propeller board connected to a different USB port on the PC, I have a problem.

When I do this, the first one I launch finds a USB port and works. The second one is unable to locate a USB port.

Does anyone know why this would occur?

Is the Propeller with the FT232RL locked into a single USB ID? Or is it something else.

Any solution would be really appreciated.

Thank you for your help.

Jim

Comments

  • RaymanRayman Posts: 14,889
    edited 2010-11-16 07:50
    Which Prop board is it?

    I think it should work. Every FTDI chip has an individual ID code and should show up as a different serial port. But, it is possible that somebody programmed the FTDI chips with the same ID code. That might be a problem...
  • mynet43mynet43 Posts: 644
    edited 2010-11-16 09:09
    Good answer. I wasn't aware that the FTDI chips have individual ID's. Mine are new, from a supplier, so I don't think anyone has messed with them. By the way, this is my own prop board.

    I also got a good answer back from the RB forum. I think I'll be able to do it. I have an answer from them, showing how to connect three PC programs to three propeller boards, all running at the same time.

    Let me know if anyone wants to know how to do it.

    Thanks!

    Jim
  • blittledblittled Posts: 681
    edited 2010-11-16 09:19
    Jim,

    I use RobotBasic so I would be interested in knowing how multiple boards could be connected. Thanks!
  • mynet43mynet43 Posts: 644
    edited 2010-11-16 09:43
    hi blittled,

    Here's the response posted by Samuel, the author of RB:


    I think the fault is on your PC or setup. RB can run as many instances of the IDE as you want

    However two instances cannot use the same comm port.... a comm port is an UN-SHAREABLE resource.
    So as long as each instance of the IDEs is using a different port then you can have as many Propellers
    as you want.

    I tried this just to make sure I am not wrong; it has been known to happen on very rare occasions }:-))

    It worked perfectly well with THREE IDEs running the program below and THREE Propellers
    uploaded with the program below....I used two Propeller Professional Development boards (PPDB)
    and one Propeller Demo Board (PDB)

    Compile the Spin program to EEPROM using F11....this is needed since using RB on the same
    port as the programming port will cause a reset due to the DTR signal....so use F11 to compile
    the program below to each board in turn.... the Propeller Tool will use the first Propeller it finds
    so you need to not have the other connected while you program the one....program them one
    at a time then connect both simultaneously and then run open two (or more) instances of RB
    and load the program below and run it...you will be able to see the two instances running simultaneously

    Oh... I forgot.... set the value of n to 1 for the first instance 2 for the next etc.

    Here are the programs:
     
    '========================
    'Spin program works on the Demo Board
    'compile into the EEPROM using F11
    CON
      _clkmode = xtal1 + pll16x
      _xinfreq = 5_000_000
     D_TX      = 30
     D_RX      = 31
     D_BAUD    = 115200
     
    OBJ
      D    : "FullDuplexSerial"    'serial driver
     
    PUB Main
      dirA[23..16]~~
      D.Start(D_RX,D_TX,0,D_BAUD)   'start the serial driver
      repeat 5
        outA[23..16] := %10101010
        waitcnt(clkfreq/4+cnt)    
        outA[23..16] := !(%10101010)
        waitcnt(clkfreq/4+cnt)
        outA[23..16]~
      repeat
         OutA[23..20] := InA[7..5]  'output = input
         D.Tx(InA[7..5])      'transmit the value to RB
     
    '=========================================================
     
    //-----------------RB Program
    n=1   //change this on the other instance to 2
    serports s
    Port = tonumber(extract(s,crlf(),n),0)
    print Port
    setcommport Port,br115200
    while true
      repeat
         checkserbuffer x
      until x
      serin s
      print getstrbyte(s,length(s))
    wend
    

    Let me know if you have any comments or questions.

    Jim
Sign In or Register to comment.