Alejandro M
/
TutoElectro_PWM
Simple PWM tutorial using FRDM-KL25Z made by Twistx77 from TutoElectro
main.cpp@1:778a662bafcf, 2015-02-03 (annotated)
- Committer:
- Twistx77
- Date:
- Tue Feb 03 17:10:33 2015 +0000
- Revision:
- 1:778a662bafcf
- Parent:
- 0:647746eea42d
Simple PWM tutorial using FRDM-KL25Z made by Twistx77 from TutoElectro
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Twistx77 | 0:647746eea42d | 1 | #include "mbed.h" |
Twistx77 | 0:647746eea42d | 2 | |
Twistx77 | 1:778a662bafcf | 3 | AnalogOut dac(PTE30); |
Twistx77 | 1:778a662bafcf | 4 | |
Twistx77 | 0:647746eea42d | 5 | Serial pc(USBTX,USBRX); |
Twistx77 | 0:647746eea42d | 6 | |
Twistx77 | 1:778a662bafcf | 7 | uint16_t dacIntValue = 0; |
Twistx77 | 1:778a662bafcf | 8 | |
Twistx77 | 1:778a662bafcf | 9 | float dacValue = 0; |
Twistx77 | 1:778a662bafcf | 10 | float dacVoltage = 0; |
Twistx77 | 0:647746eea42d | 11 | |
Twistx77 | 0:647746eea42d | 12 | void rxInterrupt() |
Twistx77 | 0:647746eea42d | 13 | { |
Twistx77 | 0:647746eea42d | 14 | |
Twistx77 | 0:647746eea42d | 15 | switch(pc.getc()) { |
Twistx77 | 0:647746eea42d | 16 | |
Twistx77 | 0:647746eea42d | 17 | case 'a': |
Twistx77 | 0:647746eea42d | 18 | |
Twistx77 | 1:778a662bafcf | 19 | if(dacValue>0.001){ |
Twistx77 | 1:778a662bafcf | 20 | dacValue = dacValue - 0.001; |
Twistx77 | 1:778a662bafcf | 21 | } |
Twistx77 | 0:647746eea42d | 22 | |
Twistx77 | 1:778a662bafcf | 23 | dacIntValue = (uint16_t)(4095*dacValue); |
Twistx77 | 0:647746eea42d | 24 | |
Twistx77 | 0:647746eea42d | 25 | break; |
Twistx77 | 0:647746eea42d | 26 | |
Twistx77 | 0:647746eea42d | 27 | case 's': |
Twistx77 | 0:647746eea42d | 28 | |
Twistx77 | 1:778a662bafcf | 29 | if(dacValue<1){ |
Twistx77 | 1:778a662bafcf | 30 | dacValue = dacValue + 0.001; |
Twistx77 | 0:647746eea42d | 31 | } |
Twistx77 | 1:778a662bafcf | 32 | |
Twistx77 | 1:778a662bafcf | 33 | dacIntValue = (uint16_t)(4095*dacValue); |
Twistx77 | 0:647746eea42d | 34 | |
Twistx77 | 0:647746eea42d | 35 | break; |
Twistx77 | 0:647746eea42d | 36 | |
Twistx77 | 0:647746eea42d | 37 | case 'f': |
Twistx77 | 1:778a662bafcf | 38 | |
Twistx77 | 1:778a662bafcf | 39 | if(dacIntValue> 1){ |
Twistx77 | 1:778a662bafcf | 40 | dacIntValue = dacIntValue - 1; |
Twistx77 | 0:647746eea42d | 41 | } |
Twistx77 | 1:778a662bafcf | 42 | |
Twistx77 | 1:778a662bafcf | 43 | dacValue = dacIntValue/4095.0; |
Twistx77 | 1:778a662bafcf | 44 | |
Twistx77 | 1:778a662bafcf | 45 | |
Twistx77 | 0:647746eea42d | 46 | break; |
Twistx77 | 0:647746eea42d | 47 | |
Twistx77 | 0:647746eea42d | 48 | |
Twistx77 | 0:647746eea42d | 49 | case 'g': |
Twistx77 | 1:778a662bafcf | 50 | |
Twistx77 | 1:778a662bafcf | 51 | if(dacIntValue< 4095){ |
Twistx77 | 1:778a662bafcf | 52 | dacIntValue = dacIntValue + 1; |
Twistx77 | 0:647746eea42d | 53 | } |
Twistx77 | 1:778a662bafcf | 54 | |
Twistx77 | 1:778a662bafcf | 55 | dacValue = dacIntValue/4095.0; |
Twistx77 | 1:778a662bafcf | 56 | |
Twistx77 | 0:647746eea42d | 57 | break; |
Twistx77 | 0:647746eea42d | 58 | |
Twistx77 | 0:647746eea42d | 59 | default: break; |
Twistx77 | 0:647746eea42d | 60 | } |
Twistx77 | 0:647746eea42d | 61 | |
Twistx77 | 1:778a662bafcf | 62 | dacVoltage = 3.3 * dacValue; |
Twistx77 | 1:778a662bafcf | 63 | |
Twistx77 | 1:778a662bafcf | 64 | dac.write(dacValue); |
Twistx77 | 1:778a662bafcf | 65 | |
Twistx77 | 1:778a662bafcf | 66 | |
Twistx77 | 1:778a662bafcf | 67 | pc.printf("DAC Value: %i, DAC Voltage: %.4f \r\n", dacIntValue, dacVoltage); |
Twistx77 | 0:647746eea42d | 68 | |
Twistx77 | 0:647746eea42d | 69 | } |
Twistx77 | 0:647746eea42d | 70 | |
Twistx77 | 0:647746eea42d | 71 | int main() |
Twistx77 | 0:647746eea42d | 72 | { |
Twistx77 | 0:647746eea42d | 73 | |
Twistx77 | 0:647746eea42d | 74 | pc.baud(115200); |
Twistx77 | 0:647746eea42d | 75 | pc.attach(&rxInterrupt); |
Twistx77 | 0:647746eea42d | 76 | |
Twistx77 | 0:647746eea42d | 77 | while(1); |
Twistx77 | 0:647746eea42d | 78 | } |