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.
main.cpp@0:cb68e278da1e, 2011-01-16 (annotated)
- 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?
User | Revision | Line number | New 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 | } |