woodstock . / Mbed 2 deprecated Nucleo_Ex02_DAC

Dependencies:   mbed

Committer:
beaglescout007
Date:
Thu Mar 10 14:14:41 2016 +0000
Revision:
0:4df3adbe8435
Child:
1:b018dbb87a88
Release

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 0:4df3adbe8435 23 dac = pos > (period / 2) ? 1 : 0;
beaglescout007 0:4df3adbe8435 24 }
beaglescout007 0:4df3adbe8435 25
beaglescout007 0:4df3adbe8435 26 int main()
beaglescout007 0:4df3adbe8435 27 {
beaglescout007 0:4df3adbe8435 28 sel = 0;
beaglescout007 0:4df3adbe8435 29
beaglescout007 0:4df3adbe8435 30 tim.start();
beaglescout007 0:4df3adbe8435 31
beaglescout007 0:4df3adbe8435 32 tic.attach_us(&DAC_Int, 1000000 / DAC_Frequency);
beaglescout007 0:4df3adbe8435 33
beaglescout007 0:4df3adbe8435 34 while(1)
beaglescout007 0:4df3adbe8435 35 {
beaglescout007 0:4df3adbe8435 36 if (btn == 0)
beaglescout007 0:4df3adbe8435 37 {
beaglescout007 0:4df3adbe8435 38 sel++;
beaglescout007 0:4df3adbe8435 39 if (sel > 7) sel = 0;
beaglescout007 0:4df3adbe8435 40 wait(0.5);
beaglescout007 0:4df3adbe8435 41 }
beaglescout007 0:4df3adbe8435 42 }
beaglescout007 0:4df3adbe8435 43 }