不韋 呂
/
UIT2_SinGenerator_SinFunction
Sin generator using sinf() function for ST Nucleo F401RE.
main.cpp@6:b471ee5cc1c5, 2014-11-15 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Sat Nov 15 06:37:51 2014 +0000
- Revision:
- 6:b471ee5cc1c5
- Parent:
- 5:14abc3025a0d
7
Who changed what in which revision?
User | Revision | Line number | New 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 | */ |