Hi Thomas,
I think I can understand what you are talking about. Basically, you are not basically entirely sure if you have CPU power to meet your needs.
So I'll try and give you a real world example of what this little Mbed/LPC1768 can do. Here's an outline of one of my projects:-
SOWB: Artificial Satellite Tracker.
Overview: Real time application that tracks satellites with a GOTO telescope mount. Attached to the mount is a low light PAL video camera. The video picture is "timestamped" with a GPS derived clock and the GOTO mount's pointing position.
Here's what the LPC1768 is doing in real time:-
Interrupts:-
- USB_IRQn:
- Used to communicate with an XBox360 gamepad, used as the applications main input. Reads the joysticks to move the GOTO mount and the buttons for the OSD menu system. USB is a Host.
- EINT3_IRQn: (GPIO interrupts, normally associated with InterruptIn)
- MAX7456 vertical sync IRQ, used to capture the time and update the video signal picture
- GPS 1PPS, used to align the captured time to the microsecond. I only need 1ms accuracy so the latency isn't an issue for me, it's more than fast enough.
- UART2_IRQn:
- Used to communicate with the GOTO mount, 9600baud
- UART1_IRQn:
- Used to read the incoming GPS data stream, 9600buad
- RIT_IRQn:
- Provides system wide timing and sync.
- DMA_IRQn:
- Used to control the flow of data from a two flash devices and an SD card + the MAX7456 OSD
- SSP0_IRQn:
- SSP0 bus used for two flash devices and an SD card
- SSP1_IRQn:
- Used to handle the MAX7456 OSD
In additional to all that is runs a pretty heavy math library used to calculate the satellites
position in real time so it can maintain the variable slew rates of the scope based on my GPS
location and time information.
When not actively tracking it runs a list of "targets or interest" decideing when to intercept
the next target. It also controls my video recorder to record "samples" which can be reduced
to IOD format later. It can also reduce to IOD "instantly" by firing a trigger on the gamepad
controller. I am currently adding support for IOD to be sent to my website so that IOD records
appear on Twitter, Facebook and via an RSS feed.
And I have other plans for the project.
And I can say so far that the LPC1768 comsumes all this without hardly blinking an eye. I still have plenty
of time available in my while(1) loop for it to cook soup!
However, I will say one thing. This project doesn't use Mbed libs at all. It's all in C rather than C++ and was written to directly drive all the peripherals. But that's because it was my first Mbed project. I'm not sure what the results would have been with C++ and libs but I'm sure it would have consumed it all too.
So you can see, it is a pretty good platform to dev off :)
Is there a way to implement an interrupt using software? I know there is one for hardware, InterruptIn, where the interrupt is triggered by the rising or falling edge of the pulse. What I would like to do is create the same behavior, but using a bool stored in memory and having the interrupt handler called when the value is changed from 0 to 1.
If there is not, are there any plans to implement something like this? If there are none, I would be very happy to help start. Thank you.