Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed LPC11U35_MCP41HV51-503EST
main.cpp@2:5e6613f149d4, 2020-08-24 (annotated)
- Committer:
- ryousato
- Date:
- Mon Aug 24 08:49:14 2020 +0000
- Revision:
- 2:5e6613f149d4
- Parent:
- 1:88f0bc1e1aff
- Child:
- 3:d55ebd20d750
printf (count) ver
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ryousato | 0:df1e1f84ded8 | 1 | ////////////////////////////////////////////////// |
ryousato | 0:df1e1f84ded8 | 2 | // Include Files |
ryousato | 0:df1e1f84ded8 | 3 | #include "mbed.h" |
ryousato | 0:df1e1f84ded8 | 4 | #include "LPC11Uxx.h" |
ryousato | 0:df1e1f84ded8 | 5 | #include "USBSerial.h" |
ryousato | 0:df1e1f84ded8 | 6 | #include "stdio.h" |
ryousato | 0:df1e1f84ded8 | 7 | #include "math.h" |
ryousato | 0:df1e1f84ded8 | 8 | ////////////////////////////////////////////////// |
ryousato | 0:df1e1f84ded8 | 9 | |
ryousato | 0:df1e1f84ded8 | 10 | //Configure the PC Serial Port for CDC USB |
ryousato | 0:df1e1f84ded8 | 11 | USBSerial serial; |
ryousato | 0:df1e1f84ded8 | 12 | Serial device(P0_19,P0_18); |
ryousato | 0:df1e1f84ded8 | 13 | |
ryousato | 0:df1e1f84ded8 | 14 | //Pin Defines |
ryousato | 0:df1e1f84ded8 | 15 | DigitalOut myled(LED1); |
ryousato | 0:df1e1f84ded8 | 16 | |
ryousato | 1:88f0bc1e1aff | 17 | char moji[32]; //入力文字列 |
ryousato | 1:88f0bc1e1aff | 18 | int count = 0; //文字数カウンタ |
ryousato | 1:88f0bc1e1aff | 19 | |
ryousato | 0:df1e1f84ded8 | 20 | DigitalOut coilEN1(P0_1); |
ryousato | 0:df1e1f84ded8 | 21 | DigitalOut coilEN2(P0_2); |
ryousato | 0:df1e1f84ded8 | 22 | DigitalOut coilEN3(P0_3); |
ryousato | 0:df1e1f84ded8 | 23 | DigitalOut coilEN4(P0_4); |
ryousato | 0:df1e1f84ded8 | 24 | DigitalOut coilEN5(P0_5); |
ryousato | 0:df1e1f84ded8 | 25 | DigitalOut coilEN6(P0_20); |
ryousato | 0:df1e1f84ded8 | 26 | DigitalOut coilEN7(P1_19); |
ryousato | 0:df1e1f84ded8 | 27 | |
ryousato | 0:df1e1f84ded8 | 28 | DigitalOut ENn(P0_16); |
ryousato | 0:df1e1f84ded8 | 29 | DigitalOut addr0(P0_17); |
ryousato | 0:df1e1f84ded8 | 30 | DigitalOut addr1(P0_18); |
ryousato | 0:df1e1f84ded8 | 31 | DigitalOut addr2(P0_19); |
ryousato | 0:df1e1f84ded8 | 32 | |
ryousato | 0:df1e1f84ded8 | 33 | DigitalOut SCT_AMP(P0_10); |
ryousato | 0:df1e1f84ded8 | 34 | DigitalOut WLATn(P0_23); |
ryousato | 0:df1e1f84ded8 | 35 | DigitalOut SHDNn(P1_15); |
ryousato | 0:df1e1f84ded8 | 36 | |
ryousato | 0:df1e1f84ded8 | 37 | AnalogIn AD_TRANS_IN(P0_11); |
ryousato | 0:df1e1f84ded8 | 38 | AnalogIn AD_CT_IN(P0_12); |
ryousato | 0:df1e1f84ded8 | 39 | |
ryousato | 1:88f0bc1e1aff | 40 | SPI spi(P0_9, P0_8, P0_6); |
ryousato | 2:5e6613f149d4 | 41 | |
ryousato | 1:88f0bc1e1aff | 42 | void setup() { |
ryousato | 2:5e6613f149d4 | 43 | spi.format(16,0); |
ryousato | 2:5e6613f149d4 | 44 | wait(1); |
ryousato | 2:5e6613f149d4 | 45 | spi.frequency(1000000); |
ryousato | 1:88f0bc1e1aff | 46 | device.baud(115200); |
ryousato | 0:df1e1f84ded8 | 47 | |
ryousato | 0:df1e1f84ded8 | 48 | coilEN1 = 0; |
ryousato | 0:df1e1f84ded8 | 49 | coilEN2 = 0; |
ryousato | 0:df1e1f84ded8 | 50 | coilEN3 = 0; |
ryousato | 0:df1e1f84ded8 | 51 | coilEN4 = 0; |
ryousato | 0:df1e1f84ded8 | 52 | coilEN5 = 0; |
ryousato | 0:df1e1f84ded8 | 53 | coilEN6 = 0; |
ryousato | 0:df1e1f84ded8 | 54 | coilEN7 = 0; |
ryousato | 0:df1e1f84ded8 | 55 | |
ryousato | 0:df1e1f84ded8 | 56 | ENn = 1; |
ryousato | 0:df1e1f84ded8 | 57 | addr0 = 0; |
ryousato | 0:df1e1f84ded8 | 58 | addr1 = 0; |
ryousato | 0:df1e1f84ded8 | 59 | addr2 = 0; |
ryousato | 0:df1e1f84ded8 | 60 | |
ryousato | 0:df1e1f84ded8 | 61 | SCT_AMP = 0; |
ryousato | 0:df1e1f84ded8 | 62 | WLATn = 1; |
ryousato | 0:df1e1f84ded8 | 63 | SHDNn = 0; |
ryousato | 2:5e6613f149d4 | 64 | } |
ryousato | 0:df1e1f84ded8 | 65 | |
ryousato | 2:5e6613f149d4 | 66 | void serialstart(){ |
ryousato | 0:df1e1f84ded8 | 67 | wait(0.5); |
ryousato | 0:df1e1f84ded8 | 68 | serial.printf("Hello World!\r\n"); |
ryousato | 2:5e6613f149d4 | 69 | wait(0.5); |
ryousato | 0:df1e1f84ded8 | 70 | } |
ryousato | 0:df1e1f84ded8 | 71 | |
ryousato | 0:df1e1f84ded8 | 72 | void helpwrite(){ |
ryousato | 0:df1e1f84ded8 | 73 | serial.printf("\r\ncmd"); |
ryousato | 0:df1e1f84ded8 | 74 | serial.printf("\r\nhelp"); |
ryousato | 0:df1e1f84ded8 | 75 | serial.printf("\r\nOK"); |
ryousato | 0:df1e1f84ded8 | 76 | } |
ryousato | 0:df1e1f84ded8 | 77 | |
ryousato | 2:5e6613f149d4 | 78 | void TCON(){ |
ryousato | 2:5e6613f149d4 | 79 | int whoami = spi.write(0x40FF); |
ryousato | 2:5e6613f149d4 | 80 | serial.printf("\r\nWHOAMI register = 0x%X\r\n", whoami); |
ryousato | 2:5e6613f149d4 | 81 | } |
ryousato | 2:5e6613f149d4 | 82 | |
ryousato | 2:5e6613f149d4 | 83 | void TCONread(){ |
ryousato | 2:5e6613f149d4 | 84 | int whoami = spi.write(0x4C00); |
ryousato | 2:5e6613f149d4 | 85 | serial.printf("\r\nWHOAMI register = 0x%X\r\n", whoami); |
ryousato | 2:5e6613f149d4 | 86 | } |
ryousato | 2:5e6613f149d4 | 87 | |
ryousato | 2:5e6613f149d4 | 88 | void read(){ |
ryousato | 2:5e6613f149d4 | 89 | int whoami = spi.write(0x0C00); |
ryousato | 2:5e6613f149d4 | 90 | serial.printf("\r\nWHOAMI register = 0x%X\r\n", whoami); |
ryousato | 2:5e6613f149d4 | 91 | } |
ryousato | 2:5e6613f149d4 | 92 | |
ryousato | 2:5e6613f149d4 | 93 | void write(){ |
ryousato | 2:5e6613f149d4 | 94 | int whoami = spi.write(0x00FF); |
ryousato | 2:5e6613f149d4 | 95 | serial.printf("\r\nWHOAMI register = 0x%X\r\n", whoami); |
ryousato | 2:5e6613f149d4 | 96 | } |
ryousato | 2:5e6613f149d4 | 97 | |
ryousato | 2:5e6613f149d4 | 98 | void WLAT(){ |
ryousato | 2:5e6613f149d4 | 99 | WLATn = 0; |
ryousato | 2:5e6613f149d4 | 100 | wait(0.1); |
ryousato | 2:5e6613f149d4 | 101 | WLATn = 1; |
ryousato | 2:5e6613f149d4 | 102 | } |
ryousato | 2:5e6613f149d4 | 103 | |
ryousato | 2:5e6613f149d4 | 104 | void CSn(){ |
ryousato | 2:5e6613f149d4 | 105 | ENn = 0; |
ryousato | 2:5e6613f149d4 | 106 | } |
ryousato | 2:5e6613f149d4 | 107 | |
ryousato | 2:5e6613f149d4 | 108 | void CSp(){ |
ryousato | 2:5e6613f149d4 | 109 | ENn = 1; |
ryousato | 2:5e6613f149d4 | 110 | } |
ryousato | 2:5e6613f149d4 | 111 | |
ryousato | 0:df1e1f84ded8 | 112 | void serial_inout(){ |
ryousato | 0:df1e1f84ded8 | 113 | if(serial.readable()) { // 受信確認 |
ryousato | 0:df1e1f84ded8 | 114 | moji[count] = serial.getc(); //キーボード入力文字を1文字ずつmojiに代入 |
ryousato | 0:df1e1f84ded8 | 115 | serial.printf("%c(%d)", moji[count],count); //シリアル出力表示 |
ryousato | 0:df1e1f84ded8 | 116 | |
ryousato | 0:df1e1f84ded8 | 117 | if(count == 31 ){ // ①文字数が既定の個数になった場合 |
ryousato | 0:df1e1f84ded8 | 118 | moji[31] = '\0'; // 末尾に終端文字を入れる |
ryousato | 0:df1e1f84ded8 | 119 | count = 0; // 文字カウンタをリセット |
ryousato | 0:df1e1f84ded8 | 120 | serial.printf("\r\nERR!\r\n"); |
ryousato | 0:df1e1f84ded8 | 121 | } |
ryousato | 0:df1e1f84ded8 | 122 | |
ryousato | 1:88f0bc1e1aff | 123 | else if(moji[0] == '\n'){count = 0;} |
ryousato | 0:df1e1f84ded8 | 124 | |
ryousato | 0:df1e1f84ded8 | 125 | else if((moji[count] == '\r')) { // ②CRを受信した場合 |
ryousato | 0:df1e1f84ded8 | 126 | moji[count] = '\0'; // 末尾に終端文字を入れる |
ryousato | 0:df1e1f84ded8 | 127 | count = 0; // 文字カウンタをリセット |
ryousato | 0:df1e1f84ded8 | 128 | if(strcmp(moji, "cmd") == 0){helpwrite();} |
ryousato | 0:df1e1f84ded8 | 129 | else if(strcmp(moji, "help") == 0){helpwrite();} |
ryousato | 0:df1e1f84ded8 | 130 | else if(strcmp(moji, "?") == 0){helpwrite();} |
ryousato | 0:df1e1f84ded8 | 131 | else if(strcmp(moji, "initial") == 0){helpwrite();} |
ryousato | 0:df1e1f84ded8 | 132 | else if(strcmp(moji, "VON") == 0){helpwrite();} |
ryousato | 0:df1e1f84ded8 | 133 | else if(strcmp(moji, "VOFF") == 0){helpwrite();} |
ryousato | 0:df1e1f84ded8 | 134 | else if(strcmp(moji, "50Hz") == 0){helpwrite();} |
ryousato | 0:df1e1f84ded8 | 135 | else if(strcmp(moji, "60Hz") == 0){helpwrite();} |
ryousato | 0:df1e1f84ded8 | 136 | else if(strcmp(moji, "trans_adj") == 0){helpwrite();} |
ryousato | 0:df1e1f84ded8 | 137 | else if(strcmp(moji, "ct1_adj") == 0){helpwrite();} |
ryousato | 0:df1e1f84ded8 | 138 | else if(strcmp(moji, "ct2_adj") == 0){helpwrite();} |
ryousato | 2:5e6613f149d4 | 139 | else if(strcmp(moji, "TCON") == 0){TCON();} |
ryousato | 2:5e6613f149d4 | 140 | else if(strcmp(moji, "TCONread") == 0){TCONread();} |
ryousato | 2:5e6613f149d4 | 141 | else if(strcmp(moji, "read") == 0){read();} |
ryousato | 2:5e6613f149d4 | 142 | else if(strcmp(moji, "write") == 0){write();} |
ryousato | 2:5e6613f149d4 | 143 | else if(strcmp(moji, "WLAT") == 0){WLAT();} |
ryousato | 2:5e6613f149d4 | 144 | else serial.printf("\r\nNG"); |
ryousato | 0:df1e1f84ded8 | 145 | } |
ryousato | 0:df1e1f84ded8 | 146 | |
ryousato | 0:df1e1f84ded8 | 147 | else count++; // 文字カウンタに1加算 |
ryousato | 0:df1e1f84ded8 | 148 | } |
ryousato | 0:df1e1f84ded8 | 149 | } |
ryousato | 0:df1e1f84ded8 | 150 | |
ryousato | 0:df1e1f84ded8 | 151 | ////////////////////////////////////////////////// |
ryousato | 0:df1e1f84ded8 | 152 | // main Program |
ryousato | 0:df1e1f84ded8 | 153 | int main() { |
ryousato | 0:df1e1f84ded8 | 154 | setup(); |
ryousato | 2:5e6613f149d4 | 155 | serialstart(); |
ryousato | 2:5e6613f149d4 | 156 | |
ryousato | 0:df1e1f84ded8 | 157 | myled = 1; |
ryousato | 0:df1e1f84ded8 | 158 | |
ryousato | 0:df1e1f84ded8 | 159 | while(1){ |
ryousato | 0:df1e1f84ded8 | 160 | serial_inout(); |
ryousato | 0:df1e1f84ded8 | 161 | } |
ryousato | 0:df1e1f84ded8 | 162 | } |
ryousato | 0:df1e1f84ded8 | 163 | ////////////////////////////////////////////////// |
ryousato | 0:df1e1f84ded8 | 164 | |
ryousato | 0:df1e1f84ded8 | 165 |