This project was completed back in 2002 and has seen continuous use since (apart from the time spent selling the house because the hifi was "decluttered"). I say completed, but in all honesty the firmware isn't quite finished. In terms of functionality it's all done apart from the input trim, and that's actually nearly finished - the menu appears, one can adjust the level, and it's remembered per source. I just need to add a couple of lines of code in the routine that calculates the individual volume levels before they get sent to the PGA2310s. Also, there's a screen redraw bug that got introduced when I added the code for the new display, but as this is only present when using the small font, I never see it.
Updating this in 2026, I know why I haven't ever got around to fixing these minor problems - it's because it will take weeks of immersion in the existing code to remind myself what I did, and why. To be fair, I am very diligent about commenting code as I write it, which will help a lot, plus I still have all the notes from the time. But having done a lot more PIC programming since then, I know that I will get lost in a deep rabbit hole, updating everything in line with all I've learned since this project! Even just recently I copy/pasted some code from this for another project and found several bugs! Nothing show-stopping, but very satisfying to exorcise. I honestly think that I should make the time to go through it, even if the practical outcomes will be very minor, because it would be a good mental workout. Important as we get older!
Over the last quarter-century, it's been remarkably stable. The PIC only rarely crashes and reboots - I can count 2 or 3 instances, and each was traceable to local mains spikes. I mean very local - each time it was caused by operating the power switch of my Thorens TD125 turntable. I traced this to the /MCLR line which is brought out to the rear panel programming socket. It's only weakly tied to +5 volts with a 22K resistor; replacing that with 1K stops the problem, but also stops the programmer working. Next time, I'll either build the programmer into the box so that the rear panel socket is effectively an RS232 socket, or I'll just have a header on the PCB. Given that I've never programmed the PIC with the cover on, I suspect this is the option I'll take...
In terms of sound quality, I'm very happy with this unit. It's true that lots of people on discussion forums feel that the PGA2310 (or the OPA2134 or the NE5532) might not be the most transparent components out there, but I've never really lost sleep about this. Certainly, the simple tests I did a few years back (which involved A-B comparisons with potentiometers) didn't reveal any differences providing the levels were very accurately matched (to within 0.1dB). But do remember, however, that I'm used to seeing the insides of sound desks that have hundreds of NE5532s or even TL072s!
Another reflection as I update these pages in 2026 - I feel I must give myself credit for the PCB designs. More specifically, the almost total lack of mistakes made. In the whole pre-amp, there was only 1 correction - this is on the surround PCB, and related to the -UNMUTE connection for the output relays - looking at the photos which were taken prior to being fixed, I see it was joined to both pins 25 and 26 rather than just 25.
I was using the original version of Easy PC, which runs in DOS, and although you can use it to draw schematics if you wish, I don't believe it can link schematics to board layouts, so everything has to be checked manually. I'm sure a lot of younger designers have never had to do that, and it would be really hard to convey to them just how labour-intensive it used to be! Luckily, back then I was time-rich, albeit cash-poor. Today, I'm just poor! But having learned the basics of KiCad, it would be impossible to go back.
