There's not much to show in terms of pictures but the last few weeks have seen intense work on the bootloader software. Most of the FAT16 implementation has been re-written, API functionality added, tested and debugged. It is now possible to write files to the flash drive with a minimum of write operations. This is possible by cleverly buffering data in RAM before performing an actual write on the flash. This means, each page only needs to be written once, even when sending data in small chunks. So the flash (which has a limited number of write operations) will not wear out even if the firmware is updated very frequently.
With that work behind me, I have once again turned to the acual SolarCharger firmware. A number of code files are shared between the bootloader and the charger software. That includes the FAT16 implementation mentioned above but also all the USB code and hardware drivers. The first step was to integrate them and make everything compile again. That's done. So the charger immediately profits from the work I did on the bootloader.
What remains to be done is to separate the API functionality from the USB code. The charger has its own API which previously has only been available via USB. Now I'm putting this into a separate module so that it can be accessed via any of the interfaces. Exactly the same thing I did for the bootloader a few weeks ago. Once that's done, it's automatically accessible via SPI as well - That code is shared with the bootloader and already in place. I expect this to be all up and running by the end of the week.
After this rather technical step I will resume to work on more visible features again. I'm very much looking forward to it. There are several things to be done:
- PWM outputs: Since Rev E the hardware is capable of PWM control on the power outputs but the software to do that still needs to be written.
- Explore further MPPT algorithms. I'm currently reading some papers on the topic but I'm looking for more material. If you know any good source of information, please let me know.
- Make use of the 12-bit ADC for temperature measurements. As above, the hardwar can now do it but the software only uses 10 bits at the moment.
- User interface: Some of the screens were really only intended for debugging. It's time to throw those out.
- Low-power features: More needs to be done to reduce standby current consumption. There are many hardware features not fully utilized yet in that respect.
- Debug and finalize data logging
So you see, I'm not running out of work. I have one of those chargers set up here in my office with a panel just outside the window and it's harvesting power every day. But there are always things that can and should be improved, particularly in software. I'm on it.