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.
Committer:
WilliamMarshQMUL
Date:
Wed Jan 23 17:56:42 2019 +0000
Revision:
3:2bf79a3c3cbc
Parent:
2:e27fd3b65155
Child:
4:75ad475aff41
Library update; reduce stack size

Who changed what in which revision?

UserRevisionLine numberNew contents of line
WilliamMarshQMUL 0:5307f49cd305 1 // Lab 3 Example Program 2
WilliamMarshQMUL 0:5307f49cd305 2 // -----------------------
WilliamMarshQMUL 0:5307f49cd305 3 // Periodically write to the AnalogOut to create a sine wave
WilliamMarshQMUL 0:5307f49cd305 4 // Alternate between two fixed frequencies every 5 sec
WilliamMarshQMUL 0:5307f49cd305 5 //
WilliamMarshQMUL 2:e27fd3b65155 6 // Updated for mbed 5
WilliamMarshQMUL 2:e27fd3b65155 7
WilliamMarshQMUL 1:18e0f8aef32f 8 // THIS VERSION HAS NO DEBUGGING CODE
WilliamMarshQMUL 0:5307f49cd305 9
WilliamMarshQMUL 0:5307f49cd305 10 #include "mbed.h"
WilliamMarshQMUL 0:5307f49cd305 11 #include "sineTable.h"
WilliamMarshQMUL 0:5307f49cd305 12
WilliamMarshQMUL 0:5307f49cd305 13 Ticker tick ; // Creates periodic interrupt
WilliamMarshQMUL 0:5307f49cd305 14 AnalogOut ao(PTE30) ; // Analog output
WilliamMarshQMUL 0:5307f49cd305 15
WilliamMarshQMUL 1:18e0f8aef32f 16 // Function called periodically
WilliamMarshQMUL 1:18e0f8aef32f 17 // Write new value to AnalogOut
WilliamMarshQMUL 2:e27fd3b65155 18 volatile int index = 0 ; // index into array of sin values
WilliamMarshQMUL 0:5307f49cd305 19 void writeAout() {
WilliamMarshQMUL 0:5307f49cd305 20 ao.write_u16(sine[index]) ;
WilliamMarshQMUL 0:5307f49cd305 21 index = (index + 1) % 64 ;
WilliamMarshQMUL 0:5307f49cd305 22 }
WilliamMarshQMUL 0:5307f49cd305 23
WilliamMarshQMUL 0:5307f49cd305 24 // Control the frequency of updates
WilliamMarshQMUL 0:5307f49cd305 25 // Alternative between two frequencies
WilliamMarshQMUL 0:5307f49cd305 26 int main() {
WilliamMarshQMUL 1:18e0f8aef32f 27 int update_us = 1000 ; // 1ms
WilliamMarshQMUL 0:5307f49cd305 28 while (true) {
WilliamMarshQMUL 0:5307f49cd305 29 tick.attach_us(callback(&writeAout), update_us); // setup ticker to write to AnalogOut
WilliamMarshQMUL 3:2bf79a3c3cbc 30 wait(30.0) ; // wait 30 sec
WilliamMarshQMUL 1:18e0f8aef32f 31 update_us = 2000 ; // 2ms
WilliamMarshQMUL 0:5307f49cd305 32 tick.attach_us(callback(&writeAout), update_us); // setup ticker to write to AnalogOut
WilliamMarshQMUL 3:2bf79a3c3cbc 33 wait(30.0) ; // wait 30 sec
WilliamMarshQMUL 1:18e0f8aef32f 34 update_us = 1000 ; // 1ms
WilliamMarshQMUL 0:5307f49cd305 35 }
WilliamMarshQMUL 0:5307f49cd305 36 }