simple digital out on pin 21

Dependencies:   mbed

Files at this revision

API Documentation at this revision

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");
 }