S R V / Mbed 2 deprecated Nucleo_pwm3

Dependencies:   mbed

Committer:
vjwramasamy
Date:
Sun Jun 28 16:40:20 2015 +0000
Revision:
0:7af46b533435
another

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vjwramasamy 0:7af46b533435 1 #include "mbed.h"
vjwramasamy 0:7af46b533435 2
vjwramasamy 0:7af46b533435 3 Timeout timer;
vjwramasamy 0:7af46b533435 4 DigitalOut my_led(LED1);
vjwramasamy 0:7af46b533435 5 DigitalOut my_pwm(D10); // IO used by pwm_io function
vjwramasamy 0:7af46b533435 6
vjwramasamy 0:7af46b533435 7 int on_delay = 0;
vjwramasamy 0:7af46b533435 8 int off_delay = 0;
vjwramasamy 0:7af46b533435 9
vjwramasamy 0:7af46b533435 10 void toggleOff(void);
vjwramasamy 0:7af46b533435 11
vjwramasamy 0:7af46b533435 12 void toggleOn(void) {
vjwramasamy 0:7af46b533435 13 my_pwm = 1;
vjwramasamy 0:7af46b533435 14 timer.attach_us(toggleOff, on_delay);
vjwramasamy 0:7af46b533435 15 }
vjwramasamy 0:7af46b533435 16
vjwramasamy 0:7af46b533435 17 void toggleOff(void) {
vjwramasamy 0:7af46b533435 18 my_pwm = 0;
vjwramasamy 0:7af46b533435 19 timer.attach_us(toggleOn, off_delay);
vjwramasamy 0:7af46b533435 20 }
vjwramasamy 0:7af46b533435 21
vjwramasamy 0:7af46b533435 22 // p_us = signal period in micro_seconds
vjwramasamy 0:7af46b533435 23 // dc = signal duty-cycle (0.0 to 1.0)
vjwramasamy 0:7af46b533435 24 void pwm_io(int p_us, float dc) {
vjwramasamy 0:7af46b533435 25 timer.detach();
vjwramasamy 0:7af46b533435 26 if ((p_us == 0) || (dc == 0)) {
vjwramasamy 0:7af46b533435 27 my_pwm = 0;
vjwramasamy 0:7af46b533435 28 return;
vjwramasamy 0:7af46b533435 29 }
vjwramasamy 0:7af46b533435 30 if (dc >= 1) {
vjwramasamy 0:7af46b533435 31 my_pwm = 1;
vjwramasamy 0:7af46b533435 32 return;
vjwramasamy 0:7af46b533435 33 }
vjwramasamy 0:7af46b533435 34 on_delay = (int)(p_us * dc);
vjwramasamy 0:7af46b533435 35 off_delay = p_us - on_delay;
vjwramasamy 0:7af46b533435 36 toggleOn();
vjwramasamy 0:7af46b533435 37 }
vjwramasamy 0:7af46b533435 38
vjwramasamy 0:7af46b533435 39 int main() {
vjwramasamy 0:7af46b533435 40
vjwramasamy 0:7af46b533435 41 pwm_io(20000, 0.25); // 20ms - 25%
vjwramasamy 0:7af46b533435 42
vjwramasamy 0:7af46b533435 43 while(1) {
vjwramasamy 0:7af46b533435 44 my_led = !my_led;
vjwramasamy 0:7af46b533435 45 wait(0.5);
vjwramasamy 0:7af46b533435 46 }
vjwramasamy 0:7af46b533435 47 }
vjwramasamy 0:7af46b533435 48