Greetings, folks -
For the last several years, I have been working on variants of a single product that uses an M328P. I find that my mental capability is just able to maintain a catalog of the basic features and peripherals, just enough to warn me when I need to look up details about something or other. By and large, things at the hardware level have been working fairly smoothly.
Now, I am seriously considering "upgrading" to a Mega3208 or Mega4808 (or maybe xx09). I grant you that there is major learning curve, involved. And, I grant you that many of the changes are in quantity (e.g. several USARTs). But, there are also some significant changes in detail (e.g. clock system). It strikes me that, as far as my own personal mental capability is concerned, this class of device may be pretty close to the limit of what I can catalog in my mind. It certainly is at the edge of the territory where reliance on configuration wizards becomes more prevalent.
This leads me to wonder how people navigate even an ARM M0? There are so many details, from sleep modes to interrupt management to fault handling, that I really do wonder whether or not a wizard is sufficient. But, since I am not going there, I am not going to trouble myself over it all.
The real point of this little exploration is how mere mortals handle complexity. There must be a point (which probably varies a lot from individual to individual) where the human brain is really challenged to keep track of things. That seems to be where we start relying on machine expertise (e.g. wizards) and where we start relying on group intelligence (designers who cross-check each other and who have varying areas of expertise).
I also fret that this increasing complexity is a driver away from "lone-wolf programming". But, each time I contemplate this, as I am doing now, I need to remind myself that this really has been the case for a long time. It is absurd to think of a single individual, for example, doing the software for an engine control module in a modern passenger vehicle or a cellphone. But, we still have the class of less complex applications that has not gone away. And, that is the area where individuals CAN shine, and where a AVR Tiny can do more than enough. All I need to do is look at our microwave oven and realize - there is an important tool that gets along fine with pretty simple smarts. And there are many others in the similar class.
I guess that part of the skill of an engineer or programmer is understanding just where those limits are, then use the appropriate tools and/or organizational to get the job done. Now, if I could just learn how to use that tool!
Best to all...