Add delay between transmitted bytes to avoid overrun in BNO055.
authorWalter Fetter Lages <w.fetter@ieee.org>
Fri, 1 Feb 2019 07:27:06 +0000 (05:27 -0200)
committerWalter Fetter Lages <w.fetter@ieee.org>
Tue, 5 Feb 2019 13:59:42 +0000 (11:59 -0200)
lib/bno055_tty.c

index 8e08f71..f122b61 100644 (file)
@@ -108,7 +108,10 @@ s8 BNO055_tty_write(u8 dev_addr,u8 reg_addr,u8 *reg_data,u8 cnt)
        for (i=0;i < cnt;i++) array[i+4]=*(reg_data+i);
        
        for(n=0;n < cnt+4;n+=c)
-               if((c=write(dev_addr,array+n,cnt+4-n))==-1) return BNO055_ERROR;
+       {
+               if((c=write(dev_addr,array+n,1))==-1) return BNO055_ERROR;
+               usleep(100);
+       }
 
        for(n=0;n < 2; n+=c)
                if((c=read(dev_addr,array+n,2-n)) <= 0) return BNO055_ERROR;
@@ -132,7 +135,10 @@ s8 BNO055_tty_read(u8 dev_addr,u8 reg_addr,u8 *reg_data,u8 cnt)
        array[3]=cnt;
        
        for(n=0;n < 4;n+=c)
-               if((c=write(dev_addr,array+n,4-n))==-1) return BNO055_ERROR;
+       {
+               if((c=write(dev_addr,array+n,1))==-1) return BNO055_ERROR;
+               usleep(100);
+       }
 
        for(n=0;n < 2; n+=c)
                if((c=read(dev_addr,array+n,2-n)) <= 0) return BNO055_ERROR;