Fellow PIC-Listers, Based on the feedback I have received, it seems that a design like the following would make the most sense: Break the SSU into two functional units -- the ranging unit and the communications unit. Each would be based around a 16F84-10 PIC microcontroller. A single 10 MHz oscillator chip will be used to drive both PICs. Descriptions of each unit are as follows: Ranging unit: ============= 10 MHz means a .4nS cycle time. Using a prescaler value of 250 on Timer0 gives us a .1mS Timer0 interrupt period to use to keep track of our time-of-flight count. Pin assignment will be as follows for this module: Port A ------ 0 - Sonar Ping Out <-- Drives the out transducer at 40KHz through buffers. 1 - Data Valid Out <-- Raised by PIC when data out is valid. Lowered when new ranging in progress. 2 - Sonar Ping In <-- Flag raised by analog ckt. when echo detected. 3 - Range Mode In <-- High = continuous, low = one-shot 4 - Range Trigger <-- Brought high momentarily to trigger one-shot ranging. Port B ------ 0-7 - 8-bit Data Out Communications Unit: ==================== Pin assignment will be as follows for this module: Port A ------ 0 - Serial Data Out <-- Serial Data Out to the world. 1 - Range Mode Out <-- Tells the Ranging Unit (RU) what mode to use. 2 - Range Trigger Out <-- Triggers the RU when in one-shot mode. 3 - Data Valid In <-- Input from RU signals that data is valid. 4 - Serial Data In <-- Serial Data In from world. Using RA4 allows us to use TMR0 rollover to detect start bit. Port B ------ 0-7 - 8-bit Data In Overview of Design: =================== Having the Communications Unit (CU) and the Ranging Unit (RU) live on separate 16F84-10 chips gives us three big advantages: 1) We are free to use TMR0 for both serial communications timing and for time-of-flight timing. 2) Different communication algorithms and protocols can be tried by simply substituting CU chips. 3) Different range scaling factors or methods can be accomodated by simply substituting RU chips. Additionally, as this is to be a collaborative effort, this allows different people to work on different pieces of the puzzle without worrying that their efforts will overlap or conflict. Does anyone want to volunteer some programming expertise and development time? Anyone? Anyone? - Rick "Bueller?" Dickinson +--------------------------------+------------------------------+ | Rick "The Notes Guy" Dickinson | Views expressed by the author| | Lotus Notes & Domino Solutions | are not necessarily those of | | (818)563-1061 rtd@notesguy.com | Enterprise ArchiTechs. They | | http://www.eArchiTechs.com | might not even be mine.... | +--------------------------------+------------------------------+