Source_File

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   Fabian_Test

Committer:
scherfa2
Date:
Wed Apr 03 07:35:42 2019 +0000
Revision:
25:4a1a82428d3e
Source_File

Who changed what in which revision?

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