-
1Step 1
Probably the hardest part of the whole process is to install the SMD components. Be careful to get the orientation correct. For the next round, I should do a better job on the silkscreen, but the good news is that all of the transistors are oriented the same way. Check the board layout if you need to confirm. I used a film stencil and my toaster oven (with thermal controls) to do the reflow. All the SMD is on the back, so it's pretty easy. Even by hand, it shouldn't be terrible, just slower. The segments are installed on the front.
-
2Step 2
When complete mechanically, wire up the SPI and power to an AVR programmer. The Makefile and code is intended for use with avrdude and avr-gcc, but it should be easily adapted for other platforms if desired. I have the JTAG3ICE, but any programmer that can work in PDI/SPI mode should work. The first step is to reprogram the fuses to increase the internal clock speed. If you run:
make fuse
it will set the fuses appropriately. -
3Step 3
Finally, you should be able to run:
make install
and the code will be compiled and uploaded. -
4Step 4
Pull down a copy of my github repo. Unfortunately, you'll get all of the Bexkat CPU verilog as well, since this was originally a subproject. If that doesn't work for you, just grab the small set of files in firmware and put them into a directory.
-
5Step 5
To use, connect the device to the SPI master that you want to use. If you don't want to use the reset line, make sure to pull it high. In my case, I didn't want to add a pull up resistor on the board. The command format is very simple and is always 4 bytes:
Read/Write Position High Byte Low Byte 0x00/0x01 0x00-0x0f 0xVV 0xV0 The shift register used by the LED driver is 12 bits wide, and so the low order nybble has no meaning. The high byte is the one with most of the interesting segments in it (the 7 segments + period). The low byte is primarily used for the colon, which is shared for a given row. The effective duty cycle is based on the number of positions the colon is turned on for. I know it's quirky. The other option is to redefine a "0x10" character for the top row colon and "0x11" for the bottom row colon, but I figured this isn't any worse and gets more flexibility.
There is also supposed to be a "tick" that can be set, but for reasons I don't fully understand, that can't seem to be triggered. I believe it is due to the pin from the AVR not being able to be set as an output, though I don't see that in the documentation. I need to research it a bit more.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.