<< BACK | NEXT >>

Bus Monitor v2 (rev B)

[30th September 2015]

For me next effort at a bus monitor I took a different approach. I decided to  skip having a display on the monitor board and pipe the output to  a PC via serial (RS232C/TIA 232).

I also decided to try my hand at not only designing the circuit, but also the PCB itself using EagleCAD.


The circuit consists of two 8 pin headers (which make up the 16 bit address bus input), an 8 pin header (the 8 bit data bus input), 7 pin header (individual signal inputs) and finally a 1 pin header (clock output).

The three 8 pin headers and also the 7 pin header (signals) all go to 74AC245 buffer ICs (one per eight bits so four in total). These act to:

1) Decrease the load on the PCB being monitored
2) IsolatePCB being monitored from the microcontroller on the monitor board when needed

The internal facing pins of the '245 buffers all connecto to the same bus which lead to an ATmega 328P-PU microcontroller (port C:0-5 and port D:2-3), with the buffer /enable pins connected to the microcontroller on port B:0-1 & port D:6-7. The '245 buffer direction pins are held permanently high as they only ever allow data travel in one direction.
The object of doing this is that it allows the ATmega to enable one buffer at a time, sample the data coming through then disable that buffer and it only uses 8 pins for the data and 4 for the control signals for a total on 12 pins, but is able to sample 23 bits, 8 at a time (the last one sampling 7 bits).

Control-wise, the ATmega  has a three pin header for basic RS232C communication with a PC with an old fashion DB9 (or 25) serial port or by using a USB to serial port adapter cable.  It only utilises the data-transmit, data-receive and ground lines and uses a MAX232 to convert digital logic levels to and from RS232 logic levels.  Also, a 6 pin ISP header is provided for programming the ATmega on the onitor PCB without removing it (port B:3-5 port C:6).

The only output to the PCB being onitored is a clock pin which is controlled by the ATmega. This is done by ports B:1, D:6-7. Three pins are required as ATmega actually interfaces with D-type flipflop so that a more robust and reliable square wave can be output. 

We have a push button which is connected directly to the ATmega on port B:0. This is used for generating manual clock pulses and also on initialisation to lower the RS232C speed to 9600 baud.

Finally, power is supplied by an LM7805 5v regulator IC (it says L7805CV on the circuit/PCB but this is only because I used that symbol for the foot print) which can take between 7 and 20v DC via 2 pins (+V and ground).

BusMonitor V2 circuit diagram
(click image to enlarge)


PCB Layout

This is the first time I've layed out a PCB. Can you tell? It consists of a 2 layer board 100mm long by 80mm wide made of RF4. The top layer "empty" (non-trace) areas are filled with "pours" of copper and act as a pseudo ground plane and also to balance the PCB to prevent distortion during manufacturing.

Most traces are 0.012 inches/0.3048mm wide with power traces being wider (0.024 inches/0.6096mm). As I have no previous experience at designing a PCB these widths are a best guess.

With regards the routing I've ended up using the autorouter. To my eye it looks like a bit of a mess, but I'm having a real issue routing all the buses and also the power rails on top. I've made a few changes. Still looks a mess though.

BusMonitor version 0 using L.E.D.s BusMonitor V2 PCB layout (alternate)
(click an image to enlarge)



i've written the firmware in Atmeal Studio 6.

The final PCB both unpopulated and then populated:

 BusMonitor V2 PCB layout (normal) BusMonitor V2 PCB populated top side BusMonitor V2 PCB populated top side
(click an image to enlarge)



<< BACK | NEXT >>

Site Map | CSS Hover Menus by Css3Menu.com