Library to simplify using capture pins on hardware.
When I first started experimenting with the notion of capture pins, I had no idea where to begin. Rather than write to registers in every single program, I decided to create a class that'd handle that heavy lifting for me!
Import library
Public Member Functions |
|
TimerCapture (PinName pCapturePin) | |
Configures registers to use the given pin as a capture pin.
|
|
uint32_t | getTime () |
Get the time captured by the capture pin's register.
|
|
Static Public Member Functions |
|
static void | startTimer () |
Starts the TIMER2 timer, and configures it if it's not already configured.
|
|
static bool | isRunning () |
Checks if the TIMER2 timer is running.
|
|
static void | stopTimer () |
Stops the TIMER2 timer.
|
|
static void | resetTimer () |
Resets the TIMER2 timer.
|
This code uses TIMER2 on the LPC1768. I have no idea if it will work on other hardware, but I hope it helps someone else!
Diff: TimerCapture.h
- Revision:
- 1:660af7d3c416
- Parent:
- 0:94cfc6ceec2f
- Child:
- 2:7c4ca945bfe1
--- a/TimerCapture.h Thu May 21 08:04:03 2015 +0000 +++ b/TimerCapture.h Thu May 21 08:11:06 2015 +0000 @@ -9,6 +9,26 @@ /** A class that will start TIMER2 on the LPC1768 and configure it to use one of the two capture pins (p29 or p30). * Capture pins allow the hardware to "timestamp" when a pin goes high or low, depending on the configuration. For more information, consult the * [LPC1768 user manual](http://www.nxp.com/documents/user_manual/UM10360.pdf). +* # Example +* @code +* #include "mbed.h" +* #include "TimerCapture.h" +* +* Serial pc(USBTX, USBRX); +* TimerCapture * capture; +* +* void handleInput() { +* pc.getc(); // clear the interrupt handler. +* printf("Capture register reads: %d\r\n", capture->getTime()); +* } +* +* int main() { +* pc.printf("Timer Capture Program Starting\r\n"); +* TimerCapture::startTimer(); +* capture = new TimerCapture(p29); +* pc.attach(&handleInput); +* } +* @endcode * * @attention Because this code operates directly on TIMER2, it has the potential to (a) mess with existing code or (b) cause errors when you instantiate too many objects. * Make sure to read this documentation thoroughly, else you may find yourself staring at [lights of death](https://developer.mbed.org/handbook/Debugging#runtime-errors)!