Publishing for sharing with Harald

Dependencies:   csi059

Revision:
4:1c48c9fa44fc
Parent:
3:3e8c16b6620c
diff -r 3e8c16b6620c -r 1c48c9fa44fc I2C_read.cpp
--- 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();