Spleisser Grundstrucktur

Dependencies:   mbed mbed-rtos X_NUCLEO_IHM02A1

Papierkorb/PWM.cpp

Committer:
hagenrap
Date:
2019-04-22
Revision:
34:0c111add045e
Parent:
33:de144094bdd1

File content as of revision 34:0c111add045e:

#include "mbed.h"
#include "PWM.h"

Timeout timer;
Timeout timer2;

DigitalOut my_pwm(D10); // IO used by pwm_io function
DigitalOut my_pwm2(D5);


int on_delay = 0;
int off_delay = 0;
int on_delay2 = 0;
int off_delay2 = 0;

void toggleOff(void);

void toggleOn(void) {
    my_pwm = 1;
    timer.attach_us(toggleOff, on_delay);
}

void toggleOff(void) {
    my_pwm = 0;
    timer.attach_us(toggleOn, off_delay);
}

// p_us = signal period in micro_seconds
// dc   = signal duty-cycle (0.0 to 1.0)
void pwm_io(int p_us, float dc) {
    timer.detach();
    if ((p_us == 0) || (dc == 0)) {
        my_pwm = 0;
        return;
    }
    if (dc >= 1) {
        my_pwm = 1;
        return;
    }
    on_delay = (int)(p_us * dc);
    off_delay = p_us - on_delay;
    toggleOn();
}

////PMW2
void toggleOff2(void);

void toggleOn2(void) {
    my_pwm2 = 1;
    timer2.attach_us(toggleOff2, on_delay2);
}

void toggleOff2(void) {
    my_pwm2 = 0;
    timer2.attach_us(toggleOn2, off_delay2);
}

// p_us = signal period in micro_seconds
// dc   = signal duty-cycle (0.0 to 1.0)
void pwm_io2(int p_us, float dc) {
    timer2.detach();
    if ((p_us == 0) || (dc == 0)) {
        my_pwm2 = 0;
        return;
    }
    if (dc >= 1) {
        my_pwm2 = 1;
        return;
    }
    on_delay2 = (int)(p_us * dc);
    off_delay2 = p_us - on_delay2;
    toggleOn2();
}