malcolm lear
/
PWRMONV01
Programmable Load V1
Fork of THzBiasControl08 by
main.cpp@11:ceabd476b6cd, 2018-03-08 (annotated)
- Committer:
- malcolmlear
- Date:
- Thu Mar 08 17:13:58 2018 +0000
- Revision:
- 11:ceabd476b6cd
- Parent:
- 10:6924c58f3a91
Version 1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
samux | 7:5e693654d5b4 | 1 | #include "mbed.h" |
samux | 7:5e693654d5b4 | 2 | #include "USBSerial.h" |
malcolmlear | 10:6924c58f3a91 | 3 | |
malcolmlear | 11:ceabd476b6cd | 4 | AnalogIn ain(p20); // read load voltage |
malcolmlear | 11:ceabd476b6cd | 5 | AnalogOut aout(p18); // set load current |
malcolmlear | 10:6924c58f3a91 | 6 | USBSerial serial; // USB serial communication |
malcolmlear | 10:6924c58f3a91 | 7 | |
malcolmlear | 11:ceabd476b6cd | 8 | float io = 0; // load current 0 to 1023 |
malcolmlear | 11:ceabd476b6cd | 9 | int vi; // load voltage |
malcolmlear | 10:6924c58f3a91 | 10 | int t, i, e, len; |
malcolmlear | 10:6924c58f3a91 | 11 | char CmdIn[128]; |
malcolmlear | 11:ceabd476b6cd | 12 | char CmdIL[] = "IL="; // set load current |
malcolmlear | 11:ceabd476b6cd | 13 | char CmdVL[] = "VL"; // return load voltage |
malcolmlear | 10:6924c58f3a91 | 14 | char CmdID[] = "ID"; // Identification |
malcolmlear | 10:6924c58f3a91 | 15 | |
malcolmlear | 11:ceabd476b6cd | 16 | void SetCurrent(float d) { |
malcolmlear | 11:ceabd476b6cd | 17 | d = d - (d / 10) - 10; // Bodge it !! |
malcolmlear | 11:ceabd476b6cd | 18 | d = d / 1024; // |
malcolmlear | 11:ceabd476b6cd | 19 | aout = d; |
malcolmlear | 10:6924c58f3a91 | 20 | } |
malcolmlear | 10:6924c58f3a91 | 21 | |
malcolmlear | 10:6924c58f3a91 | 22 | int main() { |
malcolmlear | 11:ceabd476b6cd | 23 | SetCurrent(io); |
samux | 7:5e693654d5b4 | 24 | while(1) |
samux | 7:5e693654d5b4 | 25 | { |
malcolmlear | 10:6924c58f3a91 | 26 | e = 1; // set error |
malcolmlear | 10:6924c58f3a91 | 27 | serial.scanf("%s", CmdIn); |
malcolmlear | 11:ceabd476b6cd | 28 | if (strcmp(CmdIn, CmdVL) == 0) { |
malcolmlear | 11:ceabd476b6cd | 29 | vi = ain * 1024; |
malcolmlear | 11:ceabd476b6cd | 30 | serial.printf("%d\n", vi); |
malcolmlear | 10:6924c58f3a91 | 31 | e = 0; |
malcolmlear | 10:6924c58f3a91 | 32 | } |
malcolmlear | 11:ceabd476b6cd | 33 | if (strncmp(CmdIn, CmdIL, 3) == 0) { |
malcolmlear | 11:ceabd476b6cd | 34 | io = 0; |
malcolmlear | 10:6924c58f3a91 | 35 | len = strlen(CmdIn); |
malcolmlear | 11:ceabd476b6cd | 36 | for(i=3; i<len; i++){ |
malcolmlear | 10:6924c58f3a91 | 37 | t = CmdIn[i] - '0'; |
malcolmlear | 10:6924c58f3a91 | 38 | if ((t >= 0) && (t <= 9)) { |
malcolmlear | 11:ceabd476b6cd | 39 | io = io * 10 + t; |
malcolmlear | 10:6924c58f3a91 | 40 | } |
malcolmlear | 10:6924c58f3a91 | 41 | else { |
malcolmlear | 11:ceabd476b6cd | 42 | io = -1; // on input error make v out of range |
malcolmlear | 10:6924c58f3a91 | 43 | break; |
malcolmlear | 10:6924c58f3a91 | 44 | } |
malcolmlear | 10:6924c58f3a91 | 45 | } |
malcolmlear | 11:ceabd476b6cd | 46 | if ((io >= 0) && (io <= 1023)) { |
malcolmlear | 11:ceabd476b6cd | 47 | SetCurrent(io); |
malcolmlear | 10:6924c58f3a91 | 48 | e = 0; |
malcolmlear | 10:6924c58f3a91 | 49 | } |
malcolmlear | 10:6924c58f3a91 | 50 | } |
malcolmlear | 10:6924c58f3a91 | 51 | if (strcmp(CmdIn, CmdID) == 0) { |
malcolmlear | 11:ceabd476b6cd | 52 | serial.printf( "Load Monitor V1.0\n"); |
malcolmlear | 10:6924c58f3a91 | 53 | e = 0; |
malcolmlear | 10:6924c58f3a91 | 54 | } |
malcolmlear | 10:6924c58f3a91 | 55 | if (e == 1) { |
malcolmlear | 10:6924c58f3a91 | 56 | serial.printf( "Command Error "); |
malcolmlear | 10:6924c58f3a91 | 57 | serial.printf("%s\n", CmdIn); |
malcolmlear | 10:6924c58f3a91 | 58 | } |
malcolmlear | 10:6924c58f3a91 | 59 | else { |
malcolmlear | 10:6924c58f3a91 | 60 | serial.printf( "Command Executed\n"); |
malcolmlear | 10:6924c58f3a91 | 61 | } |
samux | 9:d88699a0905a | 62 | wait(1); |
samux | 7:5e693654d5b4 | 63 | } |
malcolmlear | 10:6924c58f3a91 | 64 | } |