Lab 3 where the sine wave command is created.

Dependencies:   mbed

Committer:
bhimebau
Date:
Mon Jan 22 23:08:18 2018 +0000
Revision:
0:9b9ec8ebd3e2
Initial commit ;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bhimebau 0:9b9ec8ebd3e2 1 #include "mbed.h"
bhimebau 0:9b9ec8ebd3e2 2
bhimebau 0:9b9ec8ebd3e2 3 #if !DEVICE_ANALOGOUT
bhimebau 0:9b9ec8ebd3e2 4 #error You cannot use this example as the AnalogOut is not supported on this device.
bhimebau 0:9b9ec8ebd3e2 5 #else
bhimebau 0:9b9ec8ebd3e2 6 AnalogOut my_output(PA_4);
bhimebau 0:9b9ec8ebd3e2 7 #endif
bhimebau 0:9b9ec8ebd3e2 8
bhimebau 0:9b9ec8ebd3e2 9 #define PI (3.141592653589793238462)
bhimebau 0:9b9ec8ebd3e2 10 #define AMPLITUDE (1.0) // x * 3.3V
bhimebau 0:9b9ec8ebd3e2 11 #define PHASE (PI * 1) // 2*pi is one period
bhimebau 0:9b9ec8ebd3e2 12 #define RANGE (0x7FFF)
bhimebau 0:9b9ec8ebd3e2 13 #define OFFSET (0x7FFF)
bhimebau 0:9b9ec8ebd3e2 14
bhimebau 0:9b9ec8ebd3e2 15 // Configuration for sinewave output
bhimebau 0:9b9ec8ebd3e2 16 #define BUFFER_SIZE (360)
bhimebau 0:9b9ec8ebd3e2 17 uint16_t buffer[BUFFER_SIZE];
bhimebau 0:9b9ec8ebd3e2 18
bhimebau 0:9b9ec8ebd3e2 19 void calculate_sinewave(void);
bhimebau 0:9b9ec8ebd3e2 20
bhimebau 0:9b9ec8ebd3e2 21 int main() {
bhimebau 0:9b9ec8ebd3e2 22 printf("Sinewave example\n");
bhimebau 0:9b9ec8ebd3e2 23 calculate_sinewave();
bhimebau 0:9b9ec8ebd3e2 24 while(1) {
bhimebau 0:9b9ec8ebd3e2 25 // sinewave output
bhimebau 0:9b9ec8ebd3e2 26 for (int i = 0; i < BUFFER_SIZE; i++) {
bhimebau 0:9b9ec8ebd3e2 27 my_output.write_u16(buffer[i]);
bhimebau 0:9b9ec8ebd3e2 28 wait_us(10);
bhimebau 0:9b9ec8ebd3e2 29 }
bhimebau 0:9b9ec8ebd3e2 30 }
bhimebau 0:9b9ec8ebd3e2 31 }
bhimebau 0:9b9ec8ebd3e2 32
bhimebau 0:9b9ec8ebd3e2 33 // Create the sinewave buffer
bhimebau 0:9b9ec8ebd3e2 34 void calculate_sinewave(void){
bhimebau 0:9b9ec8ebd3e2 35 for (int i = 0; i < BUFFER_SIZE; i++) {
bhimebau 0:9b9ec8ebd3e2 36 double rads = (PI * i)/180.0; // Convert degree in radian
bhimebau 0:9b9ec8ebd3e2 37 buffer[i] = (uint16_t)(AMPLITUDE * (RANGE * (cos(rads + PHASE))) + OFFSET);
bhimebau 0:9b9ec8ebd3e2 38 }
bhimebau 0:9b9ec8ebd3e2 39 }