Hi Rick and other interested parties, I don't want to be seen to be raining on your parade, .... but has anyone thought to look at the sensor science behind this project yet? Back in the mid '70s I fleshed out the design for an ultrasonic anemometer based upon an orthogonal array of 40KHz transducers. As I recall it, the speed of sound is a function of air temperature and moisture content. If you ignore these, as it appears is your intent from your pin assignments below, you are likely to reap the consequential accuracy and stability limits. Perhaps "y'all" need to decide what your project objectives are in terms of performance and then look at what units, baud rates etc can be applied. Ross "Often the realist" McKenzie Melbourne Australia *********** At 01:19 PM 11/11/97 -0800, you wrote: >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.... | >+--------------------------------+------------------------------+ >