This program demonstrates an unexplained interaction between the PWM channels and the mbed LEDs when running in PWM mode. The first time it ramps PWM 1 - 4 up, there is no interaction. Thereafter, there is some interaction between the signals that is not understood.

Dependencies:   mbed

Committer:
WiredHome
Date:
Sun Jan 16 03:34:37 2011 +0000
Revision:
0:cb68e278da1e
Original Version that demonstrates an unexplained interaction.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
WiredHome 0:cb68e278da1e 1 #include "mbed.h"
WiredHome 0:cb68e278da1e 2
WiredHome 0:cb68e278da1e 3 void PWM_Tests(void) {
WiredHome 0:cb68e278da1e 4 int l;
WiredHome 0:cb68e278da1e 5 int i;
WiredHome 0:cb68e278da1e 6 float f;
WiredHome 0:cb68e278da1e 7 struct {
WiredHome 0:cb68e278da1e 8 const char * name;
WiredHome 0:cb68e278da1e 9 PwmOut pwm;
WiredHome 0:cb68e278da1e 10 } Pwms[] = {
WiredHome 0:cb68e278da1e 11 {"PWM 1", p21},
WiredHome 0:cb68e278da1e 12 {"PWM 2", p22},
WiredHome 0:cb68e278da1e 13 {"PWM 3", p23},
WiredHome 0:cb68e278da1e 14 {"PWM 4", p24},
WiredHome 0:cb68e278da1e 15 {"PWM 5", p25},
WiredHome 0:cb68e278da1e 16 {"PWM 6", p26},
WiredHome 0:cb68e278da1e 17 {"Led 1", LED1},
WiredHome 0:cb68e278da1e 18 {"Led 2", LED2},
WiredHome 0:cb68e278da1e 19 {"Led 3", LED3},
WiredHome 0:cb68e278da1e 20 {"Led 4", LED4}
WiredHome 0:cb68e278da1e 21 };
WiredHome 0:cb68e278da1e 22 const int numPwms = sizeof(Pwms) / sizeof(Pwms[0]);
WiredHome 0:cb68e278da1e 23
WiredHome 0:cb68e278da1e 24 printf("PWM Test:\r\n");
WiredHome 0:cb68e278da1e 25 printf(" Unexplained interaction\r\n"
WiredHome 0:cb68e278da1e 26 " PWM 3 and Led 4,\r\n"
WiredHome 0:cb68e278da1e 27 " PWM 4 and Led 3,\r\n"
WiredHome 0:cb68e278da1e 28 " PWM 5 and Led 2,\r\n"
WiredHome 0:cb68e278da1e 29 " PWM 6 and Led 1\r\n");
WiredHome 0:cb68e278da1e 30 for (l=0; l<numPwms; l++) {
WiredHome 0:cb68e278da1e 31 printf(" Ramp %s [%d] PWM 5 times\r\n", Pwms[l].name, l);
WiredHome 0:cb68e278da1e 32 for (i=0; i<5; i++) {
WiredHome 0:cb68e278da1e 33 for (f=0.0; f<=1.0; f+= 0.1) {
WiredHome 0:cb68e278da1e 34 Pwms[l].pwm = f;
WiredHome 0:cb68e278da1e 35 wait(0.1);
WiredHome 0:cb68e278da1e 36 }
WiredHome 0:cb68e278da1e 37 }
WiredHome 0:cb68e278da1e 38 Pwms[l].pwm = 0; // off when done
WiredHome 0:cb68e278da1e 39 }
WiredHome 0:cb68e278da1e 40 }
WiredHome 0:cb68e278da1e 41
WiredHome 0:cb68e278da1e 42 int main() {
WiredHome 0:cb68e278da1e 43 while(1) {
WiredHome 0:cb68e278da1e 44 PWM_Tests();
WiredHome 0:cb68e278da1e 45 wait(5.0);
WiredHome 0:cb68e278da1e 46 }
WiredHome 0:cb68e278da1e 47 }