Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stm32f10x.h>
- #include <math.h>
- #include <stdio.h>
- #include <string.h>
- #include "DWLOS_config.h"
- #include "DWLOS.h"
- #include "i2c_interrupt.h"
- #define __zSHT
- #include "main.h"
- #include "z_SHT.h"
- #include "z_S65.h"
- //==============================================================================
- // SHT21 Init
- //==============================================================================
- void SHT_init (void)
- {
- LOG_ADD('s');
- if (I2C_IS_BLOCK())
- {
- Set_Timer (SHT_init, 100);
- }
- else
- {
- SHT_I2C -> M_OutFnc = SHT_init_end;
- SHT_I2C -> S_adress = I2C_SHT_ADR;
- I2C_MEM_ADR_NOT_TX(SHT_I2C);
- I2C_DIRECTION_TX(SHT_I2C);
- *(SHT_I2C -> M_Tx_Buffer + 0) = SHT_WRITE_REG;
- *(SHT_I2C -> M_Tx_Buffer + 1) = 0x00;
- SHT_I2C -> Tx_count = 2;
- I2C_START(SHT_I2C);
- }
- }
- void SHT_init_end (void)
- {
- I2C_STOP_WAIT(SHT_I2C);
- LOG_ADD('t');
- SHT_I2C -> M_OutFnc = I2C_idle_out;
- Set_Timer (SHT_read_begin, 500);
- }
- //==============================================================================
- // SHT21 data read
- //==============================================================================
- void SHT_read_begin (void)
- {
- if (I2C_IS_BLOCK())
- {
- Set_Timer (SHT_read_begin, 100);
- }
- else
- {
- I2C_BLOCK;
- LOG_ADD('\n');
- LOG_ADD('c');
- SHT_I2C -> M_OutFnc = &SHT_read_T;
- SHT_I2C -> S_adress = I2C_SHT_ADR;
- I2C_MEM_ADR_TX(SHT_I2C);
- *(SHT_I2C -> I2C_MEM_ADRESS) = SHT_READ_T;
- I2C_DIRECTION_TX(SHT_I2C);
- SHT_I2C -> Tx_count = 0;
- SHT_I2C -> Rx_count = 2;
- I2C_START(SHT_I2C);// */
- }
- }
- void SHT_read_T (void)
- {
- uint16_t temp;
- I2C_READ_END(SHT_I2C);
- I2C_STOP_WAIT(SHT_I2C);
- temp = SHT_I2C -> I2C -> DR;
- temp = ((*(SHT_I2C -> M_Rx_Buffer + 0) << 8) | *(SHT_I2C -> M_Rx_Buffer + 1)) & 0xFFFC;
- T = -46.85 + (175.72 * temp) / (65536);
- SHT_I2C -> M_OutFnc = &SHT_read_RH;
- SHT_I2C -> S_adress = I2C_SHT_ADR;
- I2C_MEM_ADR_TX(SHT_I2C);
- *(SHT_I2C -> I2C_MEM_ADRESS) = SHT_READ_RH;
- I2C_DIRECTION_TX(SHT_I2C);
- SHT_I2C -> Tx_count = 0;
- SHT_I2C -> Rx_count = 2;
- I2C_START(SHT_I2C);
- }
- void SHT_read_RH (void)
- {
- uint16_t temp;
- LOG_ADD('C');
- LOG_ADD('\n');
- I2C_READ_END(SHT_I2C);
- I2C_STOP_WAIT(SHT_I2C);
- I2C_UNBLOCK;
- temp = SHT_I2C -> I2C -> DR;
- temp = ((*(SHT_I2C -> M_Rx_Buffer + 0) << 8) | *(SHT_I2C -> M_Rx_Buffer + 1)) & 0xFFFC;
- RH = -6 + (125 * temp) / (65536);
- S65 -> x = 3;
- S65 -> y = 162;
- // sprintf (S65 -> txt, "T: RH: \n\n");
- sprintf (S65 -> txt, "T: %4.1f RH: %4.1f", T, RH);
- S65 -> len = strlen (S65 -> txt);
- Set_Task (S65_puts_n);
- Set_Timer (SHT_read_begin, 3500);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement