Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@5:14abc3025a0d, 2014-11-12 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Wed Nov 12 10:48:13 2014 +0000
- Revision:
- 5:14abc3025a0d
- Parent:
- 3:52173c01cb98
6
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 | */ |