Publishing for sharing with Harald

Dependencies:   csi059

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?

UserRevisionLine numberNew 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 }