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

Dependencies:   UIT_ADDA mbed

Committer:
MikamiUitOpen
Date:
Sat Nov 15 06:37:51 2014 +0000
Revision:
6:b471ee5cc1c5
Parent:
5:14abc3025a0d
7

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 5:14abc3025a0d 4 // 2014/11/12, 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
MikamiUitOpen 0:28696920540e 12 using namespace Mikami;
MikamiUitOpen 0:28696920540e 13
MikamiUitOpen 3:52173c01cb98 14 const int FS_ = 12000; // Sampling frequency: 12 kHz
MikamiUitOpen 3:52173c01cb98 15 ADC_Base adc_(A0, FS_); // for AD
MikamiUitOpen 3:52173c01cb98 16 DAC_MCP4922 myDac_; // for DA
MikamiUitOpen 0:28696920540e 17
MikamiUitOpen 0:28696920540e 18 int main()
MikamiUitOpen 0:28696920540e 19 {
MikamiUitOpen 1:920c46269ce8 20 const float PI = 3.141593f;
MikamiUitOpen 0:28696920540e 21 const float PI2 = PI*2;
MikamiUitOpen 5:14abc3025a0d 22 myDac_.ScfClockTim3(500000); // cutoff frequency: 5 kHz
MikamiUitOpen 0:28696920540e 23
MikamiUitOpen 0:28696920540e 24 float phi = 0;
MikamiUitOpen 0:28696920540e 25 float dPhi = PI2*440.0f/(float)FS_;
MikamiUitOpen 0:28696920540e 26
MikamiUitOpen 0:28696920540e 27 while (true)
MikamiUitOpen 0:28696920540e 28 {
MikamiUitOpen 0:28696920540e 29 float xn = adc_.Read(); // Dummy read for synchronization to Fs
MikamiUitOpen 0:28696920540e 30 //-----------------------------------------------
MikamiUitOpen 0:28696920540e 31
MikamiUitOpen 0:28696920540e 32 float yn = (float)(0.8f*sinf(phi));
MikamiUitOpen 0:28696920540e 33 phi = phi + dPhi;
MikamiUitOpen 0:28696920540e 34 if (phi > PI) phi = phi -PI2;
MikamiUitOpen 0:28696920540e 35
MikamiUitOpen 0:28696920540e 36 //-----------------------------------------------
MikamiUitOpen 0:28696920540e 37 myDac_.Write(yn); // Write to DAC
MikamiUitOpen 0:28696920540e 38 }
MikamiUitOpen 0:28696920540e 39 }
MikamiUitOpen 0:28696920540e 40 /*
MikamiUitOpen 0:28696920540e 41 // Following version uses double type variable
MikamiUitOpen 0:28696920540e 42 int main()
MikamiUitOpen 0:28696920540e 43 {
MikamiUitOpen 0:28696920540e 44 const double PI = 3.1415926536;
MikamiUitOpen 0:28696920540e 45 const double PI2 = PI*2;
MikamiUitOpen 0:28696920540e 46 ScfClockTim3(500000); // cutoff frequency: 5 kHz
MikamiUitOpen 0:28696920540e 47
MikamiUitOpen 0:28696920540e 48 double phi = 0;
MikamiUitOpen 0:28696920540e 49 double dPhi = PI2*440.0/(double)FS_;
MikamiUitOpen 0:28696920540e 50
MikamiUitOpen 0:28696920540e 51 while (true)
MikamiUitOpen 0:28696920540e 52 {
MikamiUitOpen 0:28696920540e 53 float xn = adc_.Read(); // Dummy read to synchronize Fs
MikamiUitOpen 0:28696920540e 54 //-----------------------------------------------
MikamiUitOpen 0:28696920540e 55 dOut_.write(1);
MikamiUitOpen 0:28696920540e 56
MikamiUitOpen 0:28696920540e 57 float yn = (float)(0.8*sin(phi));
MikamiUitOpen 0:28696920540e 58 phi = phi + dPhi;
MikamiUitOpen 0:28696920540e 59 if (phi > PI) phi = phi -PI2;
MikamiUitOpen 0:28696920540e 60
MikamiUitOpen 0:28696920540e 61 dOut_.write(0);
MikamiUitOpen 0:28696920540e 62 //-----------------------------------------------
MikamiUitOpen 0:28696920540e 63 myDac_.Write(yn); // Write to DAC
MikamiUitOpen 0:28696920540e 64 }
MikamiUitOpen 0:28696920540e 65 }
MikamiUitOpen 0:28696920540e 66 */