Ashwath M Pavithran
/
csi066_rev0p3_harald_prog
Publishing for sharing with Harald
Diff: I2C_read.cpp
- Revision:
- 4:1c48c9fa44fc
- Parent:
- 3:3e8c16b6620c
--- a/I2C_read.cpp Thu Jun 21 22:11:25 2018 +0000 +++ b/I2C_read.cpp Fri May 22 19:19:45 2020 +0000 @@ -4,6 +4,8 @@ extern int frequ = 50; //unit kHz extern char dev_addr = 0x00; //fixed +char get_byte(int *); //defined in EasyFuse_Prog.cpp + char get_half_byte(int *flag) { char cur_char; cur_char = pc.getc(); @@ -34,7 +36,7 @@ pc.printf("\n\n\n \r\tYahoooo! Lets read a Register"); //Read the number of Registers while (!flag1) { - pc.printf("\n\n\n\r\tEnter the number of registers to read (1 - 16) and hit 'enter' key: "); + pc.printf("\n\n\n\r\tEnter the number of registers to read (1 - 24) and hit 'enter' key: "); temp = '0'; count = 0; while (temp != '\r') { //look for enter key @@ -45,15 +47,15 @@ break; } } - if (count >= 1 && count <= 16 && temp == '\r') flag1 = 1; + if (count >= 1 && count <= 24 && temp == '\r') flag1 = 1; else if (temp == '\r') pc.printf(" \n\r\t\033[%dm Invalid Chracter!! No worries, let us try again \033[%dm",41,40); } Re_enter: flag1 = 0; //Read Pointer to the Register that needs to be read while (!flag1) { - pc.printf("\n\n \r\tEnter Register Address in hex (0 to f): "); - reg_ptr = get_half_byte(&flag1); + pc.printf("\n\n \r\tEnter Register Address in hex (0 to 17): "); + reg_ptr = get_byte(&flag1); if (flag1==0) pc.printf(" \033[%dm Invalid Chracter!! No worries, let us try again \033[%dm",41,40); } @@ -77,14 +79,14 @@ i2c.frequency(frequ*1000); i2c.stop(); //add a stop after hot-read wait_us(10); - for ( ; (count > 0) && (reg_ptr < 0x10); count = count - 1) { + for ( ; (count > 0) && (reg_ptr < 0x18); count = count - 1) { i2c.start(); flag1 = i2c.write(dev_addr); if (flag1 != 1) pc.printf("\n\n\n \r\tNo Ack for dev addr :("); flag1 = i2c.write(reg_ptr); if (flag1 != 1) pc.printf("\n\n \r\tNo Ack reg pointer :("); i2c.stop(); - wait_us(10); + wait_us(300); i2c.start(); flag1 = i2c.write(dev_addr | 0x01); //lsb 1 for read if (flag1 != 1) pc.printf("\n\n \r\tNo Ack for dev addr :("); @@ -94,7 +96,7 @@ i2c.stop(); if (reg_data == 0xff) pc.printf(" |\033[%dm Register read might not be sucessfull \033[%dm ",45,40); reg_ptr = reg_ptr + 1; - wait_us(120); + wait_us(300); } pc.printf("\n\n\n \r\tYeahhh! Register Read Complete\n\n\r"); i2c.~I2C();