Just Finished a Project
I finally finished a project that involves a PIC microprocessor, and I hope to never touch another PIC chip ever again. There are so many terrible aspects to using PICs. Everything feels super old fashioned and troublesome. The IDE is trash, and a subscription for the "better" compilers make coding for it a nightmare. On top of that, people who share projects on the web are split between MikroC, XC8, and ASM. If you can find something that actually pertains to the esoteric chip you happened to be using, it's probably written in a language that is unhelpful for you. The need to fill in registers with individual bits, and the terrible naming schemes and lack of examples in the datasheet compound the difficulty of doing anything useful.
Never again would still be too soon.
So I wrote an update a couple of times, but it kept getting lost as my laptop crashed, presumably to RAM errors. Especially it would crash when a line in Notepad++ got too long and didn't autowrap. I've since upgraded my ram, and I'm currently writing this on my other laptop anyway. Hopefully I'll get this one to go through.
My last post was mostly a rant about how much I hate PIC microprocessors. I really think they're pretty terrible from a programming standpoint. There is often no way of accomplishing a goal without writing directly to memory addresses. If you want to use any hardware functions of the chips, you have to read loooong and not very explicit datasheets (especially lacking coding examples of how to set such flags), which are often drastically different between PIC chips, and then you have to set the individual bits of those memory addresses. I suppose this is mostly a problem with standard libraries not being written. Instead of a simple function that sets those flags for you, you have to dig into the heart of the silicon and do it all yourself. It seems this is the result of having ridiculously small amounts of ram available for processing. It's actually easier to write a long lookup table than to provide a simple formula for calculating the needed settings. On top of that, the compiliers are locked up in various levels of subscriptions. If you want anything optimized, you have to pay for monthly subscriptions. What a load of shit. I will never make a product with a PIC chip. I only had to learn as much as I did because we had a current product that used a PIC, and was was running on what I consider to be terribly written code, and I'm not that good of a programmer as it is.
So anyway, that was quite the experience. Now I'm working on using an ESP32-C3 for a WiFi enabled device, and I ran into a problem that only got resolved after a ton of googling. Let me spell it out simply here for webcrawlers in case anyone runs into a similar problem. I built a circuit with the ESP32-C3 as the microcontroller, and everything seemed to go well. I'd read the datasheet, the design guide, and several other documents related to the hardware and software. It seemed pretty standard for an ESP, which I think are great chips on the hardware side, and not bad on the software side, only the programming is a little wonky, and that was more or less the point when I started having trouble. I got lots of errors involving INVALID HEADER 0xFFFFFFFF and bootloops. I couldn't get the chip to go into programming mode, and besides getting some serial out data while in the Arduino serial monitor showing the beginning of a boot before quickly rebooting, I was having a lot of trouble tracking down the problem. I finally found one result that indicated the programming pin changed on the C3 from GPIO0 to GPIO9. One quick solder job, and I was in business. Here's the take away: great silicon, mediocre docs. I'm quite certain many of the documents I read had the wrong pin described in the programming section. GPIO0 has been the programming pin on the ESP line for a long time. Other ESP chips still use it. As far as I know at the moment, only the C3 changes this to GPIO9 instead. If you're having similar problems, please check your programming pin.
Things are looking good for me at the future. I felt unsure of my abilities as a hardware designer and programmer at the beginning, but I'm learning a lot, and I'm still years ahead of the average engineer in Japan. If you're thinking about making the leap to engineering in Japan and can read and understand a well written datasheet, you should seriously consider doing so.
Finally a Moment
So it has been the better part of a year since I last found a moment of freedom and motivation to update my website. Apologies if you actually read this.
I finally got a new job. I'm working as an engineer at a Japanese company. It has been a long road to this point, and I hope this road continues a while on. There are a lot of very interesting things about working at a Japanese company. I'll try to find more time to describe them. I recently got 4 "broken" computers from work. Two of those are notebooks. I'm currently writing this on one of them while riding the train.
Here's a list of a few things I want to share my thoughts on in upcoming updates:
Alright, that will get me going. I hope I don't take too long to make updates, but I really think I'll start typing on the train now that I have some laptops with more mobility than my gaming laptop.
Wow, so much has happened!
Coming soon... breaktime is almost over.