summaryrefslogtreecommitdiff
path: root/ESS1995i2c/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ESS1995i2c/main.cpp')
-rw-r--r--ESS1995i2c/main.cpp52
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);
}
+
}