simple digital out on pin 21
Dependencies: mbed
Revision 2:6a0effa3b397, committed 2018-08-13
- Comitter:
- AndyA
- Date:
- Mon Aug 13 15:05:19 2018 +0000
- Parent:
- 1:5a5d5dfd8921
- Commit message:
- Improved accuracy
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Mon Aug 13 13:36:35 2018 +0000 +++ b/main.cpp Mon Aug 13 15:05:19 2018 +0000 @@ -1,14 +1,38 @@ #include "mbed.h" +#define frequency (10*1000) +#define cycleCount (10*1000) + + +#define periodUS (1000000/frequency) +#define halfPeriodUS (periodUS/2) + +Serial pc(USBTX,USBRX); DigitalOut myled(LED1); DigitalOut p_out(p21); -float duration = 0.2; + +volatile uint32_t counter = 0; + +Ticker pinChangeTick; + +void onTick() { + p_out = !p_out; + counter++; + if (counter == cycleCount*2) { + pinChangeTick.detach(); + myled = 0; + } +} int main() { - while(1) { - p_out = 1; - wait(duration); - p_out = 0; - wait(duration); + pc.baud(115200); + myled = 0; + pc.printf("Running %d cycles at %.2f kHz\r\n",cycleCount,frequency/1000.0f); + wait(1); + pinChangeTick.attach_us(&onTick,halfPeriodUS); + + myled = 1; + while(counter < cycleCount*2) { } + pc.puts("Done"); }