Connect 4 - That's right...it has claws

Cornell Project | Expansion Board Interface | Command Encoding
Cornell Project | MIT Handler | EECS 270 Lab
Manufacturer's Spec | HITACHI Spec | Umich Helpful Hints
subglobal4 link | subglobal4 link | subglobal4 link | subglobal4 link | subglobal4 link | subglobal4 link | subglobal4 link
subglobal5 link | subglobal5 link | subglobal5 link | subglobal5 link | subglobal5 link | subglobal5 link | subglobal5 link
subglobal6 link | subglobal6 link | subglobal6 link | subglobal6 link | subglobal6 link | subglobal6 link | subglobal6 link
subglobal7 link | subglobal7 link | subglobal7 link | subglobal7 link | subglobal7 link | subglobal7 link | subglobal7 link
subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link

Two Player Interactive Connect 4 by Neil Zieses & Andrew Cramer

After being told not to use the output of combinational logic as an input to a clock, we did just that at one point. After putting a D-flip flop driven off the system clock between the logic and the clock, a few of our many glitches cleared up. Also, the hardware for the controllers was initially much, much more complex than it needed to be. After taking Professor Brehob's advice and redrawing what we now knew what we had to do with the hardware, we were able to create a new design that was greatly simplified and less prone to glitches. Using this method again, we were also able to make more dependable LCD interface hardware.

At the software end, we also had some difficulty. Many of these problems were due to the LCD screen. Since it refreshes very slowly as compared to how quickly the rest of our project runs, we had to decrease the sampling rate of our controllers and modify our use of the timers to produce acceptable results. In addition to this, we ran into problems trying to call a C function from interrupt code. Since C always assumes certain registers are volatile, it overwrites these registers at its own convenience. Since an interrupt can happen at any point in the code, these registers were not automatically saved by the caller as they would normally be. After saving all of the proper registers, however, this problem was rectified.

Contact Us | ©2006 Crames & Zieses Inc.