6 - Firmware (continued)
Now that the led output was working well, I started working on the communication between the USB board and the ring driver boards. They are physically connected with an 8-channel ribbon cable that carries 5V and 3,3V power rails and I²C signals. Everytime the led values are changed with a command from the computer, the usb board should send a message to the appropriate ring driver. Everytime the user presses or turns an encoder, the ring driver board should send a message to the USB board so it can be passed on to the computer.
Other messages (clear the screen; shut down the power for stand-by, ...) are transmitted as well.
Because the communication to the computer is not working right now, I programmed a little animation that is calculated on the USB board and transmitted to the ring drivers to be displayed. Turning and pressing the encoder sends a message from the ring drivers to the usb board to manipulate the animation - thus the communication in both directions can be tested.
After some bug-fixing and testing it finally works (sounds easier than it was - AVR microcontrollers have a buggy I²C implementation). In the following video I give a quick overview over what has been reached so far and what remains to be done.
By the way: The cables that dangle loosely from the USB board are running to a logic analyser which is not visible on the video. This device helps me to track whats going on on the I²C bus that interconnects the microcontrollers on the different boards. Without the help of these measurements, It would be close to impossible to develop the I²C algorithms. In addition it helps to get an idea of the amout of traffic that's needed to run all 4 wheels.
The source code/software will be available for download when all the features are implemented.