From 1f18e7662232b3d9a3a1ee63d44e7dd11e3a497b Mon Sep 17 00:00:00 2001 From: uvos Date: Thu, 30 Mar 2023 19:22:44 +0200 Subject: [PATCH] BMP280 work --- BMP280.cpp | 8 ++++++++ BMP280.h | 9 +++++---- W433DataTransmitter.cpp | 3 ++- W433DataTransmitter.h | 2 +- dht11.h | 4 ++-- main.cpp | 17 +++++++++-------- 6 files changed, 27 insertions(+), 16 deletions(-) diff --git a/BMP280.cpp b/BMP280.cpp index f926786..9d2972d 100644 --- a/BMP280.cpp +++ b/BMP280.cpp @@ -88,3 +88,11 @@ uint32_t BMP280::compensatePressure(const int32_t adc_P) return p; } #endif + +void BMP280::getCoefficient(uint16_t* coefficients) +{ + for(uint8_t i = 0; i < 9; i++) + { + coefficients[i] = (uint16_t)read16b(DIG_P1+i*2); + } +} diff --git a/BMP280.h b/BMP280.h index 2526235..ba7eb08 100644 --- a/BMP280.h +++ b/BMP280.h @@ -3,7 +3,7 @@ #include "softspim.h" -#define PRECOMP_COMPENSATION +//#define PRECOMP_COMPENSATION class BMP280 { @@ -42,8 +42,8 @@ private: static constexpr int16_t digP7value = 7; static constexpr int16_t digP8value = 3; static constexpr int16_t digP9value = 58; - static constexpr int32_t var1StepA = ((((int32_t)t_fine)>>1) - (int32_t)64000); - static constexpr int32_t var1StepB = ((((32768+((((digP3value * + static constexpr int32_t var1StepA = ((((int32_t)t_fine)>>1) - (int32_t)64000); + static constexpr int32_t var1StepB = ((((32768+((((digP3value * (((var1StepA>>2) * (var1StepA>>2)) >> 13 )) >> 3) + ((((int32_t)digP2value) * var1StepA)>>1))>>18)))* ((int32_t)digP1value))>>15); static constexpr int32_t var2StepA = ((((var1StepA>>2) * (var1StepA>>2)) >> 11 ) * ((int32_t)digP6value)) + ((var1StepA*((int32_t)digP5value))<<1); @@ -64,5 +64,6 @@ private: public: BMP280(SpiMaster * const spi, volatile uint8_t * const port, const uint8_t pin); - uint16_t getPressure(); + uint16_t getPressure(); + void getCoefficient(uint16_t* coefficients); }; diff --git a/W433DataTransmitter.cpp b/W433DataTransmitter.cpp index 1065d75..62906b4 100644 --- a/W433DataTransmitter.cpp +++ b/W433DataTransmitter.cpp @@ -68,7 +68,8 @@ void W433DataTransmitter::sendPacket(const uint32_t data) for(uint8_t i = 0; i < 4; ++i) { uint8_t dataOctet = (data & (0xFF000000 >> i*8 )) >> (24 - 8*i); - for(uint8_t i = 0; i < 8; i++) checksum = checksum + (dataOctet & ( 1 << (8 - i))); + //for(uint8_t i = 0; i < 8; i++) checksum = checksum + (dataOctet & ( 1 << (8 - i))); + for(uint8_t i = 0; i < 8; i++) checksum = checksum + ((dataOctet & ( 1 << (8 - i))) >> (8 - i)); sendRawData( dataOctet ); } diff --git a/W433DataTransmitter.h b/W433DataTransmitter.h index a6ed52c..007f8a2 100644 --- a/W433DataTransmitter.h +++ b/W433DataTransmitter.h @@ -8,9 +8,9 @@ class W433DataTransmitter { private: - static constexpr uint16_t SYNC_TIME = 800; static constexpr uint16_t LARGE_TIME = 2000; static constexpr uint16_t SMALL_TIME = 500; + static constexpr uint16_t SYNC_TIME = 800; static constexpr uint8_t signature = 0xA5; volatile unsigned char * const _port; diff --git a/dht11.h b/dht11.h index f8d185d..5bb9fa2 100644 --- a/dht11.h +++ b/dht11.h @@ -8,7 +8,7 @@ class Dht11 static constexpr uint16_t LOOP_TIMEOUT_COUNT = (10000.0 / 16000000.0)*F_CPU; static constexpr uint8_t LOOP_TIMEOUT_SMALL_COUNT = (100.0 / 16000000.0)*F_CPU; static constexpr uint8_t BIT_COUNT = 6;//(8.0 / 16000000.0)*F_CPU; - static constexpr bool DHT22 = false; + static constexpr bool DHT22 = true; volatile unsigned char * const _port; volatile unsigned char * const _port_ctl; @@ -19,5 +19,5 @@ public: Dht11(volatile unsigned char * const port, volatile unsigned char * const inPort, volatile unsigned char * const port_ctl, const unsigned char pin); uint8_t read(); int16_t humidity = 0; - uint16_t temperature = 0; + int16_t temperature = 0; }; diff --git a/main.cpp b/main.cpp index eabd236..94eca1e 100644 --- a/main.cpp +++ b/main.cpp @@ -10,6 +10,7 @@ #include "BMP280.h" #include "comperator.h" + #define TEMP_SENSOR_DATA PB4 #define TRANSMITTER_DATA PD0 #define DOOR_PIN PD2 @@ -18,9 +19,9 @@ EMPTY_INTERRUPT(WDT_OVERFLOW_vect); -static constexpr uint8_t id = 4; +static constexpr uint8_t id = 1; static constexpr bool WATCH_DOOR = false; -static constexpr bool BMP_280 = true; +static constexpr bool BMP_280 = false; static constexpr bool DHT22 = true; @@ -64,8 +65,8 @@ int main() Comperator comp; sei(); - - wdt_set(WDTO_8S); + WDTCSR = 1<> 8; paket[3] = tempSensor.temperature; transmiter.send(paket, 4); @@ -141,7 +142,7 @@ int main() transmiter.send(paket, 4); } comp.off(); - //power(false); + power(false); } sleep_mode(); }