Digital to analog conversion. Reads analog signal (voltage) and depending on it, sets the frequency to produce the analog output for sine wave.

Fork of DACandticker_sample by William Marsh

main.cpp

Committer:
WilliamMarshQMUL
Date:
2018-01-24
Revision:
2:e27fd3b65155
Parent:
1:18e0f8aef32f
Child:
3:ac3412621bf9

File content as of revision 2:e27fd3b65155:

// Lab 3 Example Program 2
// -----------------------
// Periodically write to the AnalogOut to create a sine wave
// Alternate between two fixed frequencies every 5 sec
//
// Updated for mbed 5

// THIS VERSION HAS NO DEBUGGING CODE

#include "mbed.h"
#include "sineTable.h"

Ticker tick ;          // Creates periodic interrupt
AnalogOut ao(PTE30) ;  // Analog output

// Function called periodically
// Write new value to AnalogOut 
volatile int index = 0 ; // index into array of sin values
void writeAout() {
    ao.write_u16(sine[index]) ;
    index = (index + 1) % 64 ;   
}

// Control the frequency of updates
//   Alternative between two frequencies      
int main() {
    int update_us = 1000 ; // 1ms
    while (true) {
        tick.attach_us(callback(&writeAout), update_us); // setup ticker to write to AnalogOut
        Thread::wait(30000) ; // wait 30 sec - 30000ms
        update_us = 2000 ; // 2ms
        tick.attach_us(callback(&writeAout), update_us); // setup ticker to write to AnalogOut
        Thread::wait(30000) ; // wait 30 sec - 30000ms
        update_us = 1000 ; // 1ms
    }
}