For anyone that really wants to build this thing I've posted updated code containing two improvements. Firstly, I fixed an annoying firmware failure mode that would require rebooting the charger when clearing snow off the PV panel. It wasn't a bug - just bad code. During the charger start sequence I had a check for the charger's output voltage less than the battery - a simple way to tell if there was a HW problem. But I did this without checking the PV voltage first. Fixed by moving the check into the runtime loop where a true low PV volts condition would trap first.
Second, I wasn't satisfied with heuristic P&O algorithm. It spent too much time bobbing about the MPP mean and wasting energy. I worked on improvements but it got more complicated than I wanted. Instead I came up with the 'sweep' algorithm which made it much simpler to find & lock on the MPP. Not perfect but much better than the heuristic version.
All updates are documented in-line and you can select which MPPT algorithm to use with a compile constant.