woodstock . / Mbed 2 deprecated Nucleo_Ex02_DAC

Dependencies:   mbed

Committer:
beaglescout007
Date:
Thu Mar 10 16:19:20 2016 +0000
Revision:
1:b018dbb87a88
Parent:
0:4df3adbe8435
Sine wave

Who changed what in which revision?

UserRevisionLine numberNew contents of line
beaglescout007 0:4df3adbe8435 1 #include "mbed.h"
beaglescout007 0:4df3adbe8435 2
beaglescout007 0:4df3adbe8435 3 // DAC 20khz
beaglescout007 0:4df3adbe8435 4 #define DAC_Frequency 20000
beaglescout007 0:4df3adbe8435 5
beaglescout007 0:4df3adbe8435 6 AnalogOut dac(PA_4);
beaglescout007 0:4df3adbe8435 7
beaglescout007 0:4df3adbe8435 8 DigitalIn btn(USER_BUTTON);
beaglescout007 0:4df3adbe8435 9
beaglescout007 0:4df3adbe8435 10 Timer tim;
beaglescout007 0:4df3adbe8435 11 Ticker tic;
beaglescout007 0:4df3adbe8435 12
beaglescout007 0:4df3adbe8435 13 // C D E F G A B C
beaglescout007 0:4df3adbe8435 14 int freq_table[] = {262, 293, 330, 349, 392, 440, 493, 523};
beaglescout007 0:4df3adbe8435 15 int sel;
beaglescout007 0:4df3adbe8435 16
beaglescout007 0:4df3adbe8435 17 void DAC_Int(void)
beaglescout007 0:4df3adbe8435 18 {
beaglescout007 0:4df3adbe8435 19 int period = 1000000 / freq_table[sel];
beaglescout007 0:4df3adbe8435 20 int pos = tim.read_us() % period;
beaglescout007 0:4df3adbe8435 21
beaglescout007 0:4df3adbe8435 22 // Square wave
beaglescout007 1:b018dbb87a88 23 //dac = pos > (period / 2) ? 1 : 0;
beaglescout007 1:b018dbb87a88 24
beaglescout007 1:b018dbb87a88 25 // Sine wave
beaglescout007 1:b018dbb87a88 26 dac = sin(pos * 3.14f * 2 / period) / 2.0f + 0.5f;
beaglescout007 0:4df3adbe8435 27 }
beaglescout007 0:4df3adbe8435 28
beaglescout007 0:4df3adbe8435 29 int main()
beaglescout007 0:4df3adbe8435 30 {
beaglescout007 0:4df3adbe8435 31 sel = 0;
beaglescout007 0:4df3adbe8435 32
beaglescout007 0:4df3adbe8435 33 tim.start();
beaglescout007 0:4df3adbe8435 34
beaglescout007 0:4df3adbe8435 35 tic.attach_us(&DAC_Int, 1000000 / DAC_Frequency);
beaglescout007 0:4df3adbe8435 36
beaglescout007 0:4df3adbe8435 37 while(1)
beaglescout007 0:4df3adbe8435 38 {
beaglescout007 0:4df3adbe8435 39 if (btn == 0)
beaglescout007 0:4df3adbe8435 40 {
beaglescout007 0:4df3adbe8435 41 sel++;
beaglescout007 0:4df3adbe8435 42 if (sel > 7) sel = 0;
beaglescout007 0:4df3adbe8435 43 wait(0.5);
beaglescout007 0:4df3adbe8435 44 }
beaglescout007 0:4df3adbe8435 45 }
beaglescout007 0:4df3adbe8435 46 }