diff options
Diffstat (limited to 'ESS1995i2c/main.cpp')
| -rw-r--r-- | ESS1995i2c/main.cpp | 52 |
1 files changed, 34 insertions, 18 deletions
diff --git a/ESS1995i2c/main.cpp b/ESS1995i2c/main.cpp index efb8e65..1d02052 100644 --- a/ESS1995i2c/main.cpp +++ b/ESS1995i2c/main.cpp @@ -8,21 +8,21 @@ i2c library seems to require a 'register address' - -ESS1995 doesn't need this? it certainly doesn't define a register in control byte 1 of write message + + 130112 - updated for arduino 1.0 - compiles but doesn't work - but it is Friday 13th */ + #include "electic.h" -extern "C" void __cxa_pure_virtual() -{ - cli(); - for (;;); -} int main(){ init(); //-- init Arduino library - delay, PWM setup messes with timers, millis(), micros() etc don't work without it + Wire.begin(); + //Wire.pullup pinMode(CS,OUTPUT); @@ -30,34 +30,45 @@ int main(){ setupBlueTooth(); -/* + pinMode(DATA_NEW,INPUT); - pinMode(SCLK,OUTPUT); + // pinMode(SCLK,OUTPUT); + pinMode(BTC,INPUT); pinMode(OUTPUT1, OUTPUT); pinMode(OUTPUT2, OUTPUT); + digitalWrite(OUTPUT2,HIGH); -*/ + digitalWrite(CS,HIGH); //select DMM - uint8_t WB1,WB2,WB3,WB4; -/* + //uint8_t WB1,WB2,WB3,WB4; + + + + + uint8_t WB1 = (CB_SHBP << 7) | (CB_function << 3) | (CB_VARCrange); uint8_t WB2 = (CB_BUZfreq << 5) | (CB_ADCrate << 3) | (CB_FREQrange); uint8_t WB3 = (CB_ACmode << 7) | (CB_EXTdiode << 4) | (CB_DCfs << 3) | (CB_LPFbw << 1) | (CB_FREQinprest); uint8_t WB4 = (CB_PEAKmode << 7) | (CB_PCALmode << 6) | (CB_OPconf << 2) | (CB_ADPext); -*/ + + + + Wire.beginTransmission(WRITE_ID); - Wire.send(WB1); - Wire.send(WB2); - Wire.send(WB3); - Wire.send(WB4); + Wire.write(WB1); + Wire.write(WB2); + Wire.write(WB3); + Wire.write(WB4); //default reads Wire.endTransmission(); + + uint16_t delayMillis=250; //send 1st write to initiate readings - not necessary - what is default mode? @@ -108,16 +119,18 @@ writeDMM(); //writeDMM(); while(1) { - if (digitalRead(DATA_NEW)==HIGH){ //DMM is ready to send data + //if (digitalRead(DATA_NEW)==HIGH){ //DMM is ready to send data Wire.beginTransmission(READ_ID); if (digitalRead(DATA_NEW)==LOW){ //ID confirmed for (int i=0;i<10;i++) { - data[i] = Wire.receive(); + data[i] = Wire.read(); } Wire.endTransmission(); //parse data DB_STATUS=data[0]; + + /* DB_ASIGN=data[0]>>7; DB_BSIGN=(data[0]>>6) & 0b01; @@ -131,6 +144,8 @@ writeDMM(); DB_STA=((data[1]>>3) & 0b10)|((data[0]>>1) & 0b01); DB_F_FIN=(data[1]>>3) & 0b01; */ + + DB_D0=(((uint32_t)( data[1] & 0b111))<<16)|(((uint32_t)data[2])<<8)|data[3]; DB_D1=(((uint16_t)data[4])<<2)|((data[5] & 0b11000000)>>6); DB_D2=(((uint32_t)( data[5] & 0b111111))<<13)|(((uint32_t) data[6] )<<5)|(((uint32_t)( data[7] & 0b11111000))>>3); @@ -173,13 +188,14 @@ writeDMM(); } } } - } + //} delay(delayMillis); digitalWrite(OUTPUT1,LOW); digitalWrite(OUTPUT2,LOW); //delay(delayMillis); } + } |
