Fixed the Odroid I/O shield. A day or two ago I finally received the USBTinyISP I ordered, presumably delayed by the increased shipping from the holiday. Now I could reprogram the replacement Atmel ATMEGA328-P that died on the I/O shield. But first I had to remove the dead CPU.
Back in September I picked up a soldering station with a hot-air rework wand. In theory that should have been able to heat the part to remove, but I had never actually done this before. I pulled out my microscope inspection station, fired up the rework station and decided to give it a shot. I was rather surprised that after heating for a few second I used the suction cup and pulled the CPU cleanly off the board.
To put the replacement CPU down I first used twisters to position and hold the chip, and my soldering iron to melt one pin down to hold it in place. After that I used the rework station to melt all the solder. Not feeling all CPU pins were making a good connection I used the soldering iron to touch each pin's pad to make sure it also conducted heat to the pin.
It only took a couple of minutes and the replacement CPU was soldered down. I used the programmer and quickly had the bootloader in the processor. This meant that the CPU must be at least mostly connected. I then reconnected the I/O shield to the Odroid and got the system on it's feet. With the Arduino tool I loaded a sample program to flash an LED. When I saw that it was working, I knew the change was functional.
The solar powered web server project has been on hold for over a month because of this setback, but with hardware again operational the building can proceed.
Since I have been using an Arduino more lately, and I really like the setup, I think I might build my power circuit on the breadboard first. Using the Arduino I can test to make sure it is doing what I want. I can put all the brains of the power monitoring in the Arduino, allowing the serial interface to query power but leaving the decisions about power control to the Arduino. That was if I mess up my breadboard circuit and fry the CPU like I did with the I/O shield, it's fairly easy to replace.
A day or two ago I finally received the USBTinyISP I ordered, presumably delayed by the increased shipping from the holiday. This will allow me to program the blank ATMEGA328 CPU for Xiphos' DMX LED controller.
First, I needed to get software into the CPU. So I swapped out the CPU on the Arduino with my new blank part. Then I connected the USBTinyISP. But when I tried to load the bootloader I got a message about the signature not matching. Turns out that although I thought I picked up the exact same part, I didn't. All that was needed was to change a line in avrdude.conf so it was except the different signature.
signature = 0x1e 0x95 0x0F;
signature = 0x1e 0x95 0x14;
That took care of the error and the bootloader was loaded. I then had to change the signature back to the original so I could load a program into it. I started with the example that flashes the LED just to be sure the CPU was working, and it was. I then programmed in the DMX code.
Now it was time to place the CPU on a board by itself. My second breadboard had plenty of room left, only holding the 485 transceiver chip. Using the first drawing I found of the CPU connected to a crystal I could find, I quickly had the device wired up. The DMX controller is setup to flash an LED on pin 13, and so when I connected an LED to this pin I would be able to see if the CPU was working. Sure enough when I powered up the device I saw the LED flash. This is the first time I've used a crystal oscillator in a circuit I built myself, and I'm glad it worked so well. Once I knew the CPU was working I started transferring all the FET control lines from the Arduino board to the new device. I went well but on occasion the CPU would halt. I added some capacitance to the 5 V lines and that cleared that problem up—I just needed a little extra power storage when switching on those FETs from the CPU.
The setup is now stand-alone. I told Xiphos he can solder everything together himself—I seem to blew stuff up when I do that.