Simon Ford
/
PWMTest
main.cpp@1:4115ae4cbc76, 2011-01-20 (annotated)
- Committer:
- simon
- Date:
- Thu Jan 20 14:15:24 2011 +0000
- Revision:
- 1:4115ae4cbc76
- Parent:
- 0:c795e64e9eb0
A program displaying strange memory behavior
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
simon | 0:c795e64e9eb0 | 1 | #include "mbed.h" |
simon | 0:c795e64e9eb0 | 2 | |
simon | 1:4115ae4cbc76 | 3 | /* |
simon | 1:4115ae4cbc76 | 4 | |
simon | 1:4115ae4cbc76 | 5 | based on http://mbed.org/forum/mbed/topic/1704/ |
simon | 1:4115ae4cbc76 | 6 | |
simon | 1:4115ae4cbc76 | 7 | the Pwm part doesnt work; only led1 comes on |
simon | 1:4115ae4cbc76 | 8 | |
simon | 1:4115ae4cbc76 | 9 | if the printf in the while is removed, or the PwmOut is moved to be static/global, all works fine |
simon | 1:4115ae4cbc76 | 10 | |
simon | 1:4115ae4cbc76 | 11 | seems like a memory problem. |
simon | 1:4115ae4cbc76 | 12 | */ |
simon | 0:c795e64e9eb0 | 13 | |
simon | 0:c795e64e9eb0 | 14 | int main() { |
simon | 1:4115ae4cbc76 | 15 | DigitalOut led1(LED1); |
simon | 1:4115ae4cbc76 | 16 | float f=0.0; |
simon | 0:c795e64e9eb0 | 17 | |
simon | 1:4115ae4cbc76 | 18 | PwmOut display(LED2); |
simon | 0:c795e64e9eb0 | 19 | |
simon | 1:4115ae4cbc76 | 20 | display.period_ms(1); |
simon | 0:c795e64e9eb0 | 21 | |
simon | 1:4115ae4cbc76 | 22 | display=f; |
simon | 1:4115ae4cbc76 | 23 | |
simon | 1:4115ae4cbc76 | 24 | AnalogIn light(p20); |
simon | 1:4115ae4cbc76 | 25 | |
simon | 1:4115ae4cbc76 | 26 | for (int i=0;i<100;i++) |
simon | 1:4115ae4cbc76 | 27 | { |
simon | 1:4115ae4cbc76 | 28 | f=f+0.01; |
simon | 1:4115ae4cbc76 | 29 | display=f; |
simon | 1:4115ae4cbc76 | 30 | wait (0.03); |
simon | 1:4115ae4cbc76 | 31 | } |
simon | 1:4115ae4cbc76 | 32 | printf("%f\n",display.read()); |
simon | 1:4115ae4cbc76 | 33 | led1=1; |
simon | 1:4115ae4cbc76 | 34 | |
simon | 1:4115ae4cbc76 | 35 | while (true) |
simon | 1:4115ae4cbc76 | 36 | { |
simon | 1:4115ae4cbc76 | 37 | double d=light; |
simon | 1:4115ae4cbc76 | 38 | double sq=pow(d,0.6); |
simon | 1:4115ae4cbc76 | 39 | display.write(sq*3); |
simon | 1:4115ae4cbc76 | 40 | |
simon | 1:4115ae4cbc76 | 41 | printf("%f / %f\n",d,sq); |
simon | 1:4115ae4cbc76 | 42 | wait(1); |
simon | 0:c795e64e9eb0 | 43 | } |
simon | 0:c795e64e9eb0 | 44 | } |