Any advice on multiple propellers
Chad George
Posts: 138
I'm considering using two propellers in a single design.
There are two main reasons:
1. I'm pretty sure I'm not going to have enough cogs and/or program space (there's a lot of peripherals)
2. I'm really short on pins and having to use alot of extra ICs to consolidate functionality (decoders, i2c I/O, mux's, etc)
I know there's been alot of discussion about general purpose parallel systems, but I'm looking for more specific advice on the best practices for a two propeller system.
Here's some questions I've been thinking about:
1. What is the best way to handle clocks?
- separate / isolated crystals
- 1 shared oscillator for both Props
- 1 crystal on one Prop with an I/O pin feeding the other prop's clock input
2. What is the best way to program and debug a two prop system with existing Tools?
- individual uarts on each prop (like FTDI's dual usb->serial, or 2 prop plugs)
- 1 uart shared between both props (some kind of switch to select 1 prop at a time)
- individual eeproms?
- 1 large (512K+) EEPROM connected to PropA, then emulate the EEPROM connection for PropB from the unused/upper portion of the EEPROM)
- one issue here is what happens when you have to debug both Props simultaneously...
3. What is the best way to communicate between the two Props (I know this is a loaded question)
- async serial
- sync serial
- is there a big advantage to having multiple "channels" of communication between the props or does this just complicate things more than its worth.
- parallel is probably not an option...I don't have enough pins.
- also how might the answer to question #1 play a factor here
Another design constraint I'm under is this circuit is going to be used for multiple projects. So one prop has to provide all the functionality for the basic/cheaper projects, then the second prop supports the extra peripherals for the more complex/expensive projects. There's almost certainly going to be a strong master/slave relationship between the two props if that makes any difference on people's insight on these topics.
There are two main reasons:
1. I'm pretty sure I'm not going to have enough cogs and/or program space (there's a lot of peripherals)
2. I'm really short on pins and having to use alot of extra ICs to consolidate functionality (decoders, i2c I/O, mux's, etc)
I know there's been alot of discussion about general purpose parallel systems, but I'm looking for more specific advice on the best practices for a two propeller system.
Here's some questions I've been thinking about:
1. What is the best way to handle clocks?
- separate / isolated crystals
- 1 shared oscillator for both Props
- 1 crystal on one Prop with an I/O pin feeding the other prop's clock input
2. What is the best way to program and debug a two prop system with existing Tools?
- individual uarts on each prop (like FTDI's dual usb->serial, or 2 prop plugs)
- 1 uart shared between both props (some kind of switch to select 1 prop at a time)
- individual eeproms?
- 1 large (512K+) EEPROM connected to PropA, then emulate the EEPROM connection for PropB from the unused/upper portion of the EEPROM)
- one issue here is what happens when you have to debug both Props simultaneously...
3. What is the best way to communicate between the two Props (I know this is a loaded question)
- async serial
- sync serial
- is there a big advantage to having multiple "channels" of communication between the props or does this just complicate things more than its worth.
- parallel is probably not an option...I don't have enough pins.
- also how might the answer to question #1 play a factor here
Another design constraint I'm under is this circuit is going to be used for multiple projects. So one prop has to provide all the functionality for the basic/cheaper projects, then the second prop supports the extra peripherals for the more complex/expensive projects. There's almost certainly going to be a strong master/slave relationship between the two props if that makes any difference on people's insight on these topics.
Comments
2) I'd use two PropPlug connectors and use one PropPlug at a time. First I'd debug one Prop, then the other. You could always use one PropPlug connector and jumpers. You could always have one Prop download to the 2nd connecting the 3 active leads on one Prop to 3 I/O pins on the 2nd Prop along with Chip's Prop-to-Prop downloader.
3) I'd stick with one async serial channel each way unless raw speed is vital. In that case, I'd use Beau's high speed SPI code. Multiple channels just complicates things unless there's a legitimate need for multiple simultaneous channels.
Just throwing in my 2¢ on this, as I have a two-Prop board mostly working. Because of number of I/Os required two Props had to be used. Here's my setup on your questions.
1. I'm using one 5 MHz crystal and in the 'master' Prop I'm using one counter to generate 5 MHz square wave. Downside, uses 1 pin on master. See AN1 for counter details.
2. Am using one 4 x 1 pin header for programming each prop; using PropPlug.
3. I'm using FullDuplexSerial to communicate between Props; only takes 2 pins each prop.
For debugging I also use TV_text to drive a monitor (a DVD player with video in jack; a Sony FX810, works great). Some variables from Prop#2 are returned to Prop#1 to aid in debugging. This helps a bit for the 'simultaneous' debugging situation. PASD for assembly code is used and ViewPort to view the I/Os in use.
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Harley Shanko
See my TriBladeProp schematic on the thread in my signature link. My first thoughts were to use 1 xtal oscillator common to my original 6 prop design. But my updated design (3 props) uses separate xtals at about 50c so·not worth the trouble - besides I can always generate the clock on an output pin and wire it to the xtal inputs of the others anyway, but I lose a pin for no reason.
I have 3 separate PropPlug input headers and an on-board PropPlug circuit with an output header (actually the same). I have links to put them together for communications between the props. This makes it easy to confirm all props are working individually, then link them later. While I have code working in each Prop (all 3), I have not yet fitted the EEPROMs.·There is very little difference in price for the·24C512 versus 24C256, but a 24C1024 is nearly double the 24C512. If you require one prop to load another, don't forget you will need to control the other prop's reset line.
I am going to use high speed serial comms between the 3 props on 2 wires.·One prop has links to swap the comms and the·on-board PropPlug (PC) between P30 & P31 and P26 & P27.
Hope this·helps you
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Links to other interesting threads:
· Home of the MultiBladeProps: TriBladeProp, SixBladeProp, website (Multiple propeller pcbs)
· Single Board Computer:·3 Propeller ICs·and a·TriBladeProp board (ZiCog Z80 Emulator)
· Prop Tools under Development or Completed (Index)
· Emulators: Micros eg Altair, and Terminals eg VT100 (Index)
· Search the Propeller forums (via Google)
My cruising website is: ·www.bluemagic.biz·· MultiBladeProp is: www.bluemagic.biz/cluso.htm
Has anybody had experience using an external oscillator to drive one or more Props (probably not much reason to use them with only one Prop).
What are the downsides or pitfalls to using one of these oscillators vs just a crystal (I'm guessing accuracy vs cost is one big reason).
I'm not planning on doing any video output, so the only thing I'm worried about timing wise is the async uart output (I like using Hanno's high speed serial stuff).
I seen a lot of talk previously about the "determinancy" (if thats a word) of the Propeller. I'm curious how practical it is to use this for synchronized serial between two props without having a serial clock signal (using the shared clock). Has anybody ever tried it? How well does it work?
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Need to make your prop design easier or secure? Get a PropMod has crystal, eeprom, and programing header in a 40 pin dip 0.7" pitch module with uSD reader, and RTC options.
There is thread discussing a high speed test done (by Chip or Beau??) transmitting and receiving between 2 props on 2 wires without xtal synchronisation at > 1Mbps (may have been >1MBps) using start+32bits+stop. The thread had a recent update (maybe listed in my TriBladeProp thread???).
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Links to other interesting threads:
· Home of the MultiBladeProps: TriBladeProp, SixBladeProp, website (Multiple propeller pcbs)
· Single Board Computer:·3 Propeller ICs·and a·TriBladeProp board (ZiCog Z80 Emulator)
· Prop Tools under Development or Completed (Index)
· Emulators: Micros eg Altair, and Terminals eg VT100 (Index)
· Search the Propeller forums (via Google)
My cruising website is: ·www.bluemagic.biz·· MultiBladeProp is: www.bluemagic.biz/cluso.htm
It was Beau. Here you go:
http://forums.parallax.com/showthread.php?p=691952
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Aka: CosmicBob