Ashwath M Pavithran
/
csi066_rev0p3_harald_prog
Publishing for sharing with Harald
main.cpp@4:1c48c9fa44fc, 2020-05-22 (annotated)
- Committer:
- CactusSemi
- Date:
- Fri May 22 19:19:45 2020 +0000
- Revision:
- 4:1c48c9fa44fc
- Parent:
- 3:3e8c16b6620c
Publishing for sharing with Harald
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mab5449 | 0:d4b2a035ffe3 | 1 | #include "mbed.h" |
mab5449 | 0:d4b2a035ffe3 | 2 | |
CactusSemi | 2:c7229eac380b | 3 | Serial pc(USBTX, USBRX); |
CactusSemi | 3:3e8c16b6620c | 4 | const int frequ = 50; //unit kHz |
CactusSemi | 3:3e8c16b6620c | 5 | const char dev_addr = 0x00; //fixed |
CactusSemi | 4:1c48c9fa44fc | 6 | const char version[4] = "0.3"; |
mab5449 | 0:d4b2a035ffe3 | 7 | |
CactusSemi | 3:3e8c16b6620c | 8 | void testmode(void); |
CactusSemi | 3:3e8c16b6620c | 9 | void i2c_read(void); |
CactusSemi | 3:3e8c16b6620c | 10 | void i2c_write(void); |
CactusSemi | 3:3e8c16b6620c | 11 | void EasyFuse_prog(void); |
CactusSemi | 3:3e8c16b6620c | 12 | void hot_read(void); |
CactusSemi | 4:1c48c9fa44fc | 13 | void adc_test(void); |
CactusSemi | 3:3e8c16b6620c | 14 | |
CactusSemi | 3:3e8c16b6620c | 15 | void clear_screen() { |
CactusSemi | 3:3e8c16b6620c | 16 | int i=0; |
CactusSemi | 3:3e8c16b6620c | 17 | pc.printf("\033[%dm", 36);//change text color to cyan |
CactusSemi | 3:3e8c16b6620c | 18 | pc.printf("\033[2J");//clears screen |
CactusSemi | 3:3e8c16b6620c | 19 | pc.printf("\033[%d;%dH%c", 1, 1);//locate cursor to the 0,0 |
CactusSemi | 3:3e8c16b6620c | 20 | pc.printf("\n\r"); |
CactusSemi | 3:3e8c16b6620c | 21 | //Print CSI059 |
CactusSemi | 3:3e8c16b6620c | 22 | pc.printf("\n\r \332\304"); |
CactusSemi | 3:3e8c16b6620c | 23 | for ( i = 0; i<46; i++) pc.printf("\304"); |
CactusSemi | 3:3e8c16b6620c | 24 | pc.printf("\304\302"); |
CactusSemi | 3:3e8c16b6620c | 25 | pc.printf("\n\r \263\t\t\t\t\t\t \263"); |
CactusSemi | 4:1c48c9fa44fc | 26 | pc.printf("\n\r \263 \334\334\334\t \334\334\334\t\334\334\334\t \334\334 \t \334\334 \t \334\334 \263"); |
CactusSemi | 4:1c48c9fa44fc | 27 | pc.printf("\n\r \263 \333 \t\333 \t \333 \t\333 \333\t\333 \t\333 \263"); |
CactusSemi | 4:1c48c9fa44fc | 28 | pc.printf("\n\r \263 \333 \t\337\337\334\334\t \333 \t\333 \333\t\333\337\337\334\t\333\337\337\334 \263"); |
CactusSemi | 4:1c48c9fa44fc | 29 | pc.printf("\n\r \263 \333 \t \333\t \333 \t\333 \333\t\333 \333\t\333 \333 \263"); |
CactusSemi | 4:1c48c9fa44fc | 30 | pc.printf("\n\r \263 \337\337\337\t\337\337\337 \t\337\337\337\t \337\337 \t \337\337 \t \337\337 \263"); |
CactusSemi | 3:3e8c16b6620c | 31 | pc.printf("\n\r \263\t\t\t\t\t\t \263\n\r \300\304"); |
CactusSemi | 3:3e8c16b6620c | 32 | for ( i = 0; i<46; i++) pc.printf("\304"); |
CactusSemi | 3:3e8c16b6620c | 33 | pc.printf("\304\331"); |
CactusSemi | 3:3e8c16b6620c | 34 | pc.printf("\n\n\n\r\tPROTYPE EVALUATION S/W"); |
CactusSemi | 3:3e8c16b6620c | 35 | pc.printf("\n\n\r\tVersion : %s",version); |
CactusSemi | 3:3e8c16b6620c | 36 | pc.printf("\n\n\r \315"); |
CactusSemi | 3:3e8c16b6620c | 37 | for ( i = 0; i<80; i++) pc.printf("\315"); |
CactusSemi | 3:3e8c16b6620c | 38 | pc.printf("\n\n\n\r"); |
CactusSemi | 3:3e8c16b6620c | 39 | pc.printf("\033[%dm", 32);//change text color to green |
CactusSemi | 3:3e8c16b6620c | 40 | } |
mab5449 | 0:d4b2a035ffe3 | 41 | |
CactusSemi | 3:3e8c16b6620c | 42 | void print_menu() { |
CactusSemi | 3:3e8c16b6620c | 43 | int i=0; |
CactusSemi | 3:3e8c16b6620c | 44 | pc.printf("\n\n\r\tWhat do you want to do next ?"); |
CactusSemi | 3:3e8c16b6620c | 45 | pc.printf("\033[%dm ", 31);//change text color to red |
CactusSemi | 3:3e8c16b6620c | 46 | pc.printf("\n\n\n\r\t\332\304"); |
CactusSemi | 3:3e8c16b6620c | 47 | for ( i = 0; i<45; i++) pc.printf("\304"); |
CactusSemi | 3:3e8c16b6620c | 48 | pc.printf("\304\302"); |
CactusSemi | 3:3e8c16b6620c | 49 | pc.printf("\n\r\t\263\t\t\t\t\t\t\263"); |
CactusSemi | 3:3e8c16b6620c | 50 | pc.printf("\n\r\t\263 Press 't' : to generate Test-Mode Sequence\t\263"); |
CactusSemi | 3:3e8c16b6620c | 51 | pc.printf("\n\r\t\263\t\t\t\t\t\t\263"); |
CactusSemi | 3:3e8c16b6620c | 52 | pc.printf("\n\r\t\263 Press 'r' : to perform Register Read \t\263"); |
CactusSemi | 3:3e8c16b6620c | 53 | pc.printf("\n\r\t\263\t\t\t\t\t\t\263"); |
CactusSemi | 3:3e8c16b6620c | 54 | pc.printf("\n\r\t\263 Press 'w' : to perform Register Write \t\263"); |
CactusSemi | 3:3e8c16b6620c | 55 | pc.printf("\n\r\t\263\t\t\t\t\t\t\263"); |
CactusSemi | 3:3e8c16b6620c | 56 | pc.printf("\n\r\t\263 Press 'p' : to program Easy Fuse \t\263"); |
CactusSemi | 3:3e8c16b6620c | 57 | pc.printf("\n\r\t\263\t\t\t\t\t\t\263"); |
CactusSemi | 3:3e8c16b6620c | 58 | pc.printf("\n\r\t\263 Press 'h' : to Perform Hot Register Read \t\263"); |
CactusSemi | 3:3e8c16b6620c | 59 | pc.printf("\n\r\t\263\t\t\t\t\t\t\263"); |
CactusSemi | 4:1c48c9fa44fc | 60 | pc.printf("\n\r\t\263 Press 'a' : to Perform ADC tests \t\263"); |
CactusSemi | 4:1c48c9fa44fc | 61 | pc.printf("\n\r\t\263\t\t\t\t\t\t\263"); |
CactusSemi | 3:3e8c16b6620c | 62 | pc.printf("\n\r\t\263 Press 'c' : to clear screen \t\263"); |
CactusSemi | 3:3e8c16b6620c | 63 | pc.printf("\n\r\t\263\t\t\t\t\t\t\263"); |
CactusSemi | 3:3e8c16b6620c | 64 | pc.printf("\n\r\t\300\304"); |
CactusSemi | 3:3e8c16b6620c | 65 | for ( i = 0; i<45; i++) pc.printf("\304"); |
CactusSemi | 3:3e8c16b6620c | 66 | pc.printf("\304\331"); |
CactusSemi | 3:3e8c16b6620c | 67 | pc.printf("\033[%dm", 32);//change text color to green |
CactusSemi | 3:3e8c16b6620c | 68 | pc.printf("\n\n\n\r\tYour Selection : "); |
CactusSemi | 3:3e8c16b6620c | 69 | } |
CactusSemi | 3:3e8c16b6620c | 70 | |
CactusSemi | 3:3e8c16b6620c | 71 | void draw_line() { |
CactusSemi | 3:3e8c16b6620c | 72 | pc.printf("\033[%dm ", 33);//change text color to yellow |
CactusSemi | 3:3e8c16b6620c | 73 | pc.printf("\n\n\n\n\r \315"); |
CactusSemi | 3:3e8c16b6620c | 74 | for ( int i = 0; i<80; i++) pc.printf("\315"); |
CactusSemi | 3:3e8c16b6620c | 75 | pc.printf("\033[%dm ", 32);//change text color to green |
CactusSemi | 3:3e8c16b6620c | 76 | pc.printf("\n\n\r"); |
CactusSemi | 3:3e8c16b6620c | 77 | } |
CactusSemi | 3:3e8c16b6620c | 78 | |
CactusSemi | 3:3e8c16b6620c | 79 | void draw_bar() { |
CactusSemi | 3:3e8c16b6620c | 80 | pc.printf("\033[%dm ", 33);//change text color to yellow |
CactusSemi | 3:3e8c16b6620c | 81 | pc.printf("\n\n\n\n\r \334"); |
CactusSemi | 3:3e8c16b6620c | 82 | for ( int i = 0; i<80; i++) pc.printf("\334"); |
CactusSemi | 3:3e8c16b6620c | 83 | pc.printf("\033[%dm ", 32);//change text color to green |
CactusSemi | 3:3e8c16b6620c | 84 | pc.printf("\n\n\r"); |
CactusSemi | 3:3e8c16b6620c | 85 | } |
CactusSemi | 3:3e8c16b6620c | 86 | |
CactusSemi | 3:3e8c16b6620c | 87 | void clear_screen_ques() { |
CactusSemi | 3:3e8c16b6620c | 88 | int temp; |
CactusSemi | 3:3e8c16b6620c | 89 | pc.printf("\n\n\r\tClear Screen (y/n) : "); |
CactusSemi | 2:c7229eac380b | 90 | temp = 0; |
CactusSemi | 2:c7229eac380b | 91 | while ( temp!='y' && temp!='n') { |
CactusSemi | 2:c7229eac380b | 92 | temp = pc.getc(); |
CactusSemi | 2:c7229eac380b | 93 | } |
CactusSemi | 3:3e8c16b6620c | 94 | if (temp == 'y') clear_screen(); |
CactusSemi | 3:3e8c16b6620c | 95 | else draw_bar(); |
CactusSemi | 3:3e8c16b6620c | 96 | } |
CactusSemi | 3:3e8c16b6620c | 97 | |
CactusSemi | 3:3e8c16b6620c | 98 | char get_selection() { |
CactusSemi | 3:3e8c16b6620c | 99 | char current_char; |
CactusSemi | 3:3e8c16b6620c | 100 | int flag = 0; |
CactusSemi | 3:3e8c16b6620c | 101 | while (flag == 0) { |
CactusSemi | 3:3e8c16b6620c | 102 | current_char = pc.getc(); |
CactusSemi | 4:1c48c9fa44fc | 103 | if ( current_char == 't' || current_char == 'r' || current_char == 'w' || current_char == 'p' || current_char == 'c' || current_char == 'h' || current_char == 'a' ) flag = 1; |
CactusSemi | 3:3e8c16b6620c | 104 | else { |
CactusSemi | 3:3e8c16b6620c | 105 | pc.printf(" \033[%dm Invalid Chracter!! No worries, let us try again \033[%dm",41,40); |
CactusSemi | 3:3e8c16b6620c | 106 | pc.printf("\n\n\r\tYour Selection : "); |
CactusSemi | 3:3e8c16b6620c | 107 | } |
CactusSemi | 2:c7229eac380b | 108 | } |
CactusSemi | 3:3e8c16b6620c | 109 | return current_char; |
CactusSemi | 3:3e8c16b6620c | 110 | } |
CactusSemi | 3:3e8c16b6620c | 111 | |
CactusSemi | 3:3e8c16b6620c | 112 | void print_note() { |
CactusSemi | 3:3e8c16b6620c | 113 | pc.printf("\033[%dm", 34);//change text color to blue |
CactusSemi | 3:3e8c16b6620c | 114 | pc.printf("\n\n\r\tNote : "); |
CactusSemi | 3:3e8c16b6620c | 115 | pc.printf("\n\r\t\304\304\304\304\304\304"); |
CactusSemi | 3:3e8c16b6620c | 116 | pc.printf("\n\n\r\t1. In Tera Term, enable 'Local echo' in Setup -> Terminal"); |
CactusSemi | 3:3e8c16b6620c | 117 | pc.printf("\n\n\r\t2. When not specified, please do not press 'enter' key after typing any entry "); |
CactusSemi | 3:3e8c16b6620c | 118 | pc.printf("\033[%dm", 32);//change text color to green |
CactusSemi | 3:3e8c16b6620c | 119 | draw_line(); |
CactusSemi | 2:c7229eac380b | 120 | } |
CactusSemi | 2:c7229eac380b | 121 | |
mab5449 | 0:d4b2a035ffe3 | 122 | int main() { |
CactusSemi | 3:3e8c16b6620c | 123 | char current_char=0; |
CactusSemi | 3:3e8c16b6620c | 124 | clear_screen(); |
CactusSemi | 3:3e8c16b6620c | 125 | print_note(); |
CactusSemi | 2:c7229eac380b | 126 | while(1) { |
CactusSemi | 3:3e8c16b6620c | 127 | print_menu(); |
CactusSemi | 3:3e8c16b6620c | 128 | current_char = get_selection(); |
CactusSemi | 3:3e8c16b6620c | 129 | draw_line(); |
CactusSemi | 3:3e8c16b6620c | 130 | |
CactusSemi | 3:3e8c16b6620c | 131 | switch (current_char) { |
CactusSemi | 3:3e8c16b6620c | 132 | |
CactusSemi | 3:3e8c16b6620c | 133 | case 't': |
CactusSemi | 3:3e8c16b6620c | 134 | testmode(); |
CactusSemi | 3:3e8c16b6620c | 135 | clear_screen_ques(); |
CactusSemi | 3:3e8c16b6620c | 136 | break; |
CactusSemi | 3:3e8c16b6620c | 137 | |
CactusSemi | 3:3e8c16b6620c | 138 | case 'r': |
CactusSemi | 3:3e8c16b6620c | 139 | i2c_read(); |
CactusSemi | 3:3e8c16b6620c | 140 | clear_screen_ques(); |
CactusSemi | 3:3e8c16b6620c | 141 | break; |
CactusSemi | 3:3e8c16b6620c | 142 | |
CactusSemi | 3:3e8c16b6620c | 143 | case 'w': |
CactusSemi | 3:3e8c16b6620c | 144 | i2c_write(); |
CactusSemi | 3:3e8c16b6620c | 145 | clear_screen_ques(); |
CactusSemi | 3:3e8c16b6620c | 146 | break; |
CactusSemi | 3:3e8c16b6620c | 147 | |
CactusSemi | 3:3e8c16b6620c | 148 | case 'p': |
CactusSemi | 3:3e8c16b6620c | 149 | EasyFuse_prog(); |
CactusSemi | 3:3e8c16b6620c | 150 | clear_screen_ques(); |
CactusSemi | 3:3e8c16b6620c | 151 | break; |
CactusSemi | 3:3e8c16b6620c | 152 | |
CactusSemi | 3:3e8c16b6620c | 153 | case 'h': |
CactusSemi | 3:3e8c16b6620c | 154 | hot_read(); |
CactusSemi | 3:3e8c16b6620c | 155 | clear_screen_ques(); |
CactusSemi | 3:3e8c16b6620c | 156 | break; |
CactusSemi | 3:3e8c16b6620c | 157 | |
CactusSemi | 4:1c48c9fa44fc | 158 | case 'a': |
CactusSemi | 4:1c48c9fa44fc | 159 | adc_test(); |
CactusSemi | 4:1c48c9fa44fc | 160 | clear_screen_ques(); |
CactusSemi | 4:1c48c9fa44fc | 161 | break; |
CactusSemi | 4:1c48c9fa44fc | 162 | |
CactusSemi | 3:3e8c16b6620c | 163 | case 'c': |
CactusSemi | 3:3e8c16b6620c | 164 | clear_screen(); |
CactusSemi | 4:1c48c9fa44fc | 165 | break; |
CactusSemi | 3:3e8c16b6620c | 166 | } |
CactusSemi | 3:3e8c16b6620c | 167 | }//end of while |
mab5449 | 0:d4b2a035ffe3 | 168 | } |