Lab 3 example 2, no debugging

Fork of DACandticker_sample_with_debug by William Marsh

DAC Ticker

  • Sample code for part 2 of lab 3 using the DAC, called from a Ticker.
  • Note that to use AnalogOut from the Ticker (an ISR), we create a version without locking.
Revision:
4:75ad475aff41
Parent:
3:2bf79a3c3cbc
Child:
5:5161dd5f273e
--- a/main.cpp	Wed Jan 23 17:56:42 2019 +0000
+++ b/main.cpp	Mon Feb 04 16:12:23 2019 +0000
@@ -2,6 +2,10 @@
 // -----------------------
 // Periodically write to the AnalogOut to create a sine wave
 // Alternate between two fixed frequencies every 5 sec
+// 
+// This code uses the Ticker API to create a periodic interrupt
+// Devices used in this way must not call locks; a variant of 
+//   the AnalogOut device w/o locking is created for this.
 //
 // Updated for mbed 5
 
@@ -10,8 +14,21 @@
 #include "mbed.h"
 #include "sineTable.h"
 
+// --------------------------
+// This declaration introduces a derived version of the mbed AnalogOut
+//   class with the locking removed.
+// You do NOT NEED TO UNDERSTAND this 
+class AnalogOut_unsafe : public AnalogOut {
+  public:
+    AnalogOut_unsafe (PinName pin) : AnalogOut (pin) {} 
+  protected: 
+    virtual void lock() {}
+    virtual void unlock() {}
+};
+// --------------------------
+
 Ticker tick ;          // Creates periodic interrupt
-AnalogOut ao(PTE30) ;  // Analog output
+AnalogOut_unsafe ao(PTE30) ;  // Analog output
 
 // Function called periodically
 // Write new value to AnalogOut