Task 5.2.3 Solution
main.cpp
- Committer:
- noutram
- Date:
- 2017-07-13
- Revision:
- 1:7e8900437bb6
- Parent:
- 0:c616f46e44a5
File content as of revision 1:7e8900437bb6:
#include "mbed.h"
#define Fs 1000
#define T (1.0/Fs)
#define PI 3.1415926541
PwmOut mypwm(PWM_OUT);
//This GPIO is used for Chip Select
DigitalOut DAC_CS(D10);
//SPI Object
SPI spi(D11, D12, D13);
//Ticker for setting the output sampling rate
Ticker t;
//Discrete time
unsigned int n=0;
//Frequency f
double f = 10.0;
//Prototype for the ticker ISR
void writeSample();
int main() {
//Set speed of the SPI interface
spi.frequency(20000);
//16 bit words, mode 0 clock
spi.format(16,0);
//Write at Fs Hz
t.attach(writeSample, T);
while(1) {
sleep();
}
}
//ISR for ticker
void writeSample()
{
//Enable the selected slave device
DAC_CS = 0;
//Write a header (top 4 bits) and value (bottom 12 bits)
double y = cos(2.0*PI*n*f*T);
unsigned int val = (unsigned int)(2048.0 * (y + 1.0));
spi.write(0x7000 | val);
//Disable the selected slave device (and update the output)
DAC_CS = 1;
n++;
}
Nicholas Outram