init

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
tulanthoar
Date:
Mon Feb 19 19:19:53 2018 +0000
Parent:
6:1b7486249c9a
Child:
8:6c2a12d6b1bf
Commit message:
1khz sine wave

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Thu Jun 08 14:22:45 2017 +0000
+++ b/main.cpp	Mon Feb 19 19:19:53 2018 +0000
@@ -3,37 +3,44 @@
 #if !DEVICE_ANALOGOUT
 #error You cannot use this example as the AnalogOut is not supported on this device.
 #else
-AnalogOut my_output(PA_4);
+AnalogOut sinOut(PA_4);
+AnalogOut stepOut(PA_5);
 #endif
 
-#define PI        (3.141592653589793238462)
-#define AMPLITUDE (1.0)    // x * 3.3V
-#define PHASE     (PI * 1) // 2*pi is one period
-#define RANGE     (0x7FFF)
-#define OFFSET    (0x7FFF)
+#define PI        (3.141592653589793238462f)
+#define AMPLITUDE (0.49998f)    // x * 3.3V
+#define PHASE     (PI * 1.0f) // 2*pi is one period
+#define RANGE     (1.0f)
+#define OFFSET    (0.5f)
 
 // Configuration for sinewave output
-#define BUFFER_SIZE (360)
-uint16_t buffer[BUFFER_SIZE];
+#define BUFFER_SIZE (540U)
+float buffer[BUFFER_SIZE];
 
 void calculate_sinewave(void);
 
-int main() {
+int main()
+{
     printf("Sinewave example\n");
     calculate_sinewave();
-    while(1) {      
+    float stepBuff[]= {0.9090909f,0.9090909f,0.9090909f,0.9090909f, 0.606061f,0.606061f,0.606061f,0.606061f, 0.3030303f, 0.3030303f, 0.3030303f, 0.3030303f};
+    while(1) {
         // sinewave output
-        for (int i = 0; i < BUFFER_SIZE; i++) {
-            my_output.write_u16(buffer[i]);
-            wait_us(10);
+        for( int j = 0; j < 12; ++j) {
+            stepOut=stepBuff[j];
+            for (int i = 0; i < BUFFER_SIZE; ++i) {
+                sinOut=buffer[i];
+ //               wait_us(22);
+            }
         }
     }
 }
 
 // Create the sinewave buffer
-void calculate_sinewave(void){
-  for (int i = 0; i < BUFFER_SIZE; i++) {
-     double rads = (PI * i)/180.0; // Convert degree in radian
-     buffer[i] = (uint16_t)(AMPLITUDE * (RANGE * (cos(rads + PHASE))) + OFFSET);
-  }
+void calculate_sinewave(void)
+{
+    for (int i = 0; i < BUFFER_SIZE; i++) {
+        float rads = 2.0f*(PI * i)/((float)BUFFER_SIZE); // Convert degree in radian
+        buffer[i] = (float)(AMPLITUDE * (RANGE * (cos(rads + PHASE))) + OFFSET);
+    }
 }