Sin generator using sinf() function for ST Nucleo F401RE.

Dependencies:   UIT_ADDA mbed

Committer:
MikamiUitOpen
Date:
Thu Oct 23 00:35:18 2014 +0000
Revision:
3:52173c01cb98
Parent:
1:920c46269ce8
Child:
5:14abc3025a0d
4

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:28696920540e 1 //--------------------------------------------------------------
MikamiUitOpen 0:28696920540e 2 // Sin generator using sinf() function
MikamiUitOpen 0:28696920540e 3 // Analog Output: MCP4922 using SPI
MikamiUitOpen 3:52173c01cb98 4 // 2014/10/23, Copyright (c) 2014 MIKAMI, Naoki
MikamiUitOpen 0:28696920540e 5 //--------------------------------------------------------------
MikamiUitOpen 0:28696920540e 6
MikamiUitOpen 0:28696920540e 7 #include "mbed.h"
MikamiUitOpen 0:28696920540e 8
MikamiUitOpen 0:28696920540e 9 #include "ADC_Base.hpp" // for ADC not using interrupt
MikamiUitOpen 0:28696920540e 10 #include "DAC_MCP4922.hpp" // for DAC MCP4922
MikamiUitOpen 0:28696920540e 11 #include "ScfClockTim3.hpp" // for clock supplied to SCF
MikamiUitOpen 0:28696920540e 12
MikamiUitOpen 0:28696920540e 13 using namespace Mikami;
MikamiUitOpen 0:28696920540e 14
MikamiUitOpen 3:52173c01cb98 15 const int FS_ = 12000; // Sampling frequency: 12 kHz
MikamiUitOpen 3:52173c01cb98 16 ADC_Base adc_(A0, FS_); // for AD
MikamiUitOpen 3:52173c01cb98 17 DAC_MCP4922 myDac_; // for DA
MikamiUitOpen 0:28696920540e 18
MikamiUitOpen 0:28696920540e 19 int main()
MikamiUitOpen 0:28696920540e 20 {
MikamiUitOpen 1:920c46269ce8 21 const float PI = 3.141593f;
MikamiUitOpen 0:28696920540e 22 const float PI2 = PI*2;
MikamiUitOpen 0:28696920540e 23 ScfClockTim3(500000); // cutoff frequency: 5 kHz
MikamiUitOpen 0:28696920540e 24
MikamiUitOpen 0:28696920540e 25 float phi = 0;
MikamiUitOpen 0:28696920540e 26 float dPhi = PI2*440.0f/(float)FS_;
MikamiUitOpen 0:28696920540e 27
MikamiUitOpen 0:28696920540e 28 while (true)
MikamiUitOpen 0:28696920540e 29 {
MikamiUitOpen 0:28696920540e 30 float xn = adc_.Read(); // Dummy read for synchronization to Fs
MikamiUitOpen 0:28696920540e 31 //-----------------------------------------------
MikamiUitOpen 0:28696920540e 32
MikamiUitOpen 0:28696920540e 33 float yn = (float)(0.8f*sinf(phi));
MikamiUitOpen 0:28696920540e 34 phi = phi + dPhi;
MikamiUitOpen 0:28696920540e 35 if (phi > PI) phi = phi -PI2;
MikamiUitOpen 0:28696920540e 36
MikamiUitOpen 0:28696920540e 37 //-----------------------------------------------
MikamiUitOpen 0:28696920540e 38 myDac_.Write(yn); // Write to DAC
MikamiUitOpen 0:28696920540e 39 }
MikamiUitOpen 0:28696920540e 40 }
MikamiUitOpen 0:28696920540e 41 /*
MikamiUitOpen 0:28696920540e 42 // Following version uses double type variable
MikamiUitOpen 0:28696920540e 43 int main()
MikamiUitOpen 0:28696920540e 44 {
MikamiUitOpen 0:28696920540e 45 const double PI = 3.1415926536;
MikamiUitOpen 0:28696920540e 46 const double PI2 = PI*2;
MikamiUitOpen 0:28696920540e 47 ScfClockTim3(500000); // cutoff frequency: 5 kHz
MikamiUitOpen 0:28696920540e 48
MikamiUitOpen 0:28696920540e 49 double phi = 0;
MikamiUitOpen 0:28696920540e 50 double dPhi = PI2*440.0/(double)FS_;
MikamiUitOpen 0:28696920540e 51
MikamiUitOpen 0:28696920540e 52 while (true)
MikamiUitOpen 0:28696920540e 53 {
MikamiUitOpen 0:28696920540e 54 float xn = adc_.Read(); // Dummy read to synchronize Fs
MikamiUitOpen 0:28696920540e 55 //-----------------------------------------------
MikamiUitOpen 0:28696920540e 56 dOut_.write(1);
MikamiUitOpen 0:28696920540e 57
MikamiUitOpen 0:28696920540e 58 float yn = (float)(0.8*sin(phi));
MikamiUitOpen 0:28696920540e 59 phi = phi + dPhi;
MikamiUitOpen 0:28696920540e 60 if (phi > PI) phi = phi -PI2;
MikamiUitOpen 0:28696920540e 61
MikamiUitOpen 0:28696920540e 62 dOut_.write(0);
MikamiUitOpen 0:28696920540e 63 //-----------------------------------------------
MikamiUitOpen 0:28696920540e 64 myDac_.Write(yn); // Write to DAC
MikamiUitOpen 0:28696920540e 65 }
MikamiUitOpen 0:28696920540e 66 }
MikamiUitOpen 0:28696920540e 67 */