init
Revision 7:40c351cc34d5, committed 2018-02-19
- 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);
+ }
}