Shop OBEX P1 Docs P2 Docs Learn Events
Agreement on I/O configuration — Parallax Forums

Agreement on I/O configuration

QuattroRS4QuattroRS4 Posts: 916
edited 2008-03-28 06:23 in Propeller 1
Folks,
······ With numerous third party options available and many more in development it would be nice to see
a structure in place whereby 'modules' from one persons offering can be used with various other peoples iterations. If a connection type and I/O configuration can be agreed - I believe it would be of great benefit
for all .... I suppose this refers to module based offerings rather than 'complete' development systems - I know
that Coley and Baggers have tried to maintain as much compatibility between their Hybrid and the Hydra as possible - which is commendable ..

Example for module based offerings
e.g. 10pin·IDC header with VDD,VSS on header pins 1 & 2 and sequential I/O pins·on 3-10 of header .. i.e blocks of 8 I/O's - I was just looking at Ron's PropBus again and quite like the way he divides the I/O's via IDC headers.

Perhaps that way leaves it open for us to concentrate on new modules without having to have·1 specific
propboard ..If a configuration is agreed then we may see more and more useful modules.. Just my musings ..

....·your thoughts ??

Regards,
·········· John Twomey

▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
'Necessity is the mother of invention'

Post Edited (QuattroRS4) : 3/24/2008 12:36:35 PM GMT

Comments

  • StefanL38StefanL38 Posts: 2,292
    edited 2008-03-24 13:33
    Hello,

    i think this is a good choice

    if somebody wants to do something more special he could use a 10wire-cable or an IDC-conector and on the second end
    SUB-divide the IO-Lines to his needs

    regards

    Stefan
  • QuattroRS4QuattroRS4 Posts: 916
    edited 2008-03-24 19:32
    Stefan,
    Yeah - thats the general idea . ..

    Regards,
    John

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    'Necessity is the mother of invention'
  • James LongJames Long Posts: 1,181
    edited 2008-03-24 19:38
    QuattroRS4 said...
    Stefan,
    Yeah - thats the general idea . ..

    Regards,
    John

    Hmmm.....that is a great idea John, then there would be less redundant systems to be created.

    James L

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    James L

    Partner/Designer
    Lil Brother LLC (SMT Assembly Services)
  • parts-man73parts-man73 Posts: 830
    edited 2008-03-24 20:07
    QuattroRS4 said...
    Coley and Baggers have tried to maintain as much compatibility between their Hybrid and the Hydra as possible

    I have had several requests to add a Hydra type expansion slot to SpinStudio, but I have been hesitant to provide one, as this is Andre's design and I didn't want to copy it without permission.


    And as far as a standard connector, the SpinStudio connectors each contain 8 IO lines, VDD and VSS, but also 5V and lines for I2C. Since it uses a 20 pin connector, there's room for expansion.
    The protocards that I sell have access to those I2c lines, made it really simple to make a plug in real time clock. And simple it's permanently soldered with a back up battery, It keeps time even when it's not plugged in.
    Having access to 5 volts is handy as well.


    I guess my point is, if a connection type is to be adopted as a standard. It would be a good idea to have all the connections that might be needed, as well as some empty spots for future expansion. That way you can have a connector that can grow and evolve (think forward to Prop2)

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Brian

    uController.com - home of SpinStudio - the modular Development system for the Propeller

    PropNIC - Add ethernet ability to your Propeller! PropJoy - Plug in a joystick and play some games!

    SD card Adapter - mass storage for the masses Audio/Video adapter add composite video and sound to your Proto Board
  • parts-man73parts-man73 Posts: 830
    edited 2008-03-24 20:24
    Stefan said...
    f somebody wants to do something more special he could use a 10wire-cable or an IDC-conector and on the second end
    SUB-divide the IO-Lines to his needs

    I have experimented with ribbon cables with 20 pin IDC connectors on SpinStudio to use as and "extension cable" so I could mount modules remotely. I couldn't find any male IDC connectors, so I had to mount male sockets on the module instead of the usual female socket. But an IDC socket on one end, and bare wires at the other end of the ribbon cable would work as well.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Brian

    uController.com - home of SpinStudio - the modular Development system for the Propeller

    PropNIC - Add ethernet ability to your Propeller! PropJoy - Plug in a joystick and play some games!

    SD card Adapter - mass storage for the masses Audio/Video adapter add composite video and sound to your Proto Board
  • QuattroRS4QuattroRS4 Posts: 916
    edited 2008-03-25 12:05
    Brian,
    It would be great if there was a 'standard' configuration ... I was hoping that this thread would spark an action to achieve just that . There are some great offerings out there (including yours) ... Once somebody has the heart of their project in place - the Main Prop board - it would be great if they could mix and match modules easily to achieve the desired config.

    Perhaps then greater emphasis would be placed on code and future modules rather than a 'from ground up' approach.

    Regards,
    John Twomey

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    'Necessity is the mother of invention'

    Those who can, do.Those who can’t, teach.

    Post Edited (QuattroRS4) : 2/21/2009 6:07:01 PM GMT
  • hippyhippy Posts: 1,981
    edited 2008-03-25 15:13
    It would be nice to see a 'standard' configurations or some reference designs. Perhaps someone could take it on themselves to document their design(s) on the Wiki, create defacto standards ....

    propeller.wikispaces.com

    My personal preference would be 20-way IDC, with 0V, D0-D7, 3V3 on the 'front row' so that can also be easily used with 10x1 SIL connectors. P28-P31 to all connectors is useful, as is having 5V, the other 5 could be 'user defined'.
  • QuattroRS4QuattroRS4 Posts: 916
    edited 2008-03-25 15:24
    Hippy,
    Sounds good .. Perhaps if we get a few more suggestions and hopefully agreement on the proposed configuration .. we can pen a document outlining 'preferred practice' .it is my opinion that by having a standard will lead to more inventive code and a greater proliferation of modules .. or allowing for products that exist already - at least define a standard arrangement for I2C and SPI based modules - agree on a connection type and pinout configuration...

    Rgds,
    John Twomey

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    'Necessity is the mother of invention'
  • hippyhippy Posts: 1,981
    edited 2008-03-25 15:40
    I have to admit that for most of my prototyping I build up processor, I/O and interface modules on strip-board / vero-board with 0.2" screw-terminals. That allows fairly quick connection using just wire and isn't tied down to any particular 'I/O bus' configuration, modules can be used with a variety of different processors. They are consequently also easy to interface to bread-board.
  • Oldbitcollector (Jeff)Oldbitcollector (Jeff) Posts: 8,091
    edited 2008-03-25 16:02
    While we are at it, can we come to some standard on I/O configuration for what are becoming standard devices?

    VGA
    TV
    Keyboard/Mouse
    SD
    Game Control
    Etc

    OBC

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

    Getting started with the Protoboard? - Propeller Cookbook 1.4
    Updates to the Cookbook are now posted to: Propeller.warrantyvoid.us
    Got an SD card? - PropDOS
    A Living Propeller FAQ - The Propeller Wiki
    (Got the Knowledge? Got a Moment? Add something today!)

  • hippyhippy Posts: 1,981
    edited 2008-03-25 16:15
    @ OBC : Probably, if we define a 'standard development platform'. Unfortunately there are so many different platforms out there already which conflict. A 'standard development platform' also doesn't always fit with end-user application design, but that issue could be discounted.

    There already seems to be some standards emerging, mainly based on the configuration of the Parallax DemoBoard ...

    SD on P0-P3
    TV on P12-P15
    VGA on P16-P23
    Mouse on P24-P25
    Keyboard on P26-P27

    Although the Hydra is entirely different except for VGA.

    I'm currently re-wiring all my ProtoBoards ( VGA not needed ) as follows -

    Application specific on P0-P15
    USB+ on P16
    USB- on P17
    Serial Tx on P18
    Serial Rx on P19
    TV on P20-P22
    USB Enable / Mono Audio on P23
    Mouse on P24-P25
    Keyboard on P26-P27

    Post Edited (hippy) : 3/25/2008 4:38:24 PM GMT
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2008-03-25 19:13
    There is one "standard" already in existence: the Parallax daughterboards. Although these were originally designed for the MoBoStamp-pe, the DB-Expander adapts them to a form factor that's compatible with several of the available Propeller boards.

    Briefly, the daughterboard format provides eight signal lines, plus Vdd, Vss, +5V, and (optionally) Vin. For the Propeller, the specified signal lines are A0 .. A7 (or A8 .. A15), mapped to pins A .. H on the DB-Expander.

    The physical format for the daughterboards is implicit in this drawing. The Propeller motherboard (MoBoProp) will have the same form factor when it becomes available. (Geez, I've got a lot of projects stacked up!) On this board, A0, A1, A8, and A9 will have analog input capabilities, for compatibility with the MoBoStamp-pe. So any daughterboard that has analog outputs should use these pin pairs.

    There are some additional design rules that need to be followed:

    1. Keep vertical clearances for parts mounted on the bottom of the board to an absolute minimum. SMD parts are okay, for example, but vertical headers that hang down are not.

    2. For boards with components that can't work with both 3.3V and 5V and that have to operate with the MoBoStamp-pe, in addition to the Propeller, do not use Vdd. Use the 5V line instead and regulate down as necessary. Boards designed to work only with the Propeller or whose parts are multi-voltage-capable can use Vdd.

    3. For boards whose logic does not use Vdd (as in #2) and which must interoperate with the MoBoStamp-pe, level shifting circuitry may be required on the signal lines.

    4. Assume that pins A4 .. A7 (A12 .. A15) are pulled up to Vdd via 4.7K resistors (as they are on the DB-Expander and will be on the MoBoProp).

    There's also a prototyping daughterboard available which, when combined with the DB-Expander, provides handy proto capabilities for existing Propeller systems.

    Obviously, eight signal lines may be inadequate for some apps, and the 1.35" square daughterboard size could be a bit cramped. But for those apps that do fit, leveraging an existing design can be a Good Thing.

    -Phil

    Post Edited (Phil Pilgrim (PhiPi)) : 3/25/2008 7:20:18 PM GMT
  • StefanL38StefanL38 Posts: 2,292
    edited 2008-03-25 19:49
    Hello,

    i have some more ideas:

    for a prototyping board universal use would be good.
    How about using the IOs like hippy mentioned and add the possability to switch to a general-purpose IDC-connector by jumpers or micro-dip-switches?

    another idea: make it modular

    one propeller-baseboard with the minimum required:
    crystal, EEPROM, RS232, LED indicating supplyvoltage ready

    A small board similar to the propstick

    a DIP-connector or an 40 pin IDC to some kind of a "backbone"

    Then it would be possible to create some backbones

    one with
    SD on P0-P3
    TV on P12-P15
    VGA on P16-P23
    Mouse on P24-P25
    Keyboard on P26-P27

    one with super general IO four 8-PIN IDC

    one with ?


    another complete different idea:

    the reason for an IO-agreement is that you can compile a SPIN-file load to the eeprom and everything should run

    how about a system of constants for the different devices

    if the IO-Numbers doesn't fit just change ONE basenumber of the starting IO-PIN and the others will follow because the other numbers are kind of VGA-basepin + 1, VGA-basepin+2 etc. ?

    this could be a compromise between changing IO-numbers and keeping it as flexible as possible ?

    best regards

    Stefan
  • hippyhippy Posts: 1,981
    edited 2008-03-25 23:27
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2008-03-26 02:49
    Thanks, Hippy; nice job on the Wiki! I've edited the daughterboard pinout slightly to conform with the Propeller pins and added the DB-Expander pinout as well.

    -Phil
  • hippyhippy Posts: 1,981
    edited 2008-03-26 04:18
    Thanks Phil. I knew you'd have a better understanding of that than I do smile.gif
  • parts-man73parts-man73 Posts: 830
    edited 2008-03-26 04:27
    Ditto - Thank you Hippy! I also added some designations to the SpinStudio connector indicating the I2c lines.

    And now that I think about it, I might mention that D4 and D5 don't exist in Socket D, but are accessible as those I2c lines on all 4 sockets. (did that make sense?)

    It may be to late to adopt a standard, as everyone seems to have come up with their own connector. I don't think that I would change my pinout, as it would inconvenience customers that have previously purchased SpinStudios, as their old Mainboards would not support next gen modules.


    Perhaps a small adapter could be made to interchange modules between systems though??

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Brian

    uController.com - home of SpinStudio - the modular Development system for the Propeller

    PropNIC - Add ethernet ability to your Propeller! PropJoy - Plug in a joystick and play some games!

    SD card Adapter - mass storage for the masses Audio/Video adapter add composite video and sound to your Proto Board
  • stevenmess2004stevenmess2004 Posts: 1,102
    edited 2008-03-26 06:04
    Maybe we need three standards. One for the 10 pin IDE connector as used by propbus, one for the 20 pin IDE connector as used by spinstudio and one for the expansion slot as used by the hydra and hybrid. It should be fairly easy to make an adaptor for the 20 pin IDE to hydra card as I think that they have all the same signals.

    Just my 2 cents (but we don't have 2 cents anymore in Australia so I should make that 5 cents smile.gif )
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2008-03-26 06:25
    There's really no one or three or five "standards" that need to be "agreed" upon. I'm sure the list will grow, rather than shrink, as even more busses emerge with different purposes and advantages. And it's really great having the Wiki as a central reference point for all of them. The market will sort it all out, eventually, despite our best efforts to shepherd the process. Meanwhile, there'll be plenty of opportunity for adapters!

    -Phil
  • QuattroRS4QuattroRS4 Posts: 916
    edited 2008-03-26 12:34
    Nice one Hippy .. if a defacto 'standard' is not a possibility well then a central reference .. good stuff !

    Rgds,
    John Twomey

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    'Necessity is the mother of invention'
  • hippyhippy Posts: 1,981
    edited 2008-03-26 13:33
    I expect everyone will be reluctant to change, but it might be possible it happens. At least knowing what there is may guide people to adopting something already used rather than simply going their own way ( although that will still happen ).

    @ Phil : I hadn't realised the MoBoStamp/MoBoProp IDC was 2mm pitch; that might be an obstacle to its adoption by others, especially hobbyists who may find it hard to source such connectors and cables themselves.

    As well as adapters ( there is a MoBoStamp breadboard adapter ) it is possible that anyone designing a development board in the future fits more than one style of bus adapter. I must say that I do like the idea of a 40-way as per the Hybrid which can get all I/O etc off the board on a single cable ( not sure how a true one-to-one with long cable affects the crystal and I2C lines etc ). Most people have access to 40-way IDE cables and sockets or molex headers. Providing that could be the lowest common denominator.
  • HarleyHarley Posts: 997
    edited 2008-03-26 16:38
    I doubt it wise to connect the X0 and X1 pins (crystal) to that 40-way header. Too much capacitance; the crystal should always be quite close to the using pins.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Harley Shanko
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2008-03-26 17:14
    Hippy,

    The 2mm connector was chosen for compactness, so that the daughterboards could be kept small without the "tail wagging the dog". While it's true that such connectors are — by themselves — incompatible with breadboard spacings and are less popular among hobbyists than the 0.1" variety, the ready availability from Parallax of the DB-Expander 0.1" SIP adapter, along with the Daughterboard Extension Cable, effectively moots the connector issue for most applications. Obviously, where size is not a factor or where a given function is too complex to fit the diminutive daughterboard format, some of the other bus/connector systems might well be more appropriate. I think they all have valid roles to play, though, and the Wiki makes it easy for a potential user to pick the one most suitable for his/her application.

    If you think it appropriate, it might be instructive to add, under each bus section, a list of the functions already available for that particular system, with links to their product pages where available. To relieve you of the burden, this might best be undertaken by the developers and/or champions of each particular system.

    -Phil
  • Fred HawkinsFred Hawkins Posts: 997
    edited 2008-03-28 01:47
    Standard objects should not assume that they know where the io pins are. Instead a standard object should expect to be told where they are when they are started.

    Complying examples: Keyboard.spin, TV_terminal.spin
  • Timothy D. SwieterTimothy D. Swieter Posts: 1,613
    edited 2008-03-28 05:18
    I agree with Fred, objects should be told where the pins are in order to operate. There may be a few extreme cases when the object has the pins embedded.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Timothy D. Swieter

    www.brilldea.com·- check out the uOLED-IOC, an I/O expansion for the uOLED-96-PROP
    www.tdswieter.com
    One little spark of imagination is all it takes for an idea to explode
  • hippyhippy Posts: 1,981
    edited 2008-03-28 06:23
    I think the suggestion was more for Top-Level objects where the pins are defined before being passed down, to keep edits there to a minimum.

    I personally think the PropTool should have some means to override whatever _CLKMODE and _XINFREQ is specified in source with whatever the user has pre-defined and there's no reason that couldn't extend to other named constants ( eg "TV_PIN" etc ).

    Most home users have one hardware platform or multiple hardware platforms configured the same so it would be useful tehre. If people have multiple platforms then turn the override off and edit manually.

    The most useful thing I see is that people using peculiar settings ( ie, that 7.3728MHz crystal ) can develop with those settings but still have written code for the defacto 5MHz, so everyone doesn't have to keep checking they changed it before release etc.
Sign In or Register to comment.