Maxim DS1683 Total-Elapsed -Time and Event Recorder with Alarm

Dependents:   testDS1683

Revision:
1:8fa5400054bd
Parent:
0:7c0469e71fa2
Child:
2:f262ba460525
--- a/DS1683.cpp	Wed Jan 18 23:26:24 2017 +0000
+++ b/DS1683.cpp	Thu Jan 19 02:45:15 2017 +0000
@@ -98,7 +98,8 @@
 {
     int result ;
     result = readRegs(addr, data, len) ;
-    wait(0.01) ;
+    wait_ms(1000) ;
+//    wait(0.01) ;
     return( result ) ;
 }
 
@@ -112,6 +113,7 @@
         buf[i+1] = data[i] ;
     }
     ack = writeRegs(buf, len+1) ;
+//    wait_ms(1000) ;
     wait(0.01) ;
     delete buf ;
     return( ack ) ;
@@ -128,6 +130,7 @@
 int DS1683::writeRegs(uint8_t * data, int len) {
     int ack ;
     m_i2c.stop() ;
+//    wait_ms(1000) ;
     wait(0.01) ;
     ack = m_i2c.write(m_addr, (char *)data, len);
     m_i2c.stop() ;
@@ -161,20 +164,11 @@
 
 void DS1683::writeReg16(int addr, uint16_t value) 
 {
-#if 0
     uint8_t data[3] ;
     data[0] = addr ;
     data[1] = value & 0xFF ;
     data[2] = (value >> 8) & 0xFF ;
     writeRegs(data, 3) ;
-#endif
-    uint8_t data[2] ;
-    data[0] = addr ;
-    data[1] = value & 0xFF ;
-    writeRegs(data, 2) ;
-    data[0] = addr+1 ;
-    data[1] = (value >> 8) & 0xFF ;
-    writeRegs(data, 2) ;
 }
 
 uint32_t DS1683::readReg32(int addr) 
@@ -191,7 +185,6 @@
 
 void DS1683::writeReg32(int addr, uint32_t value) 
 {
-#if 0
     uint8_t data[5] ;
     data[0] = addr ;
     data[1] = value & 0xFF ;
@@ -199,28 +192,6 @@
     data[3] = (value >> 16) & 0xFF ;
     data[4] = (value >> 24) & 0xFF ;
     writeRegs(data, 5) ;
-#endif
-    uint8_t data[2] ;
-    data[0] = addr ;
-    data[1] = value & 0xFF ;
-printf("mem[%02X] = %02x\n", data[0], data[1]) ;
-//    writeRegs(data, 2) ;
-    writeReg8(data[0], data[1]) ;
-    data[0] = addr + 1;
-    data[1] = (value >> 8) & 0xFF ;
-printf("mem[%02X] = %02x\n", data[0], data[1]) ;
-//    writeRegs(data, 2) ;
-        writeReg8(data[0], data[1]) ;
-    data[0] = addr +2 ;
-    data[1] = (value >> 16) & 0xFF ;
-printf("mem[%02X] = %02x\n", data[0], data[1]) ;
-//    writeRegs(data, 2) ;
-        writeReg8(data[0], data[1]) ;
-    data[0] = addr + 3;
-    data[1] = (value >> 24) & 0xFF ;
-printf("mem[%02X] = %02x\n", data[0], data[1]) ;
-//    writeRegs(data, 2) ;
-        writeReg8(data[0], data[1]) ;
 }
 
 void DS1683::setConfig(uint8_t conf) 
@@ -257,14 +228,22 @@
 {
     return(readReg16(REG_EVENT)) ;
 }
-    
+
+void DS1683::clearRegs(void)
+{
+    writeReg16(REG_ECAL,  0x0000) ;
+    writeReg16(REG_EVENT, 0x0000) ;
+    writeReg32(REG_ETCAL, 0x00000000) ;
+    writeReg32(REG_ETC,   0x00000000) ;
+    writeReg8(REG_CONFIG, 0x00) ;
+}
+
 void DS1683::dumpRegs(void)
 {
-    uint8_t data[5] ;
-//    printf("m_addr = 0x%02X ", m_addr) ;
-data[0] = 0 ;
-    readRegs(REG_COMMAND, data, 1) ;
-    printf("Command: 0x%02X ", data[0]) ;
+ //   uint8_t data[5] ;
+//data[0] = 0 ;
+//    readRegs(REG_COMMAND, data, 1) ;
+    printf("Command: 0x%02X ", readReg8(REG_COMMAND)) ;
     printf("Status:  0x%02X ", getStatus()) ;
     printf("Config:  0x%02X\n", getConfig()) ;
 }