Shop OBEX P1 Docs P2 Docs Learn Events
High Speed Transmission Between two Props — Parallax Forums

High Speed Transmission Between two Props

Wow, things have changed here since the last I looked.  I got a project where I am transmitting about 1.4Mb/s of data over perhaps 1000 meters on fiber.  (Earthquake measuring equipment)  since I have used props for everything over the years I thought this would be another good app.
Anyway, I saw some discussions on this topic mainly some work by Bueu that looked good.  However I was hoping to find some actual code to use.  For doing this.  Any thoughts where?
BTW, it is a basic system demonstration that gathers 24bit data from 3 adc's packs this data and transmits to the surface.  Once on the surface this data is unpacked and output to 3 - 24bit dacs.  Nothing fancy here really, just a demonstration for now.
Thanks,Greg

Comments

  • Talking Spin? Or open to C/C++ options?
  • Spin is what I do at the moment.  I haven't seen any of this on the OBEX library, but I will check again.Thanks,Greg
  • Greg, I'm checking all my drives. I know I downloaded when it was first published, but searches of now 4 TB of drives shown nothing. I may be looking for the wrong Spin file. If any one knows Beau's original Spin file name, please post.. Thanks!
    Jim
  • Thanks Publison
  • LeonLeon Posts: 7,620
    You need PASM for high-speed.
  • Yes, it always boils down to PASM for any real processing.  I did look at the 4 wire some, but I just have a single fiber coming from down hole picking up signals for 3 geophones.  So a single - wire or fiber solution is needed.Thanks,Greg
  • Cluso99Cluso99 Posts: 18,069
    Is it one way transmission?
    If one way then a modified fullduplexserial for receive only should work for 1.4Mb/s. I thought this had been done. The mod is to remove the task switching code.
  • jmgjmg Posts: 15,173
    Yes, it always boils down to PASM for any real processing.  I did look at the 4 wire some, but I just have a single fiber coming from down hole picking up signals for 3 geophones.  So a single - wire or fiber solution is needed.


    It's unclear, do you have control of both ends of this, or is the stream coming at you already in some format ?( Usually there are limits on what goes down the hole.)

    If you only want to read a stream, then simplex UART is the easiest to code.Where does the data stream end up ?
  • yes, it is one way, and the card downhole will have a prop. too.  The data format is up to  myself.  The data consists of 3 24 bit words for each of the 24 bit adc's.  I am assuming conservatively to use 32 bits for over head with a data sampling rate of 14.4 Khz .  
    so figure 3 x 32 x 14.4ks/sec  just over 1.4 Ms/s
    Greg
  • jmgjmg Posts: 15,173
    I'd suggest targeting 2Mbd, which gives a 14.4k paced burst of 12 bytes, then
    (2M/14.4k)-3*32*10/8 = 18.88888 Stop bits
    A FT232H/FT2232H would then be able to generate or receive that stream for easy testing.
  • Thanks jmg,not a bad ideal, but the hardware is built and now just trying to bit bang the data into a single pin.  I actually thought this would be no big deal, but I decided to check to see if someone already did this before I started coding up something.  I did see that Beau, had something.  I read the description but didn't see any code.
    I am hoping to deliver the data as 1 3x32bit packets, unpack it into 3 memory locations for other cogs to access and send to the dacs.
  • I readily achieve 2M baud speeds in Tachyon and your application seems to be half-duplex mainly so that is even easier. The PASM for such a driver is only a few lines long. I have also used single-mode fiber and run it with a 10Mbps stream encoded in 20Mbps to zero out any DC components. 
  • Sounds Great Peter, is there any cold you can share?Greg
  • AribaAriba Posts: 2,690
    Here is the Link to Beau's thread:
    Andy
  • yes been here but no code..or I don't know what I am doing..
  • MJBMJB Posts: 1,235
    Sounds Great Peter, is there any cold you can share?Greg

    Hi Greg
    Peters TACHYON 2.4 code shows this
    sysfreq        = 80_000_000
    baud        = 230400            ' <-- user change - tested from 300 baud to 3M baud

    so taking for example the standard EXPLORER image he has on his DropBox
    (see his signature  and debugger)
    and changing BAUDRATE
    to what you need should be all what is required.

    then the command

    2000000 CONBAUD

    at the commandline and then a reboot should be all you need
    to then try it via FTDI USB-serial adapter. (aka PropStick)

  • MJBMJB Posts: 1,235

    Sounds Great Peter, is there any cold you can share?Greg

    Hi Greg
    Peters TACHYON 2.4 code shows this
    sysfreq        = 80_000_000
    baud        = 230400            ' <-- user change - tested from 300 baud to 3M baud

    so taking for example the standard EXPLORER image he has on his DropBox
    (see his signature  and debugger)
    and changing BAUDRATE
    to what you need should be all what is required.

    then the command

    2000000 CONBAUD

    at the commandline and then a reboot should be all you need
    to then try it via FTDI USB-serial adapter. (aka PropStick)



    but --- thus is not SPIN it is FORTH !!!
    but you might like it ;-)
  • I guess I am spoiled, but the ideal I have to learn forth to finally get a high speed prop to prop interface seems excessive, (although it is in my bucket list someday)  I also looked at the dropbox but unfortunately it is just the binary code.  I was hoping that maybe I could use whatever asm files to roll it again in using a spin header.. no such luck.
    hmm...
  • Peter JakackiPeter Jakacki Posts: 10,193
    edited 2015-07-16 22:27
    Pressed for time but the "4th" link in my  sig points to the all the files and folders, you will find the kernel files in the root directory.
  • Anyway, I saw some discussions on this topic mainly some work by Bueu that looked good.  However I was hoping to find some actual code to use.  For doing this.  Any thoughts where?
    I think this is the file you're looking for.  It has an MIT license so should be no problem using it.

    Sandy
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2015-07-17 03:08
    Full Duplex Serial may be too slow, but the code may be a useful comparison to Beau's.

    Try looking at the FullDuplexSerial.spin object in OBEX for code.  (Search "Full Duplex Spin")

    While it is a Spin object, it really has PASM providing the serial speed.  It is a bit difficult to remain in your comfort zone of programing entirely in Spin.


    And if that doesn't help you, you can always contact Beau directly.  That was suggested above.

  • Thanks all, I got carried away with a 2 year old grandson.. You given me some good stuff here thank you.  I will dig through this code and ideas and see what works.. Thanks again.Greg
Sign In or Register to comment.