From 00fb5feb58a9fe7d7caf6377bee1b7d5391fc092 Mon Sep 17 00:00:00 2001 From: Adminius Date: Wed, 11 Mar 2020 21:31:23 +0100 Subject: [PATCH] Beta 4b update + FlashAsEEPROM --- .../OneWire_Temperature_SingleSensor_1.1.ino} | 35 +++++++++------- ..._Temperature_SingleSensor_1.1.kdevice.xml} | 0 .../OneWire_functions.h} | 5 +-- ...ce_OneWire_Temeprature_SingleSensor_1_1.h} | 2 +- .../loop.h} | 0 .../mi.h | 31 +++++++------- .../setup.h} | 7 ++-- .../Temperature_RH_Sensor_HTU21D_1.1.ino} | 16 +++++-- ...perature_RH_Sensor_HTU21D_1.1.kdevice.xml} | 0 .../kdevice_Temp_RH.h | 2 +- .../loop.h | 0 .../mi.h | 42 +++++++++++++++---- .../setup.h | 4 +- 13 files changed, 89 insertions(+), 55 deletions(-) rename Multi-Interface/{OneWire_Temperature_SingleSensor_1.0/OneWire_Temperature_SingleSensor_1.0.ino => OneWire_Temperature_SingleSensor_1.1/OneWire_Temperature_SingleSensor_1.1.ino} (65%) rename Multi-Interface/{OneWire_Temperature_SingleSensor_1.0/OneWire_Temperature_SingleSensor_1.0.kdevice.xml => OneWire_Temperature_SingleSensor_1.1/OneWire_Temperature_SingleSensor_1.1.kdevice.xml} (100%) rename Multi-Interface/{OneWire_Temperature_SingleSensor_1.0/OneWire_functions.ino => OneWire_Temperature_SingleSensor_1.1/OneWire_functions.h} (86%) rename Multi-Interface/{OneWire_Temperature_SingleSensor_1.0/kdevice_OneWire_Temeprature_SingleSensor_1_0.h => OneWire_Temperature_SingleSensor_1.1/kdevice_OneWire_Temeprature_SingleSensor_1_1.h} (92%) rename Multi-Interface/{OneWire_Temperature_SingleSensor_1.0/loop.ino => OneWire_Temperature_SingleSensor_1.1/loop.h} (100%) rename Multi-Interface/{OneWire_Temperature_SingleSensor_1.0 => OneWire_Temperature_SingleSensor_1.1}/mi.h (83%) rename Multi-Interface/{OneWire_Temperature_SingleSensor_1.0/setup.ino => OneWire_Temperature_SingleSensor_1.1/setup.h} (91%) rename Multi-Interface/{Temperature_RH_Sensor_HTU21D_1.0/Temperature_RH_Sensor_HTU21D_1.0.ino => Temperature_RH_Sensor_HTU21D_1.1/Temperature_RH_Sensor_HTU21D_1.1.ino} (80%) rename Multi-Interface/{Temperature_RH_Sensor_HTU21D_1.0/Temperature_RH_Sensor_HTU21D_1.0.kdevice.xml => Temperature_RH_Sensor_HTU21D_1.1/Temperature_RH_Sensor_HTU21D_1.1.kdevice.xml} (100%) rename Multi-Interface/{Temperature_RH_Sensor_HTU21D_1.0 => Temperature_RH_Sensor_HTU21D_1.1}/kdevice_Temp_RH.h (95%) rename Multi-Interface/{Temperature_RH_Sensor_HTU21D_1.0 => Temperature_RH_Sensor_HTU21D_1.1}/loop.h (100%) rename Multi-Interface/{Temperature_RH_Sensor_HTU21D_1.0 => Temperature_RH_Sensor_HTU21D_1.1}/mi.h (83%) rename Multi-Interface/{Temperature_RH_Sensor_HTU21D_1.0 => Temperature_RH_Sensor_HTU21D_1.1}/setup.h (96%) diff --git a/Multi-Interface/OneWire_Temperature_SingleSensor_1.0/OneWire_Temperature_SingleSensor_1.0.ino b/Multi-Interface/OneWire_Temperature_SingleSensor_1.1/OneWire_Temperature_SingleSensor_1.1.ino similarity index 65% rename from Multi-Interface/OneWire_Temperature_SingleSensor_1.0/OneWire_Temperature_SingleSensor_1.0.ino rename to Multi-Interface/OneWire_Temperature_SingleSensor_1.1/OneWire_Temperature_SingleSensor_1.1.ino index a22f7a9..4534076 100644 --- a/Multi-Interface/OneWire_Temperature_SingleSensor_1.0/OneWire_Temperature_SingleSensor_1.0.ino +++ b/Multi-Interface/OneWire_Temperature_SingleSensor_1.1/OneWire_Temperature_SingleSensor_1.1.ino @@ -1,24 +1,32 @@ /* --------------------------------------------------------------------------------------------- -OneWire Temperature SingleSensor 1.0 (DS18B20, MAX31820) (Single sensor) +OneWire Temperature SingleSensor 1.1 (DS18B20, MAX31820) (Single sensor) Hardware/Firmware/Sketch/kdevice.xml by E.Burkowski / e.burkowski@konnekting.de, GPL Licensed -Compatible with: KONNEKTING Device Library 1.0.0 beta 4 +Compatible with: KONNEKTING Device Library 1.0.0 beta 4b ------------------------------------------------------------------------------------------------*/ +/* this libraries are required (click on link and download with library manager): +KONNEKTING Device Library: http://librarymanager/All#Konnekting +FlashStorage: http://librarymanager/All#FlashStorage +OneWire: http://librarymanager/All#OneWire +DallasTemperature: http://librarymanager/All#DallasTemperature +*/ + #include // include device related configuration code, created by "KONNEKTING CodeGenerator" -#include "kdevice_OneWire_Temeprature_SingleSensor_1_0.h" +#include "kdevice_OneWire_Temeprature_SingleSensor_1_1.h" #include "mi.h" -#include //https://github.com/PaulStoffregen/OneWire -#include //https://github.com/milesburton/Arduino-Temperature-Control-Library +#include +#include +#include // ################################################ // ### DEBUG CONFIGURATION // ################################################ -#define KDEBUG // comment this line to disable DEBUG mode +//#define KDEBUG // comment this line to disable DEBUG mode #ifdef KDEBUG #include #define DEBUGSERIAL SerialUSB @@ -27,18 +35,13 @@ Compatible with: KONNEKTING Device Library 1.0.0 beta 4 // ################################################ // ### IO Configuration // ################################################ -//OneWire on pin D3 -#define ONE_WIRE OWD3 -#define ONE_WIRE_PULLUP OWD3PullUp - -//OneWire on pin D4 -//#define ONE_WIRE OWD4 -//#define ONE_WIRE_PULLUP OWD4PullUp +//OneWire on pin SDA (pin with approx 4k7 should be used) +#define ONE_WIRE_PIN SDA #define TEMPERATURE_PRECISION 10 //9: 0.5°, 10: 0.25°, 11: 0.125°, 12: 0.0625° -OneWire oneWire(ONE_WIRE); +OneWire oneWire(ONE_WIRE_PIN); DallasTemperature sensors(&oneWire);/* Dallas Temperature Library */ unsigned long owDelay = 750; @@ -61,6 +64,10 @@ int16_t limitTempMin = 0; uint8_t valueTempMax = 255; int16_t limitTempMax = 0; +#include "OneWire_functions.h" +#include "setup.h" +#include "loop.h" + // Callback function to handle com objects updates void knxEvents(byte index) { diff --git a/Multi-Interface/OneWire_Temperature_SingleSensor_1.0/OneWire_Temperature_SingleSensor_1.0.kdevice.xml b/Multi-Interface/OneWire_Temperature_SingleSensor_1.1/OneWire_Temperature_SingleSensor_1.1.kdevice.xml similarity index 100% rename from Multi-Interface/OneWire_Temperature_SingleSensor_1.0/OneWire_Temperature_SingleSensor_1.0.kdevice.xml rename to Multi-Interface/OneWire_Temperature_SingleSensor_1.1/OneWire_Temperature_SingleSensor_1.1.kdevice.xml diff --git a/Multi-Interface/OneWire_Temperature_SingleSensor_1.0/OneWire_functions.ino b/Multi-Interface/OneWire_Temperature_SingleSensor_1.1/OneWire_functions.h similarity index 86% rename from Multi-Interface/OneWire_Temperature_SingleSensor_1.0/OneWire_functions.ino rename to Multi-Interface/OneWire_Temperature_SingleSensor_1.1/OneWire_functions.h index 44c643b..319359d 100644 --- a/Multi-Interface/OneWire_Temperature_SingleSensor_1.0/OneWire_functions.ino +++ b/Multi-Interface/OneWire_Temperature_SingleSensor_1.1/OneWire_functions.h @@ -1,6 +1,4 @@ void configureOW(){ - pinMode(ONE_WIRE_PULLUP, OUTPUT); - digitalWrite(ONE_WIRE_PULLUP, HIGH); //enable OneWire PullUp #ifdef KDEBUG Debug.println(F("Searching for sensors...")); #endif @@ -23,7 +21,7 @@ float getCurrentTemp(uint8_t index){ currTemp = sensors.getTempCByIndex(index); long end = millis(); #ifdef KDEBUG - Debug.println(F("currentTemp: %3.2f %cC time: %d ms"), currTemp, 0x00B0, (end-start)); + Debug.println(F("currentTemp: %3.2f °C time: %d ms"), currTemp, 0x00B0, (end-start)); #endif return currTemp; } @@ -40,4 +38,3 @@ void limitReached(float comVal, float comValMin, float comValMax, int minObj, in } } }; - diff --git a/Multi-Interface/OneWire_Temperature_SingleSensor_1.0/kdevice_OneWire_Temeprature_SingleSensor_1_0.h b/Multi-Interface/OneWire_Temperature_SingleSensor_1.1/kdevice_OneWire_Temeprature_SingleSensor_1_1.h similarity index 92% rename from Multi-Interface/OneWire_Temperature_SingleSensor_1.0/kdevice_OneWire_Temeprature_SingleSensor_1_0.h rename to Multi-Interface/OneWire_Temperature_SingleSensor_1.1/kdevice_OneWire_Temeprature_SingleSensor_1_1.h index cc08ed6..34b8c78 100644 --- a/Multi-Interface/OneWire_Temperature_SingleSensor_1.0/kdevice_OneWire_Temeprature_SingleSensor_1_0.h +++ b/Multi-Interface/OneWire_Temperature_SingleSensor_1.1/kdevice_OneWire_Temeprature_SingleSensor_1_1.h @@ -31,4 +31,4 @@ byte KonnektingDevice::_paramSizeList[] = { /* Index 6 - tempMaxValue */ PARAM_UINT8, /* Index 7 - tempMaxLimit */ PARAM_INT16 }; -const byte KonnektingDevice::_numberOfParams = sizeof (_paramSizeList); // do not change this code +const int KonnektingDevice::_numberOfParams = sizeof (_paramSizeList); // do not change this code diff --git a/Multi-Interface/OneWire_Temperature_SingleSensor_1.0/loop.ino b/Multi-Interface/OneWire_Temperature_SingleSensor_1.1/loop.h similarity index 100% rename from Multi-Interface/OneWire_Temperature_SingleSensor_1.0/loop.ino rename to Multi-Interface/OneWire_Temperature_SingleSensor_1.1/loop.h diff --git a/Multi-Interface/OneWire_Temperature_SingleSensor_1.0/mi.h b/Multi-Interface/OneWire_Temperature_SingleSensor_1.1/mi.h similarity index 83% rename from Multi-Interface/OneWire_Temperature_SingleSensor_1.0/mi.h rename to Multi-Interface/OneWire_Temperature_SingleSensor_1.1/mi.h index 397bf20..fffd7df 100644 --- a/Multi-Interface/OneWire_Temperature_SingleSensor_1.0/mi.h +++ b/Multi-Interface/OneWire_Temperature_SingleSensor_1.1/mi.h @@ -4,7 +4,7 @@ Author: E.Burkowski / e.burkowski@konnekting.de, GPL Licensed Multi Interface has 6 SERCOMs, but each Sercom can be used only once! this 3 Sercoms are reserved for system and can't be changed! -Sercom3: I�C EEPROM / external I�C header +Sercom3: I2C EEPROM / external I2C header Sercom4: SPI-Flash Sercom5: Serial for KNX-Tranceiver @@ -20,10 +20,12 @@ Sercom1,2 are free for use. #define useSerial3 //uses sercom1 */ -#define useExternalEEPROM // comment if internal Flash EEPROM is used +//#define useExternalEEPROM // comment if internal Flash EEPROM is used //don't change this lines! +#ifdef useExternalEEPROM #include +#endif #include #include "wiring_private.h" // for pinPeripheral() function @@ -95,14 +97,10 @@ void Serial3_init(){ #define KNX_SERIAL Serial #define FLASH_CS 9 -#define OWD3 3 -#define OWD3PullUp A3 -#define OWD4 4 -#define OWD4PullUp A4 #ifdef useExternalEEPROM // MI uses 24AA256 I2C EEPROM -int readMemory(int index) { +byte readMemory(int index) { byte data = 0xFF; if(index >= 0 && index < 32768){ Wire.beginTransmission(0x50); @@ -117,7 +115,7 @@ int readMemory(int index) { return data; } -void writeMemory(int index, int val) { +void writeMemory(int index, byte val) { if(index >= 0 && index < 32768 && val >= 0 && val < 256){ Wire.beginTransmission(0x50); Wire.write((int) (index >> 8)); @@ -128,7 +126,7 @@ void writeMemory(int index, int val) { } } -void updateMemory(int index, int val) { +void updateMemory(int index, byte val) { if (readMemory(index) != val) { writeMemory(index, val); } @@ -139,25 +137,24 @@ void commitMemory() { } #else -#include "ZeroEEPROM.h" // download from connecting GIT and don't forget Emulated EEPROM lib referenced there +#include "FlashAsEEPROM.h" // -// ZeroEEPROM.init(); ...call this function in setup() after Konnekting.setMemory...() functions -int readMemory(int index) { - return ZeroEEPROM.read(index); +byte readMemory(int index) { + return EEPROM.read(index); } -void writeMemory(int index, int val) { - ZeroEEPROM.write(index, val); +void writeMemory(int index, byte val) { + EEPROM.write(index, val); } -void updateMemory(int index, int val) { +void updateMemory(int index, byte val) { if (readMemory(index) != val) { writeMemory(index, val); } } void commitMemory() { - ZeroEEPROM.commit(); + EEPROM.commit(); } #endif diff --git a/Multi-Interface/OneWire_Temperature_SingleSensor_1.0/setup.ino b/Multi-Interface/OneWire_Temperature_SingleSensor_1.1/setup.h similarity index 91% rename from Multi-Interface/OneWire_Temperature_SingleSensor_1.0/setup.ino rename to Multi-Interface/OneWire_Temperature_SingleSensor_1.1/setup.h index e5e2c48..5682f2c 100644 --- a/Multi-Interface/OneWire_Temperature_SingleSensor_1.0/setup.ino +++ b/Multi-Interface/OneWire_Temperature_SingleSensor_1.1/setup.h @@ -1,20 +1,21 @@ void setup() { // debug related stuff #ifdef KDEBUG - // Start debug serial with 9600 bauds - DEBUGSERIAL.begin(9600); + // Start debug serial with 115200 bauds + DEBUGSERIAL.begin(115200); while (!DEBUGSERIAL) // make debug serial port known to debug class // Means: KONNEKTING will sue the same serial port for console debugging Debug.setPrintStream(&DEBUGSERIAL); #endif +#ifdef useExternalEEPROM Wire.begin(); +#endif Konnekting.setMemoryReadFunc(&readMemory); Konnekting.setMemoryWriteFunc(&writeMemory); Konnekting.setMemoryUpdateFunc(&updateMemory); Konnekting.setMemoryCommitFunc(&commitMemory); - // ZeroEEPROM.init(); // uncomment if internal EEPROM Emulation is used // Initialize KNX enabled Arduino Board Konnekting.init(KNX_SERIAL, PROG_BUTTON_PIN, PROG_LED_PIN, MANUFACTURER_ID, DEVICE_ID, REVISION); diff --git a/Multi-Interface/Temperature_RH_Sensor_HTU21D_1.0/Temperature_RH_Sensor_HTU21D_1.0.ino b/Multi-Interface/Temperature_RH_Sensor_HTU21D_1.1/Temperature_RH_Sensor_HTU21D_1.1.ino similarity index 80% rename from Multi-Interface/Temperature_RH_Sensor_HTU21D_1.0/Temperature_RH_Sensor_HTU21D_1.0.ino rename to Multi-Interface/Temperature_RH_Sensor_HTU21D_1.1/Temperature_RH_Sensor_HTU21D_1.1.ino index 9e61995..5736bbb 100644 --- a/Multi-Interface/Temperature_RH_Sensor_HTU21D_1.0/Temperature_RH_Sensor_HTU21D_1.0.ino +++ b/Multi-Interface/Temperature_RH_Sensor_HTU21D_1.1/Temperature_RH_Sensor_HTU21D_1.1.ino @@ -1,25 +1,33 @@ /* --------------------------------------------------------------------------------------------- -Temperature and relative humidty Sensor (HTU21D, SHT21...) +Temperature and relative humidty Sensor 1.1 (HTU21D, SHT21...) Hardware/Firmware/Sketch/kdevice.xml by E.Burkowski / e.burkowski@konnekting.de, GPL Licensed -Compatible with: KONNEKTING Device Library 1.0.0 beta 4 +Compatible with: KONNEKTING Device Library 1.0.0 beta 4b ------------------------------------------------------------------------------------------------*/ +/* this libraries are required (click on link and download with library manager): +KONNEKTING Device Library: http://librarymanager/All#Konnekting +FlashStorage: http://librarymanager/All#FlashStorage +SparkFun HTU21D: http://librarymanager/All#SparkFun_HTU21D +*/ + #include #include "mi.h" // include device related configuration code, created by "KONNEKTING CodeGenerator" #include "kdevice_Temp_RH.h" +#include + // ################################################ // ### DEBUG CONFIGURATION // ################################################ -//#define KDEBUG // comment this line to disable DEBUG mode +#define KDEBUG // comment this line to disable DEBUG mode #ifdef KDEBUG #include #define DEBUGSERIAL SerialUSB #endif -#include "SparkFunHTU21D.h" //https://github.com/sparkfun/SparkFun_HTU21D_Breakout_Arduino_Library +#include "SparkFunHTU21D.h" // Create an instance for HTU21D sensor HTU21D htu; diff --git a/Multi-Interface/Temperature_RH_Sensor_HTU21D_1.0/Temperature_RH_Sensor_HTU21D_1.0.kdevice.xml b/Multi-Interface/Temperature_RH_Sensor_HTU21D_1.1/Temperature_RH_Sensor_HTU21D_1.1.kdevice.xml similarity index 100% rename from Multi-Interface/Temperature_RH_Sensor_HTU21D_1.0/Temperature_RH_Sensor_HTU21D_1.0.kdevice.xml rename to Multi-Interface/Temperature_RH_Sensor_HTU21D_1.1/Temperature_RH_Sensor_HTU21D_1.1.kdevice.xml diff --git a/Multi-Interface/Temperature_RH_Sensor_HTU21D_1.0/kdevice_Temp_RH.h b/Multi-Interface/Temperature_RH_Sensor_HTU21D_1.1/kdevice_Temp_RH.h similarity index 95% rename from Multi-Interface/Temperature_RH_Sensor_HTU21D_1.0/kdevice_Temp_RH.h rename to Multi-Interface/Temperature_RH_Sensor_HTU21D_1.1/kdevice_Temp_RH.h index db5213e..e3b9b7c 100644 --- a/Multi-Interface/Temperature_RH_Sensor_HTU21D_1.0/kdevice_Temp_RH.h +++ b/Multi-Interface/Temperature_RH_Sensor_HTU21D_1.1/kdevice_Temp_RH.h @@ -51,4 +51,4 @@ byte KonnektingDevice::_paramSizeList[] = { /* Index 13 - rhMaxValue */ PARAM_UINT8, /* Index 14 - rhMaxLimit */ PARAM_INT16 }; -const byte KonnektingDevice::_numberOfParams = sizeof (_paramSizeList); // do not change this code +const int KonnektingDevice::_numberOfParams = sizeof (_paramSizeList); // do not change this code diff --git a/Multi-Interface/Temperature_RH_Sensor_HTU21D_1.0/loop.h b/Multi-Interface/Temperature_RH_Sensor_HTU21D_1.1/loop.h similarity index 100% rename from Multi-Interface/Temperature_RH_Sensor_HTU21D_1.0/loop.h rename to Multi-Interface/Temperature_RH_Sensor_HTU21D_1.1/loop.h diff --git a/Multi-Interface/Temperature_RH_Sensor_HTU21D_1.0/mi.h b/Multi-Interface/Temperature_RH_Sensor_HTU21D_1.1/mi.h similarity index 83% rename from Multi-Interface/Temperature_RH_Sensor_HTU21D_1.0/mi.h rename to Multi-Interface/Temperature_RH_Sensor_HTU21D_1.1/mi.h index 1b57940..fffd7df 100644 --- a/Multi-Interface/Temperature_RH_Sensor_HTU21D_1.0/mi.h +++ b/Multi-Interface/Temperature_RH_Sensor_HTU21D_1.1/mi.h @@ -4,9 +4,9 @@ Author: E.Burkowski / e.burkowski@konnekting.de, GPL Licensed Multi Interface has 6 SERCOMs, but each Sercom can be used only once! this 3 Sercoms are reserved for system and can't be changed! -Sercom3: I�C EEPROM / external I�C header +Sercom3: I2C EEPROM / external I2C header Sercom4: SPI-Flash -Sercom5: Serial for KXN-Tranceiver +Sercom5: Serial for KNX-Tranceiver Sercom0 is reserved for "Serial1" (D0,D1) if you use Serial1.begin(..), but this pins are only internaly available @@ -20,8 +20,12 @@ Sercom1,2 are free for use. #define useSerial3 //uses sercom1 */ +//#define useExternalEEPROM // comment if internal Flash EEPROM is used + //don't change this lines! +#ifdef useExternalEEPROM #include +#endif #include #include "wiring_private.h" // for pinPeripheral() function @@ -93,13 +97,10 @@ void Serial3_init(){ #define KNX_SERIAL Serial #define FLASH_CS 9 -#define OWD3 3 -#define OWD3PullUp A3 -#define OWD4 4 -#define OWD4PullUp A4 +#ifdef useExternalEEPROM // MI uses 24AA256 I2C EEPROM -int readMemory(int index) { +byte readMemory(int index) { byte data = 0xFF; if(index >= 0 && index < 32768){ Wire.beginTransmission(0x50); @@ -114,7 +115,7 @@ int readMemory(int index) { return data; } -void writeMemory(int index, int val) { +void writeMemory(int index, byte val) { if(index >= 0 && index < 32768 && val >= 0 && val < 256){ Wire.beginTransmission(0x50); Wire.write((int) (index >> 8)); @@ -125,7 +126,7 @@ void writeMemory(int index, int val) { } } -void updateMemory(int index, int val) { +void updateMemory(int index, byte val) { if (readMemory(index) != val) { writeMemory(index, val); } @@ -134,3 +135,26 @@ void updateMemory(int index, int val) { void commitMemory() { // EEPROM needs no commit, so this function is intentionally left blank } + +#else +#include "FlashAsEEPROM.h" // + + +byte readMemory(int index) { + return EEPROM.read(index); +} + +void writeMemory(int index, byte val) { + EEPROM.write(index, val); +} + +void updateMemory(int index, byte val) { + if (readMemory(index) != val) { + writeMemory(index, val); + } +} + +void commitMemory() { + EEPROM.commit(); +} +#endif diff --git a/Multi-Interface/Temperature_RH_Sensor_HTU21D_1.0/setup.h b/Multi-Interface/Temperature_RH_Sensor_HTU21D_1.1/setup.h similarity index 96% rename from Multi-Interface/Temperature_RH_Sensor_HTU21D_1.0/setup.h rename to Multi-Interface/Temperature_RH_Sensor_HTU21D_1.1/setup.h index 812f43c..db2ee0e 100644 --- a/Multi-Interface/Temperature_RH_Sensor_HTU21D_1.0/setup.h +++ b/Multi-Interface/Temperature_RH_Sensor_HTU21D_1.1/setup.h @@ -1,8 +1,8 @@ void setup() { // debug related stuff #ifdef KDEBUG - // Start debug serial with 9600 bauds - DEBUGSERIAL.begin(9600); + // Start debug serial with 115200 bauds + DEBUGSERIAL.begin(115200); while (!DEBUGSERIAL) // make debug serial port known to debug class // Means: KONNEKTING will sue the same serial port for console debugging