Shop OBEX P1 Docs P2 Docs Learn Events
Fast Inter-Propeller Communication Object — Parallax Forums

Fast Inter-Propeller Communication Object

Bobb FwedBobb Fwed Posts: 1,119
edited 2010-05-19 13:16 in Propeller 1
I just released a new object on the Obex: "Fast Inter-Propeller Communication". It (as the name very creatively suggests) allows fast communication between two propellers.

I just tested it at 100MHz and got a throughput of 1.37MB/s (including all overhead). Also tested at 80MHz producing 1.10MB/s. It has been tested with over a meter of wiring between two Propellers, but i can't see why it wouldn't work with much longer wires.

Please let me know of any problems you have with the object.

Download here: obex.parallax.com/objects/546/

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
April, 2008: when I discovered the answers to all my micro-computational-botherations!

Some of my objects:
MCP3X0X ADC Driver - Programmable Schmitt inputs, frequency reading, and more!
Simple Propeller-based Database - Making life easier and more readable for all your EEPROM storage needs.
String Manipulation Library - Don't allow strings to be the bane of the Propeller, bend them to your will!

Post Edited (Bobb Fwed) : 11/24/2009 10:36:29 PM GMT

Comments

  • Cluso99Cluso99 Posts: 18,069
    edited 2009-11-24 22:38
    Nice work Bob. Just what we need smile.gif

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Links to other interesting threads:

    · Home of the MultiBladeProps: TriBlade,·RamBlade,·SixBlade, website
    · Single Board Computer:·3 Propeller ICs·and a·TriBladeProp board (ZiCog Z80 Emulator)
    · Prop Tools under Development or Completed (Index)
    · Emulators: CPUs Z80 etc; Micros Altair etc;· Terminals·VT100 etc; (Index) ZiCog (Z80) , MoCog (6809)
    · Search the Propeller forums·(uses advanced Google search)
    My cruising website is: ·www.bluemagic.biz·· MultiBladeProp is: www.bluemagic.biz/cluso.htm
  • Oldbitcollector (Jeff)Oldbitcollector (Jeff) Posts: 8,091
    edited 2009-11-24 22:42
    Very nice!

    You might catch a little resistance to your object name. I renamed my terminal from Propcomm to Coggyterm because
    of someone who has a book in the works which uses the same name. YMMV. [noparse]:)[/noparse]

    OBC

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    New to the Propeller?

    Visit the: The Propeller Pages @ Warranty Void.
  • RossHRossH Posts: 5,519
    edited 2009-11-24 23:00
    @Bob,

    Good stuff - I'll have to have a look at it for use in Catalina. I'm thinking of sending my current serial comms implementation to the ITU - it will be called "V.SLOW"

    Ross.

    P.S. How 'bout calling yours "Fly By Wire"?

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Catalina - a FREE C compiler for the Propeller - see Catalina
  • Bobb FwedBobb Fwed Posts: 1,119
    edited 2009-11-24 23:09
    I am open to new names. I will dwell on it some, and if anyone has suggestions of new (less copyrighted names), please post here.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    April, 2008: when I discovered the answers to all my micro-computational-botherations!

    Some of my objects:
    MCP3X0X ADC Driver - Programmable Schmitt inputs, frequency reading, and more!
    Simple Propeller-based Database - Making life easier and more readable for all your EEPROM storage needs.
    String Manipulation Library - Don't allow strings to be the bane of the Propeller, bend them to your will!
    Fast Inter-Propeller Comm - Fast communication between two propellers (1.37MB/s @100MHz)!
  • MacTuxLinMacTuxLin Posts: 821
    edited 2010-05-17 12:08
    Hi,

    May I know if you use the same crystal for both Props? (XO of Prop1 to XI of Prop2)?
  • Bobb FwedBobb Fwed Posts: 1,119
    edited 2010-05-17 16:08
    Are you asking if you can do that, or if I did do that in the testing of this object?
    The answer to the first is: I don't know, maybe someone else on the forum knows.
    The second is: no. I used a few different setups for testing. I used one propeller (cog-to-cog communication -- like what is in the demo file), I also used two props on two different crystals (same frequency), and one prop driving the other prop (IO to XI) at the same frequency.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    April, 2008: when I discovered the answers to all my micro-computational-botherations!

    Some of my objects:
    MCP3X0X ADC Driver - Programmable Schmitt inputs, frequency reading, and more!
    Simple Propeller-based Database - Making life easier and more readable for all your EEPROM storage needs.
    String Manipulation Library - Don't allow strings to be the bane of the Propeller, bend them to your will!
    Fast Inter-Propeller Comm - Fast communication between two propellers (1.37MB/s @100MHz)!
  • MacTuxLinMacTuxLin Posts: 821
    edited 2010-05-17 16:43
    @Bobb,

    Sorry for my unclear question. Thank you, yes, you've both answered my question in #1 & the question I was planning to ask . I'll be testing it on my 2 ProtoBoards tomorrow.
  • MacTuxLinMacTuxLin Posts: 821
    edited 2010-05-18 14:20
    @Bobb or Anyone,

    OK, I must have done something silly (or didn't do something I should have). confused.gif I have both Prop1 & Prop2 same configuration (Prop1 is a Protoboard & Prop2 is breadboard). However, I have a consistent 512 "Warnings" & 1 "Buffer Good".

    Prop1:
    TX = 08

    Prop2:
    RX = 12

    I'm using PST on Prop2. Do I need to perform some form of hand-shaking between the 2 Props? Thanks in advance.
    1680 x 1050 - 253K
  • MacTuxLinMacTuxLin Posts: 821
    edited 2010-05-18 16:26
    OK, think I didn't get any Good Buffers as it just prints that after finishing the repeat looping on the buffer size which explains my 512 wrong & 1 good. I'll check my wiring & put checkpoints to see what went wrong.
  • Bobb FwedBobb Fwed Posts: 1,119
    edited 2010-05-18 16:50
    Just for kicks, try sending some actual data. It is possible that the random outputs are getting out of sync if the two propellers are started at different times. I recall having issues with that sometimes. It is supposed to sync up because of the ACK, but it doesn't if the RX propeller doesn't receive the whole first buffer sent from the TX prop.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    April, 2008: when I discovered the answers to all my micro-computational-botherations!

    Some of my objects:
    MCP3X0X ADC Driver - Programmable Schmitt inputs, frequency reading, and more!
    Simple Propeller-based Database - Making life easier and more readable for all your EEPROM storage needs.
    String Manipulation Library - Don't allow strings to be the bane of the Propeller, bend them to your will!
    Fast Inter-Propeller Comm - Fast communication between two propellers (1.37MB/s @100MHz)!

    Post Edited (Bobb Fwed) : 5/18/2010 5:02:45 PM GMT
  • MacTuxLinMacTuxLin Posts: 821
    edited 2010-05-18 20:04
    Thanks. I'll put some data & see what got transmitted & debug from there.
  • MacTuxLinMacTuxLin Posts: 821
    edited 2010-05-19 13:16
    Realized my protoboard was faulty due to solder & de-solder too many times. Got that out of the way but still could not get the right data into the listening prop. I'll really appreciate if you could point me which area to focus on. My test setup as:

    Prop1 (tx) the transmitter (ignore the receiving for now)
    Prop2 (rx) the receiver & monitoring the result from PST.

    Instead of ?seed value, I use incremental hex value for transmitting data. The Prop2 hex variable (runningnum) increments smoothly but the hex variable transmitted from Prop1 jumps from incrementing hex to a signed long incrementing hex then jumps back again confused.gif . I've checked the wiring & I think this time this is not the problem. I then listens to the increments at Prop1 & it increments smoothly. I'm attaching the code which I modified a little & added the starting long of $555_555, which was sent from Prop1 to Prop2 correctly. I'm still analyzing this but if you spot any silly mistake I've made, please let me know. If I should be testing something else, please advice me as well. Thanks a lot!
Sign In or Register to comment.