MAX30208 I2C Terminal Interface
Dependencies: max32630fthr USBDevice
Diff: MAX30208_I2C_Terminal_Interface_03.cpp
- Revision:
- 17:65cd58826416
- Parent:
- 16:5354dfc07268
--- a/MAX30208_I2C_Terminal_Interface_03.cpp Mon May 13 17:36:19 2019 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,672 +0,0 @@ -#include "mbed.h" -#include "max32630fthr.h" -#include "USBSerial.h" - -//#define OT07_ADDRESS 0xA0 // OTO7 Base Address - -#define DEBUG 1 // 0->off, 1-> on, debug prints to daplink port - -//OT07 Registers -#define OT07_STATUS 0x00 // OT07 status regiter -#define OT07_INT_EN 0x01 // OT07 Interrupt Enable -#define OT07_FIFO_W 0x04 // OT07 FIFO Write Pointer -#define OT07_FIFO_R 0x05 // OT07 FIFO Read Pointer -#define OT07_FIFO_OF 0x06 // OT07 FIFO Overflow Counter -#define OT07_FIFO_COUNT 0x07 // OT07 FIFO Data Count -#define OT07_FIFO_DATA 0x08 // OT07 FIFO Data -#define OT07_FIFO_CNFG1 0x09 // OT07 FIFO Configuration 1 (FIFO_A_FULL) -#define OT07_FIFO_CNFG2 0x0A // OT07 FIFO Configuration 2 -#define OT07_SYS 0x0C // OT07 System Configuration -#define OT07_ALARM_HIGH_MSB 0x10 // OT07 Alarm High MSB -#define OT07_ALARM_HIGH_LSB 0x11 // OT07 Alarm High LSB -#define OT07_ALARM_LOW_MSB 0x12 // OT07 Alarm Low MSB -#define OT07_ALARM_LOW_LSB 0x13 // OT07 Alarm LOW LSB -#define OT07_ADC_SETUP 0x14 // OT07 Temp Seneor Setup (ADC_RES[7:6]) & Convert Temperature [0] -#define OT07_GPIO_SETUP 0x20 // OT07 GPIO Setup, sets GPIO modes -#define OT07_GPIO_CTRL 0x21 // OT07 GPIO control -#define OT07_ROM_ID 0x30 // OT07 ROM_ID address of LSB? - -#define ID_LENGTH 8 // Rom ID length in bytes -#define BS 8 // ASCII Back Space -#define CR 13 // ASCII Carriage Return - -//global variable - -struct OT07_struct { - char rom_id[ID_LENGTH]; // device 8 byte ROM ID - char I2C_address; // I2C addess, based on GPIO0 and GPIO1 at power up - - }; - - - bool sample_flag; // global flag indicating its time to take next sample. - -//******************** init Feather Boared Hardware *********************** - -MAX32630FTHR pegasus(MAX32630FTHR::VIO_1V8); - -//Configure serial ports -Serial db(P2_1, P2_0); // Hardware serial debug port over DAPLink, 9600 defult baudrate -USBSerial pc; // Virtual serial port over USB - -// I2C setup -I2C i2c(P3_4,P3_5); // P3_4 -> I2C1_SDA, P3_5-> I2C1_SCL - -//Timer setup -Ticker timer_1; // timer for blinking led heartbeat and setting tick_flag -Ticker timer_2; // timer for controling sample rate. - -//LED blink setup -DigitalOut rLED(LED1); -DigitalOut gLED(LED2); -DigitalOut bLED(LED3); - -// ***************************************************************************** -// LED_blink_callback() attached to timer1 interupt -// blinks Feather board led and sets tick_flag true -// ***************************************************************************** - -void LED_blink_callback(){ // LED Heart beat - - bLED=!bLED; //toggle Green LED - -} - - -// ***************************************************************************** -// set_sample_flag_callback() sets sample_flag = true// -// ***************************************************************************** - -void set_sample_flag_callback(){ //set sample flag interrupt - sample_flag = true; - -} - -// ***************************************************************************** -// OT07_write_register(char, char, char) writes single byte to OT07 -// char I2C address -// char OT07 register address -// char data byte to be writen -// returns 0 on success ACK, 1 on NACK -// ***************************************************************************** - -int OT07_write_register(char I2C_add, char reg_add, char byte){ - char data[2]; - int error; - data[0] = reg_add; - data[1] = byte; - error = i2c.write(I2C_add,data,2); - //if(DEBUG)db.printf("wr[%02X %02X %d]\r\n", data[0], data[1], error); - return error; - -} - -/// **************************************************************************** -// OT07_write_register(char, char, char *, int) writes multiple bytes to OT07 -// char I2C address -// char OT07 register address -// char * data vector of bytes to be written -// int number of bytes to write -// returns 0 on success ACK, 1 on NACK -// ***************************************************************************** - -int OT07_write_register(char I2C_add, char reg_add, char *bytes, int n){ - int i; - //set start address - char data[16]; - int error; - data[0] = reg_add; - for(i=1;i<=n;i++){ - data[i] = bytes[i-1]; - } - error = i2c.write(I2C_add,data,n+1); // send n bytes of data - - return error; -} - -// ***************************************************************************** -// OT07_read_register(char, char, char *, int) writes single byte to OT07 -// char I2C address -// char OT07 register address -// char * data vector for read bytes to be stored in -// int number of bytes to read -// returns 0 on success, 1 on fail -// ***************************************************************************** - -int OT07_read_register(char I2C_add, char reg_add, char *bytes, int n){ - int error; - error = i2c.write(I2C_add,®_add,1,1); - if(error)return error; - error = i2c.read(I2C_add,bytes,n); - //if(DEBUG)db.printf("rr e[%d]\r\n",error); - return error; -} - -// ***************************************************************************** -// search_I2C_bus(OT07_struct *) searches I2C address 0xA0, 0xA2, 0xA4 and 0xA6 -// OT07_struct * structure array to holds I2C address and rom_ids -// returns number of devices found -// ***************************************************************************** - -int search_I2C_bus(OT07_struct OT07[]){ - char data[16]; - char I2C_add; - //char GPIO; - int error; - int device_count = 0; - int i; - int j; - for(i = 0;i<4;i++){ - I2C_add = 0xA0 + i*2; - error = OT07_read_register(I2C_add,0xff,data,1); - //if(DEBUG)db.printf("i2c[%02X] e[%d]\n\r",I2C_add,error); - if(error == 0){ - if(data[0] == 0x30){ - - OT07_read_register(I2C_add,OT07_GPIO_CTRL,data,1); //read GPIO location address - //if(DEBUG)db.printf("Found device at address 0x%02X\n\rGPIO location %02X dc[%d]\r\n",I2C_add,data[0],device_count); - OT07[device_count].I2C_address = I2C_add; - - OT07_read_register(I2C_add,OT07_ROM_ID,data,8); - for(j=7;j>=0;j--){ - OT07[device_count].rom_id[j] = data[j]; - - } - device_count++; - } - } - - }//end for(i...) - return device_count; -}// end search_I2C() - - - -// ***************************************************************************** -// convert_temperature(char) sends convert command to OT07 device -// char I2C address -// ***************************************************************************** - -void convert_temperature(char I2C_add){ // set convert bit to start conversion - - char data[2]; - - //read ADC_SETUP register 0x14 - OT07_read_register(I2C_add,OT07_ADC_SETUP,data,1); - - //mask convert register value with 0x01 and write back register 0x14 - OT07_write_register(I2C_add,OT07_ADC_SETUP, data[0]|0x01); -} - -//****************************************************************************** -// get_temperature(char) read temperature from OT07 device FIFO register -// char I2C address -// returns double temperature in oC -//****************************************************************************** - -double get_temperature(char I2C_add){ - char data[2]; - double T; - int count; - - OT07_read_register(I2C_add,OT07_FIFO_DATA,data,2); // Read temperature from FIFO, 2 bytes - //if(DEBUG)db.printf("get_temperature -- FIFO[%02X %02X]\r\n",data[0],data[1]); - //calculate temperture from data - count = (int)(data[0]*256 + data[1]); - if (count >= 32768)count = count - 65536; // 2s comp - T = (double)count*0.005; - - return T; -} - -//****************************************************************************** -// print_device_list(OT07_struct *, int) prints list of devices found -// OT07_struct* pointer to OT07 device structure array -// int number of devices i array -// returns 0 -//****************************************************************************** - -int print_device_list(OT07_struct OT07[], int n){ - int i; - int j; - for(j=0;j<n;j++){ // loop thru n devices - pc.printf("%02d, ",j); // print device index - pc.printf("%02X, ",OT07[j].I2C_address); // print I2C address - pc.printf("%02X, ",OT07[j].rom_id[7]); // print CRC - for(i=6;i>=1;i--){ - pc.printf("%02X",OT07[j].rom_id[i]); // printf ROM ID - } - pc.printf(", %02X",OT07[j].rom_id[0]); // print family code - pc.printf("\r\n"); - } - return 0; -} - - -//****************************************************************************** -// main() -//****************************************************************************** - -int main() -{ - - OT07_struct OT07[4]; // structure that holds I2C address and ROM_ID - - char data[130]; // char vector used for passing data to read and write register calls - char s[128]; // temp char array - int device_count = 0; // number of I2C devices found by search_I2C_bus() - int i; // loop counter - int j; // loop counter - double T[4]; // holds temperature reading - - // i/o variables for serial com port - char rx_buff[128]; // comport input buffer - int rx_index; // rx_buffer pointer - char c; // command type character - char str[16]; // temp string - int n; // argument count - int arg0; // device argument - int arg1; // argumnet 1 - int arg2; // argument 2 - - int num_bytes; // calculated number of byte to read - - int period = 1000; // sample period in ms - int sample_count = 0; // sample index for log - int delay = 25; - - int i2c_freq = 1; // i2c clock frequency 0->100000kHz, 1->400000kHz - - bool log_flag = false; // true -> log temperature to serial port, false -> do not log - bool ext_convert_flag = true; - int echo = 1; // 0 -> echo off, 1 -> echo terminal input and use verbose output - - - int L3out = 1800; // Sets mV for L3OUT (3V3 on DS2484 Feather Wing board) 1800 to 3600 mV allowed. - - -//************* init ticker timer callbacks **************** - timer_1.attach(&LED_blink_callback,1.0); //start ticker interupt, once per sec. - -//********************* init I2C port *********************** - i2c.frequency(i2c_freq); //set I2C clock 0-->100kHz, 1-->400kHz - - -//******************* init VDD (L3OUT) ********************** - if(DEBUG)db.printf("set LDO3 to %dmV\r\n",L3out); - pegasus.max14690.ldo3SetVoltage(L3out); // sets VDD and I2C to L3out - -//********* echo firmware info to both serial ports ********* - wait(1); //wait 1 sec for USB serial port to init. - sprintf(s,"--- MAX30208 I2C Terminal Interface V0.3 ---\r\n"); - if(DEBUG)db.printf("%s",s); - pc.printf("%s",s); - pc.printf("VDD = %dmV, I2C clock = %dkHz\r\n",L3out, 100*(i2c_freq*3 + 1)); - -//********************** init LEDs ************************* - rLED = LED_OFF; - gLED = LED_ON; - bLED = LED_OFF; - -//******************** Find I2C devices on bus ************** - pc.printf("<search for devices>\r\n"); - device_count = search_I2C_bus(OT07); - pc.printf("<device, I2C Add, CRC, ROM ID, Family>\r\n"); - print_device_list(OT07, device_count); - - - //************* init rx input buffer index ****************** - rx_index = 0; - sample_flag = false; - - //************** start main loop *************************** - if(DEBUG)db.printf("start Main loop\r\n"); - - while(1) { // start main loop, take data if log flag true, check for input, repeat - - //wait(0.2); - if(log_flag == true){ - if(sample_flag == true){// take sample. - sample_flag = false; - convert_temperature(OT07[0].I2C_address); - wait_ms(delay); - T[0] = get_temperature(OT07[0].I2C_address); - pc.printf("%5d, %7.3f\r\n",sample_count++,T[0]); - } - }// end if(log_flag == true) - - // ---------------------------------------------------------------------------- - // test for charater input for USB com port - // ---------------------------------------------------------------------------- - - //test if PC sent some charaters - while(pc.readable()){ //characters in buffer, get them - rx_buff[rx_index] = pc.getc(); - if(echo)pc.putc(rx_buff[rx_index]); //echo character - //pc.printf("<[%02x] %c i[%d]>",rx_buff[i],rx_buff[i],i); //echo charater - - - if(rx_buff[rx_index] == CR){ - //if(DEBUG)db.printf("\r\n"); - if(echo)pc.printf("\r\n"); - rx_buff[++rx_index] = 0; - if(DEBUG)db.printf("%s",rx_buff); - //pc.printf("%s\r\n",rx_buff); - rx_index = -1; // because i++ at end of while give i=0 on next loop - arg0 = 0; - arg1 = 0; - arg2 = 0; - - n = sscanf(rx_buff, " %c %d %x %x", &c, &arg0, &arg1, &arg2); - - //if(DEBUG)db.printf("c[%c] d[%d] a1[%x] a2[%x] n[%d]\r\n",c,arg0,arg1,arg2,n); //echo values read in - //process input - if(n > 0){//got input so process it - switch(c){ - - case 'b': - case 'B': //Set ADC_Res 0->13, 1->14, 2->15, 3->16 bits - if(n==3){ // apply to selected devices on bus - //db.printf("n=3"); - if((arg1 >= 0)&(arg1 < 4)){ //check input range 0 to 3 - if(echo)pc.printf("<set ADC_RES>\r\n"); - data[0] = (char)(arg1 << 6); // shift 2 lsb's to 2 msb's - OT07_write_register(OT07[arg0].I2C_address, OT07_ADC_SETUP, data, 1); - if(echo){ - OT07_read_register(OT07[arg0].I2C_address, OT07_ADC_SETUP, data, 1); - pc.printf("<device[%02d] set to %dbits 0x14[%02X]>\r\n",arg0,arg1+13,data[0]); - } - } - } - if(n == 4){ // apply to devices (device) through (arg1) - //db.printf("n=4"); - sprintf(str,"%x",arg1); //convert arg1 input as hex to decimal i.e. 0x10 becomes 10 dec, not 16 dec - sscanf(str,"%d",&arg1); - if((arg2 >= 0)&(arg2 < 4)){ //check input range 0 to 3 - if(echo)pc.printf("<set ADC_RES>\r\n"); - for(j=arg0;j<=arg1;j++){ - data[0] = (char)(arg2 << 6); // shift 2 lsb's to 2 msb's - OT07_write_register(OT07[j].I2C_address, OT07_ADC_SETUP, data, 1); - if(echo){ - OT07_read_register(OT07[j].I2C_address, OT07_ADC_SETUP, data, 1); - pc.printf("device[%02d] add[%02X] data[%02X] crc[%02X %02X]\r\n",j,OT07_ADC_SETUP,data[0],data[1],data[2]); - } - } - }// end if(agr2 >= ...) - }// end if(n == 4) - break; - - case 'd': - case 'D': // Turn echo ON/OFF - if(n == 2){ - delay = arg0; - if(delay < 5)delay = 5; - if(delay > 1000)delay = 1000; - } - if(echo)pc.printf("<delay = %dmS>\r\n",delay); - break; - - case 'e': - case 'E': // Turn echo ON/OFF - if(arg0 == 0){ - echo = 0; - }else{ - echo = 1; - pc.printf("<echo on>\r\n"); - } - break; - - case 'f': - case 'F': // change I2C Frequency - if(n == 2){ - if((arg0 == 0)||(arg0 == 1)){ - i2c_freq = arg0; - i2c.frequency(i2c_freq); - } - } - if(echo)pc.printf("<I2C Frequency = %dkHz>\r\n",100*(i2c_freq*3 +1)); - break; - - case 'h': - case 'H': - case '?': //print command list - - - pc.printf("Command Help\r\n"); - pc.printf("\r\n"); - pc.printf("b d [end_d] n Set ADC_Res, n = 2msb's of reg 0x14\r\n"); - pc.printf(" d, device index (int)\r\n"); - pc.printf(" end_d, if included applies ADC_res to deviecs d through end_d (int)\r\n"); - pc.printf(" n, ADC resolution index (int)\r\n"); - pc.printf(" 0 -> 13 bits\r\n"); - pc.printf(" 1 -> 14 bits\r\n"); - pc.printf(" 2 -> 15 bits\r\n"); - pc.printf(" 3 -> 16 bits\r\n"); - pc.printf("\r\n"); - - pc.printf("d ms Set delay time for read command after convert command in ms\r\n"); - pc.printf(" ms, Delay time in ms (int) \r\n"); - pc.printf(" 5ms through 10000ms allowed \r\n"); - pc.printf("\r\n"); - - pc.printf("e n Terminal command echo on/off\r\n"); - pc.printf(" n, Echo ON/OFF flag (int)\n\r"); - pc.printf(" 0 -> echo off\r\n"); - pc.printf(" 1 -> echo on\r\n"); - pc.printf("\r\n"); - - pc.printf("f n I2C Clock Frequency set\r\n"); - pc.printf(" n, Frequency Index (int)\n\r"); - pc.printf(" 0 -> 100kHz\r\n"); - pc.printf(" 1 -> 400kHz on\r\n"); - pc.printf("\r\n"); - - pc.printf("h,? Prints Command Help\r\n"); - pc.printf("\r\n"); - - pc.printf("l [ms] Start / stop interval logging output to terminal\r\n"); - pc.printf(" ms, if included sets logging interval in ms before starting (int)\r\n"); - pc.printf(" ms = 0 turns off loging\r\n"); - pc.printf("\r\n"); - - pc.printf("p ms Set delay time for read command after convert command in ms\r\n"); - pc.printf(" ms, Convert period in ms (int) \r\n"); - pc.printf(" 5ms through 10000ms allowed \r\n"); - pc.printf("\r\n"); - - - pc.printf("r d add [end_add] Read device regester\r\n"); - pc.printf(" d, device index (int)\r\n"); - pc.printf(" add, address to read (hex)\r\n"); - pc.printf(" end_add, if included read all registers from add to end_add (hex)\r\n"); - pc.printf("\r\n"); - pc.printf("s Search I2C bus for all attached devices\r\n"); - pc.printf("\r\n"); - pc.printf("t d [end_d] Send convert temperature command to device and read temperature\r\n"); - pc.printf(" d, device index (int)\r\n"); - pc.printf(" end_d, if included sends skip ROM convert command (int)\r\n"); - pc.printf(" and reads back from device d through end_d\r\n"); - pc.printf("\r\n"); - pc.printf("w d add data Write to device register\r\n"); - pc.printf(" d, device index (int)\r\n"); - pc.printf(" add, write address (hex)\r\n"); - pc.printf(" data, data to write (hex)\r\n"); - pc.printf("\r\n"); - pc.printf("v mV Set VDD of device\r\n"); - pc.printf(" mV, VDD in mV (int)\r\n"); - pc.printf(" 1800mV to 3600mV allowed in 100mV steps"); - pc.printf("\r\n"); - - break; - - - case 'l': - case 'L': // Toggle logging - if((n==2)&&(arg0 == 0)){ //force stop - if(echo)pc.printf("<stop logging [by 0]>\r\n"); - log_flag = false; - timer_2.detach(); - sample_flag = false; - }else{ - - if(n == 2){ - period = arg0; - if(period < 5)period = 5; - if(period > 60000)period = 60000; - } - if(log_flag == false){ //start logging - if(echo)pc.printf("<start logging, period = %dms>\r\n",period); - sample_count = 0; - if(period > 1000){// dont wait for first tick - sample_flag = true; - }else{ - sample_flag = false; - } - log_flag = true; - timer_2.attach_us(&set_sample_flag_callback,period*1000); //start ticker interupt. - - }else{ // n != 2 and log_flag = true - if(echo)pc.printf("<stop logging>\r\n"); - log_flag = false; - timer_2.detach(); - sample_flag = false; - } - }// end else if((n==2)&&(arg0==0)) - break; - - case 'p': - case 'P': //Set sample period in ms - - if(n == 2){ - period = arg0; - if(period < 5)period = 5; - if(period > 60000)period = 60000; - } - if(log_flag == true){ //update sample_flag interrupt period - timer_2.detach(); // stop current timer - if(echo)pc.printf("<period = %dmS>\r\n",period); - timer_2.attach_us(&set_sample_flag_callback,period*1000); // restart with new period - }else{ - if(echo)pc.printf("<set sampling period, %dmS>\r\n",period); - } - break; - - - case 'r': - case 'R': //read register "r device radd.start radd.end" - if(n==3){ //read single register from selected device - OT07_read_register(OT07[arg0].I2C_address,arg1,data,1); - if(echo){ - pc.printf("device[%02d] add[%02X] data[%02X] \r\n",arg0,arg1,data[0]); - }else{ - pc.printf("%02d, %02X, %02X\r\n",arg0,arg1,data[0]); - } - } - if(n==4){ //read a range of regesters from selected device - num_bytes = arg2-arg1 + 1; // calculate number of bytes to read - if (num_bytes < 1) num_bytes = 1; // if arg2 <= arg 1 just read arg1 address. - OT07_read_register(OT07[arg0].I2C_address,arg1,data,num_bytes); - for(i=0;i<num_bytes;i++){ - if(echo){ - pc.printf("\r\ndevice[%02d] add[%02X] data[%02X]",arg0,arg1+i,data[i]); - }else{ - pc.printf("%02d, %02X, %02X\r\n",arg0,arg1+i,data[i]); - } - } - if(echo)pc.printf("\r\n"); - } - break; - - case 's': - case 'S': - // ****************** search for I2C devices on bus ***************** - - device_count = search_I2C_bus(OT07); - if(echo){ - pc.printf("<search I2C bus>\r\n"); - pc.printf("<count>\r\n"); - pc.printf("<device, I2C Add, CRC, ROM ID, Family>\r\n"); - } - pc.printf("%2d\r\n",device_count); - print_device_list(OT07,device_count); - - break; - - case 'T': - case 't': - if(n == 2){//get temperatures from selected device - - convert_temperature(OT07[arg0].I2C_address); //send OW convert selected device - wait(0.02); //wait 20 ms for convert temperature to complete - T[arg0] = get_temperature(OT07[arg0].I2C_address); - if(echo)pc.printf("<temperature>\r\n"); - pc.printf("%02d, %7.3f\r\n",arg0, T[arg0]); - } - - if(n == 3){ // "t 1 3" get temperature for devices 1 thru 3 - sprintf(str,"%x",arg1); //convert arg1 input as hex to decimal i.e. 0x10 becomes 10 dec - sscanf(str,"%d",&arg1); - - for(j=arg0;j<=arg1;j++){ - convert_temperature(OT07[j].I2C_address); //send convert to all devices - wait(0.02); //wait 20ms for convert temperature to complete - T[j] = get_temperature(OT07[j].I2C_address); - } - - if(echo)pc.printf("<device, temperature>\r\n"); - for(j=arg0;j<=arg1;j++){ - pc.printf("%02d, %7.3f\r\n",j,T[j]); - } - } - - break; - case 'w': - case 'W': //write register - //data[0] = arg2; - OT07_write_register(OT07[arg0].I2C_address,arg1, arg2); - if(echo)pc.printf("write -- add[%02X] data[%02X]\r\n",arg1,arg2); - - break; - - - case 'v': - case 'V': //Set MAX32630FTHR I/O Voltage 0 -> 1.8V, 1 -> 3.3V - - if(n == 2){ //set LDO3 - L3out = arg0; - if(L3out < 1600)L3out = 1600; // check for valid mV range - if(L3out > 3600)L3out = 3600; - L3out = ((L3out+50)/100)*100; // round to 100mV steps - pegasus.max14690.ldo3SetVoltage(L3out); // set ldo3 to L3out - if(echo)pc.printf("<Set ldo3 (VDD) to %4dmV, ",L3out); - if(DEBUG)db.printf("<ldo3 to %4dmV>\r\n",L3out); - - if(L3out >= 1900){ //set VIO to 3300mV - // set VIO to 3v3 - pegasus.vddioh(P3_4, pegasus.VIO_3V3); // SDA use LDO2 - pegasus.vddioh(P3_5, pegasus.VIO_3V3); // SCL use LDO2 - pegasus.vddioh(P5_3, pegasus.VIO_3V3); // GPIO0 use LDO2 - pegasus.vddioh(P5_6, pegasus.VIO_3V3); // GPIO1 use LDO2 - if(echo)pc.printf(" Set VIO=3V3>\r\n"); - }else{//set VIO to 1V8 - pegasus.vddioh(P3_4, pegasus.VIO_1V8); // SDA use 1V8 buck - pegasus.vddioh(P3_5, pegasus.VIO_1V8); // SCL use 1V8 buck - pegasus.vddioh(P5_3, pegasus.VIO_1V8); // GPIO0 use 1V8 buck - pegasus.vddioh(P5_6, pegasus.VIO_1V8); // GPIO1 use 1V8 buck - if(echo)pc.printf(" Set VIO=1V8>\r\n"); - } - }else{ - if(echo)pc.printf("<ldo3 (VDD) %4dmV>\r\n",L3out); - } - break; - - }//end switch(c) - }//if(n>0) - }//end if(CR) - if(rx_buff[rx_index] == BS){ //backspace received, back up buffer pointer - if(rx_index>0)rx_index--; //remove last char from buffer if not at start. - }else rx_index++; - }//end while(pc.redable()) - - }//end while(1) Main Loop -}// end_Main \ No newline at end of file