Assembling the Handy Board, Part 4

Peripheral Selector, Digital Input, and Motor Output Circuitry

This is the fourth step in the Handy Board assembly. In this sequence, the chip used to control peripheral input and output, the digital input circuitry, and the motor output circuitry is installed.

For this assembly sequence, collect the following parts:


Peripheral Selector

U6, the 74HC138, is used to create a memory-mapped addressing for up to four input latches and four output latches. One of each of these is implemented on the main Handy Board (i.e., the digital input circuit and motor output circuit); the remaining six addressing outputs of U6 are available via the Handy Board's expansion connector. U9, the 74HC04 hex inverter chip, is used as glue logic in this peripheral addressing circuit.

Assembly

Install DIP6, the 16--pin socket for U6. Align the notch in the socket with the notch in the printed component legend.

Install U6* (74HC138) in the socket, making sure to line up the notch on the chip and the notch on the socket/printed legend.

Install DIP4, the 14--pin socket for U9. Align the notch in the socket with the notch in the printed component legend.

Install U9* (74HC04) in the socket, making sure to line up the notch on the chip and the notch on the socket/printed legend.

Testing

The following test should be done with a logic probe. If one is not available, simply skip ahead.

Plug the LCD screen back into the board. Connect the Handy Board to the computer via the Interface/Charger board; run DL to load the Handy Board runtime file (pcode_hb.s19). Restart the Handy Board and verify the Interactive C boot beep and LCD screen message.

While the board is running, examine pin 9 of U6 (the 74HC138). This pin should be continuously pulsing, with a duty cycle indicating a predominantly high state and repetitive logic low pulses. Make sure the pulse memory feature of the logic probe is turned off.

Debugging

It is assumed that booting the Interactive C runtime file on the board is not a problem (otherwise back up to the step where this was supposed to be done).

Using the logic probe, examine the signals at pins 1, 2, 3, 4, 5, and 6 of U6. These should all be pulsing continuously. If any of these lines is not pulsing, check its solder connections and trace its continuity.

Turn board power off and check for short circuits between all combinations the same pins. There should be no shorts.


Digital Input Circuit

In this step, U5, the digital input latch, is installed, along with the header connectors for the digital inputs and the START pushbutton switch.

Assembly

Install DIP2, the 20--pin socket for U5. Align the notch in the socket with the notch in the printed component legend.

Install U5* (74HC244) in the socket, making sure to line up the notch on the chip and the notch on the socket/printed legend.

Install resistor packs RP1* (47K x 9, 10 pins) and RP2* (1K x 5, 6 pins). These are pullup resistors for the input latch to give a default value to the inputs when nothing else is plugged in. Make sure to get the pin 1 markings on the resistor packs lined up with the square pads.

Install SW2*, the START switch. The value of this switch is read through the digital input latch.

Get three strips of 9--long female header socket and install in the J2 position. If the female socket header is not precut to the correct length, the socket strip must be cut to size. See the Assembly Tips for instructions on how to do this.

Testing

Plug the LCD screen back into the board. From the computer, run DL to load pcode_hb.s19. Restart the board so that the ``Interactive C'' message is displayed on the LCD.

Boot the Interactive C application on the host computer. It should communicate with the Handy Board, download some library files, and display the ``C>'' prompt.

Now load the Handy Board testing file. Type at the IC prompt:

load hbtest.c
IC should display a message like the following:
Loading hbtest.c.
Initializing interrupts
Downloading 2517 bytes (addresses 8000-89D4): 2517 loaded
Globals initialized.
(The number of bytes downloaded will probably not match, allowing for updates to the hbtest.c file.)

If IC is unable to find the hbtest.c file, go back to the section on Configuring IC and make sure all Handy Board library files are on the host computer, and IC is correctly configured to point to them.

After hbtest.c is loaded into the Handy Board, type at the IC prompt:

testdigitals();
(This runs the function testdigitals(), which is defined in the hbtest.c file.)

Look at the Handy Board LCD screen. It should be displaying the message ``Press START ...''; it is waiting for you to press the START button. Do so, and the board should beep, and prompt you to press the STOP button. If this works, the digital input circuit is at least partly functional---the START button is scanned through the digital input circuit.

Press the STOP button (this is wired directly to a 6811 digital input), and the test program should display a screen like this:

Digital inputs:
000000000
This will be on the Handy Board LCD screen, not the IC console window. The display should be flashing gently, indicating that the Handy Board is repeatedly updating the screen.

Each of the 0's corresponds to a digital input. The left-most zero corresponds to the left-most digital input---the one labelled ``15'' on the printed Handy Board legend. The right-most zero corresponds to the digital input labelled ``7.''

To test the inputs, get a scrap piece of a component lead and bend it into the shape of a ``U.'' Insert the ends of the wire into a digital input column, connecting a pin of the uppermost header to the corresponding pin of the lowermost header. When the two header pins are shorted together, the LCD display should show the numeral ``1'' in the appropriate bit position.

With the scrap piece of wire, systematically test all nine digital inputs, verifying correct operation.

Debugging

For these debugging instructions, it is assumed that the hbtest.c file has been successfully loaded, and the testdigitals() function can be run from the IC command line.

There are at least two failure modes from this point:

We will begin with the partial failure case.

Partial Failure

Check that RP1 is installed in the correct orientation.

Determine which digital inputs are not working, and trace their wiring. For inputs stuck on zero, check for bad solder joints and damaged PC board traces. For inputs stuck on one, check for solder bridges and other shorts.

Refer to the Digital Input schematic; note that the three right-most inputs (labelled 7, 8, and 9) are wired directly to 6811 inputs and not through the 74HC244 input latch. Also note that the START and STOP buttons are wired to the two high bits of the latch.

Complete Failure

Check that U5, U6, and RP1are installed in the correct orientation. If U5 or U6 is getting hot, it is probably installed backward. Check that U5 and U6 have valid power and ground voltage levels.

While the testdigitals() is running, examine pin 1 and pin 19 of U5 (the 74HC244) with the logic probe. Both of these pins should be pulsing with a pattern of mostly logic high. If these pins are not flashing, check pin 7 of U6 (the 74HC138). If it is flashing, then the connection between these two chips is suspect. If pin 7 of U6 is not flashing, then the U6 circuit is faulty. Go back to the Peripheral Selector Testing.


Motor Output Circuit

The motor output circuit consists of a digital output latch (U8, a 74HC374), two high-current motor driver chips (U10 and U11, L293D's), and eight LEDs to indicate motor state.

Assembly

Install DIP1, the 20--pin socket for U8. Align the notch in the socket with the notch in the printed component legend.

Install U8* (74HC374) in the socket, making sure to line up the notch on the chip and the notch on the socket/printed legend.

Install DIP7 and DIP8, the 16--pin sockets for U10 and U11. Align the notches in the sockets with the notches in the printed component legends.

Install U10* and U11* (L293D) in their sockets, making sure to line up the notches on the chips and the notches on the sockets/printed legends.

Get a 12--long female header socket strip and install it in the J4 position. If the female socket header is not precut to the correct length, the socket strip must be cut to size. See the Assembly Tips for instructions on how to do this.

Install L1 (1 uH iron core inductor). Orientation is not important.

Install LED1R*, LED2R*, LED3R*, LED4R*, LED5G*, LED6G*, LED7G*, and LED8G*. Be sure to get the orientation correct; see the Assembly Tips for instructions.

Testing

Boot the Handy Board and Interactive C; load the hbtest.c file. Type ``testmotors();'' at the IC prompt.

The motor LEDs should begin flashing one at a time, beginning with Motor 0--green, Motor 0--red, Motor 1--green, etc. After Motor 4--red, the cycle should repeat with Motor 0--green.

Debugging

Check the orientations of U8, U10, and U11. If any of them is getting hot, it is probably installed backward.

With the logic probe, examine pin 1 of U8 (the 74HC374 output latch). It should be pulsing continuously. If not, trace the signal back to pin 9 of U6.

If you do not have a logic probe, turn the board power off and measure the resistance between pin 1 of U8 and pin 9 of U6. It should be zero ohms. If it is an open circuit (infinite resistance), check the two pins' solder joints and then look for a PC board defect in the trace connecting these two pins.

Verify motor supply voltage on pin 8 of U10 and U11. There should be about 9.6 volts at these pins.

With board power off, check continuity across component L1. It should read a resistance of near zero ohms (i.e., less than 10 ohms).


[prev] [next] [up]

Fred Martin / MIT Media Laboratory / fredm@media.mit.edu / Wed Oct 22 08:57:47 1997