Hi! I have to program a MSP430F11(0/1)1 (1/2KB Flash, 128B RAM) to do 2 tasks:
- RX/TX bus connection
- measure a capacitance with timer_A
The measurement has to run every certain time. But this has not the highest priority. It is better for me to loose one measurement cycle and therefore get incoming bus data. At this point I remark, that I can't adjust interrupt priorities in the MSP430, they are built in. The RX function can be implemented blocking (waiting for an interrupt to occur) or non-blocking (by waiting for an interrupt OR a timeout). How can the tasks be arranged to work pseudo-simultanous? I know the simple OS versions available for the MSP430, but they need too much memory. I tried to use 16-bit watchdog as an interval timer to get a system time source. Its interrupt has the highest priority, hasn't it? Now I need a very very simple scheduler.
I thought about this, too: In this scenario I use the watchdog timer in reset mode as task timer. I have a reset-persistent RAM area, where I can hold status variables over a reset. So I can use a state variable (measure/RXTX) and switch to the corresponding next action after a reset. If the task time is used up, I get a reset by the watchdog timer, switch to the other task by asking my state variable and so on. So I have a reset context switch ;-)
What do you think?
Regards, Andreas