<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 15 Mar 2024, at 08:29, Spiros Makris via Synth-diy <<a href="mailto:synth-diy@synth-diy.org" class="">synth-diy@synth-diy.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">I often get students asking for advice for getting into microcontrollers and device programming, and the most common thing I have to explain to them is that good uC design usually means code that orchestrates the operation of hardware peripherals and glues their functionality, rather than code that "does the thing".</span></div></blockquote></div><br class=""><div class="">I think this is an excellent point.</div><div class=""><br class=""></div><div class="">I've had a recent example of that with the project I'm working on. The current processor is a 16F1518, which isn't a bad chip, but finishes up doing quite a lot of the work itself. It only has a single SPI interface for example, so some of the comms it needs to do is bit-banged. I'm currently working on moving the code to the 18F27Q43 chip, which is a whole different ballgame. That chip not only has enough SPIs to be able to do the comms with hardware, but it also includes assignable DMA channels, so you don't even have to feed the SPI peripherals the data. Instead, you point the DMA at the data in RAM and leave it feeding the SPI while you can get on with something else. The whole job becomes orchestrating the peripherals and DMA to do the work. the actual uP itself should finish up with little to do.</div><div class=""><br class=""></div></body></html>