I want to tie together my past 3 posts.
In Multi-computers vs multitasking vs interrupts I stated a problem (concurrent processing within the embedded realm) and teased you with a solution (GreenArray's GA144).
In Costs of a multiple mcu system I backed a bit away from the GA144 and wondered if a bunch of small, efficient and cheap MCUs could solve the problem.
In Building devices instead of platforms I offered a rationale to my pondered approaches.
So, here I sit composing an interrupt for an 8051 to service a GSM modem's UART (essentially to buffer all the incoming data). And... everything has just gotten complicated. I've been here before. I am no stranger to such code and the approach I am taking is text book. This is how code starts to get hairy and unpredictable.
But, really now... maybe I *should* consider breaking my tasks down into hardware modules (with each module consisting of dedicated software). If I dedicated an 8051 (tight loop, no interrupts) to just talking to the modem, collecting responses and sending just the relevant information to another 8051 (perhaps through I2C or SPI), then I build that module once, debug it once and be done with it.
This is modular design, isn't it?
So (during design) every time I find a need for an interrupt, I just fork another processor?
(This would work with a single GreenArray's GA144 as well as $3 Silabs 8051 MCUs)