default version

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
yabool2001
Date:
Tue May 14 09:28:55 2019 +0000
Commit message:
default version

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue May 14 09:28:55 2019 +0000
@@ -0,0 +1,141 @@
+#include "mbed.h"
+
+uint8_t temp_offset = 0xFB;
+//uint8_t temp_offset = 0x00;
+uint8_t hum_offset = 0x00 ;
+
+Serial serial ( PA_9 , NC );
+
+// IES LEDs
+DigitalOut led1 ( PB_5 );
+DigitalOut led2 ( PB_2 );
+DigitalOut led3 ( PH_1 );
+
+DigitalIn pulse ( PA_2 );
+
+// I2C conf ( SDA , SCK )
+I2C i2c ( PB_9 , PB_8 );
+
+char i2c_data[1] = { 0 };
+char i2c_data2[2] = { 0 , 0 };
+char i2c_data4[4] = { 0 , 0 , 0 , 0 };
+
+const int i2c_addr_read  = 129;
+const int i2c_addr_write = 128;
+
+char conf_reg[1]        = { 0x0E };
+char meas_conf_reg[1]   = { 0x0F };
+char manf_id_low_reg[1] = { 0xFC };
+char temp_max_reg[1]    = { 0x05 };
+char temp_low_reg[1]        = { 0x00 };
+
+char conf_reg_init[2] = { 0x0F , 0x00 };
+char meas_conf_reg_init[2] = { 0x0F , 0x00 };
+char meas_conf_reg_reset[2] = { 0x0E , 0x80 };
+char meas_conf_reg_heat_on[2] = { 0x0E , 0x08 };
+char temp_offset_reg[2] = { 0x08 , temp_offset };
+
+char meas_conf_reg_meas[2] = { 0x0F , 0x01 }; // start_meas: 14bit, t&h , meas
+//char meas_conf_reg_meas[2] = { 0x0F , 0x51 }; // start_meas: 11bit, t&h , meas
+//char meas_conf_reg_meas[2] = { 0x0F , 0xA1 }; // start_meas: t_8bit, h_8bit , t&h , meas
+
+// HDC init
+void hdc_init ()
+{
+    serial .printf ( "\n\r" );
+    
+    //Konfiguracja startowa rejestrów
+    i2c.write ( i2c_addr_write , conf_reg_init , 2 , false );
+    i2c.write ( i2c_addr_write , meas_conf_reg_init , 2 , false );
+    
+    // Wdrożenie offsetu
+    i2c.write ( i2c_addr_write , temp_offset_reg , 2 , false );
+    
+    //Weryfikacja konfiguracji startowej rejestrów
+    i2c.write ( i2c_addr_write , conf_reg , 1 , true );
+    i2c.read ( i2c_addr_read , i2c_data , 1 , false );
+    serial .printf ( "0x0E Conf. reg.: %X\n\r" , i2c_data[0] );
+    i2c.write ( i2c_addr_write , meas_conf_reg , 1 , true );
+    i2c.read ( i2c_addr_read , i2c_data , 1 , false );
+    serial .printf ( "0x0F Meas conf. reg.: %X\n\r" , i2c_data[0] );
+    
+    // Weryfikacja adresu Manf. Id Low
+    i2c.write ( i2c_addr_write , manf_id_low_reg , 1 , true );
+    i2c.read ( i2c_addr_read , i2c_data , 1 , false );
+    serial .printf ( "HDC manf_id_low_reg: %X initiated\n\r" , i2c_data[0] );
+}
+
+void hdc_soft_reset ()
+{
+    serial .printf ( "\n\r" );
+    // Soft reset
+    i2c.write ( i2c_addr_write , meas_conf_reg_reset , 2 , false );
+    // Wait to perform reset
+    wait ( 1 );
+    serial .printf ( "Soft reset perfomed\n\r" );
+}
+
+void hdc_heater ( uint8_t t )
+{
+    serial .printf ( "\n\r" );
+    // Soft reset
+    i2c.write ( i2c_addr_write , meas_conf_reg_reset , 2 , false );
+    // Wait to perform reset
+    wait ( t );
+    serial .printf ( "Heater switched on for 5s\n\r" );
+}
+
+void hdc_single_acqusition ()
+{
+    i2c.write ( i2c_addr_write , meas_conf_reg_meas , 2 , false );
+    wait ( 0.2 );
+    i2c.write ( i2c_addr_write , temp_low_reg , 1 , true );
+    i2c.read ( i2c_addr_read , i2c_data4 , 4 , false );
+    //serial .printf ( "HDC Single acquisition raw[hex] 3-0: %X , %X , %X , %X \n\r" , i2c_data4[3] , i2c_data4[2] , i2c_data4[1] , i2c_data4[0] );
+    double temp = ( i2c_data4 [1] << 8 ) + i2c_data4 [0];
+    temp = ( ( temp * 165 ) / 65536 ) - 40 ;
+    serial .printf ( "temp: %f\n\r" , temp );
+}
+
+void hdc_temp_max ()
+{
+    i2c.write ( i2c_addr_write , temp_max_reg , 1 , true );
+    i2c.read ( i2c_addr_read , i2c_data , 1 , false );
+    //serial .printf ( "HDC Max temp. raw[hex]: %X\n\r" , i2c_data [0] );
+    double temp = i2c_data [0];
+    temp = ( ( temp * 165 ) / 256 ) - 40 ;
+    serial .printf ( "HDC Max temp. = %f\n\r" , temp );
+}
+
+// Toggle LED
+void toggle_led ()
+{
+    serial .printf ( "led toggle\n\r" );
+    led1 = !led1;
+    led3 = !led2;
+    led3 = !led3;
+}
+
+int main() {
+
+    led1 = 0;
+    led2 = 0;
+    led3 = 0;
+    
+    i2c.frequency ( 1000000 );
+    
+    hdc_init () ;
+    //hdc_soft_reset () ;
+    //hdc_heater ( 5 );
+    //hdc_init () ;
+
+    while ( 1 )
+    {
+        for ( int i = 0 ; i < 10 ; i++ )
+        {
+            hdc_single_acqusition () ;
+            wait ( 10 ) ;
+        }
+        hdc_temp_max () ;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Tue May 14 09:28:55 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file