Update

Dependencies:   mbed mbed-rtos X_NUCLEO_IHM02A1

Committer:
scherfa2
Date:
Sun Apr 07 18:31:29 2019 +0000
Revision:
27:23bd03a6a6f6
OK

Who changed what in which revision?

UserRevisionLine numberNew contents of line
scherfa2 27:23bd03a6a6f6 1 #include "mbed.h"
scherfa2 27:23bd03a6a6f6 2 #include "PWM.h"
scherfa2 27:23bd03a6a6f6 3
scherfa2 27:23bd03a6a6f6 4 Timeout timer;
scherfa2 27:23bd03a6a6f6 5 Timeout timer2;
scherfa2 27:23bd03a6a6f6 6
scherfa2 27:23bd03a6a6f6 7 DigitalOut my_pwm(D10); // IO used by pwm_io function
scherfa2 27:23bd03a6a6f6 8 DigitalOut my_pwm2(D5);
scherfa2 27:23bd03a6a6f6 9
scherfa2 27:23bd03a6a6f6 10
scherfa2 27:23bd03a6a6f6 11 int on_delay = 0;
scherfa2 27:23bd03a6a6f6 12 int off_delay = 0;
scherfa2 27:23bd03a6a6f6 13 int on_delay2 = 0;
scherfa2 27:23bd03a6a6f6 14 int off_delay2 = 0;
scherfa2 27:23bd03a6a6f6 15
scherfa2 27:23bd03a6a6f6 16 void toggleOff(void);
scherfa2 27:23bd03a6a6f6 17
scherfa2 27:23bd03a6a6f6 18 void toggleOn(void) {
scherfa2 27:23bd03a6a6f6 19 my_pwm = 1;
scherfa2 27:23bd03a6a6f6 20 timer.attach_us(toggleOff, on_delay);
scherfa2 27:23bd03a6a6f6 21 }
scherfa2 27:23bd03a6a6f6 22
scherfa2 27:23bd03a6a6f6 23 void toggleOff(void) {
scherfa2 27:23bd03a6a6f6 24 my_pwm = 0;
scherfa2 27:23bd03a6a6f6 25 timer.attach_us(toggleOn, off_delay);
scherfa2 27:23bd03a6a6f6 26 }
scherfa2 27:23bd03a6a6f6 27
scherfa2 27:23bd03a6a6f6 28 // p_us = signal period in micro_seconds
scherfa2 27:23bd03a6a6f6 29 // dc = signal duty-cycle (0.0 to 1.0)
scherfa2 27:23bd03a6a6f6 30 void pwm_io(int p_us, float dc) {
scherfa2 27:23bd03a6a6f6 31 timer.detach();
scherfa2 27:23bd03a6a6f6 32 if ((p_us == 0) || (dc == 0)) {
scherfa2 27:23bd03a6a6f6 33 my_pwm = 0;
scherfa2 27:23bd03a6a6f6 34 return;
scherfa2 27:23bd03a6a6f6 35 }
scherfa2 27:23bd03a6a6f6 36 if (dc >= 1) {
scherfa2 27:23bd03a6a6f6 37 my_pwm = 1;
scherfa2 27:23bd03a6a6f6 38 return;
scherfa2 27:23bd03a6a6f6 39 }
scherfa2 27:23bd03a6a6f6 40 on_delay = (int)(p_us * dc);
scherfa2 27:23bd03a6a6f6 41 off_delay = p_us - on_delay;
scherfa2 27:23bd03a6a6f6 42 toggleOn();
scherfa2 27:23bd03a6a6f6 43 }
scherfa2 27:23bd03a6a6f6 44
scherfa2 27:23bd03a6a6f6 45 ////PMW2
scherfa2 27:23bd03a6a6f6 46 void toggleOff2(void);
scherfa2 27:23bd03a6a6f6 47
scherfa2 27:23bd03a6a6f6 48 void toggleOn2(void) {
scherfa2 27:23bd03a6a6f6 49 my_pwm2 = 1;
scherfa2 27:23bd03a6a6f6 50 timer2.attach_us(toggleOff2, on_delay2);
scherfa2 27:23bd03a6a6f6 51 }
scherfa2 27:23bd03a6a6f6 52
scherfa2 27:23bd03a6a6f6 53 void toggleOff2(void) {
scherfa2 27:23bd03a6a6f6 54 my_pwm2 = 0;
scherfa2 27:23bd03a6a6f6 55 timer2.attach_us(toggleOn2, off_delay2);
scherfa2 27:23bd03a6a6f6 56 }
scherfa2 27:23bd03a6a6f6 57
scherfa2 27:23bd03a6a6f6 58 // p_us = signal period in micro_seconds
scherfa2 27:23bd03a6a6f6 59 // dc = signal duty-cycle (0.0 to 1.0)
scherfa2 27:23bd03a6a6f6 60 void pwm_io2(int p_us, float dc) {
scherfa2 27:23bd03a6a6f6 61 timer2.detach();
scherfa2 27:23bd03a6a6f6 62 if ((p_us == 0) || (dc == 0)) {
scherfa2 27:23bd03a6a6f6 63 my_pwm2 = 0;
scherfa2 27:23bd03a6a6f6 64 return;
scherfa2 27:23bd03a6a6f6 65 }
scherfa2 27:23bd03a6a6f6 66 if (dc >= 1) {
scherfa2 27:23bd03a6a6f6 67 my_pwm2 = 1;
scherfa2 27:23bd03a6a6f6 68 return;
scherfa2 27:23bd03a6a6f6 69 }
scherfa2 27:23bd03a6a6f6 70 on_delay2 = (int)(p_us * dc);
scherfa2 27:23bd03a6a6f6 71 off_delay2 = p_us - on_delay2;
scherfa2 27:23bd03a6a6f6 72 toggleOn2();
scherfa2 27:23bd03a6a6f6 73 }
scherfa2 27:23bd03a6a6f6 74
scherfa2 27:23bd03a6a6f6 75
scherfa2 27:23bd03a6a6f6 76
scherfa2 27:23bd03a6a6f6 77