Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
SPI_MJERENJE.cpp
00001 00002 00003 #include "mbed.h" 00004 #include "SPI_MJERENJE.h" 00005 00006 SPI_mjeri::SPI_mjeri(PinName MOSI, PinName MISO, PinName SCL, PinName SS) // definiranje konstruktora 00007 : 00008 spi(MOSI, MISO, SCL), 00009 ss(SS) 00010 00011 00012 { inicijalizacija(); // opoziv funkcije za inicijaliziranje 00013 } 00014 00015 void SPI_mjeri::inicijalizacija() // konstruktor za inicijalizaciju 00016 { 00017 00018 spi.format(8, 0); // 8-bitni podatak, mod 0 00019 00020 spi.frequency(100000); // 100 khhz frekvencija rada 00021 ss=0; 00022 spi.write(0xF5); // Registar „config“ postavlja brzinu, filtar i opcije sučelja uređaja. 00023 spi.write(0b11000000); // Standby 2000ms, bez filtra, 4-zicni SPI sučelje 00024 spi.write(0xF4); //Registar „ctrl_meas“ postavlja mogućnosti prikupljanja podataka uređaja 00025 spi.write(0b01100011); // Temparature oversampling x4, Normal mode 00026 spi.write(0xF3); //Registar „status“ postavlja bitove za indikaciju 00027 spi.write(0b0); 00028 ss = 1; 00029 00030 } 00031 00032 float SPI_mjeri::izmjeri() //funkcija sa kompenzacijskom formulom iz datasheeta sa stranice 22 00033 { 00034 00035 int32_t temp_raw, var1, var2, temp,t_fine; 00036 float tempf; 00037 char dat[3]; 00038 char reg[6]; 00039 00040 ss = 0; 00041 spi.write(0x88); // citanje dig_T registara temperetare 0x88 je adresa LSBa 00042 for(int i = 0; i < 6; i++) 00043 reg[i] = spi.write(0); // slanje dummy podataka 00044 ss = 1; 00045 00046 00047 dig_T1 = (reg[1] << 8) | reg[0]; //zapisivanje 8 bitnog podatka u 16 bitova 00048 dig_T2 = (reg[3] << 8) | reg[2]; 00049 dig_T3 = (reg[5] << 8) | reg[4]; 00050 00051 00052 00053 ss = 0; 00054 spi.write(0xFA); // adresa registra MSB raw dijela podatka 00055 for(int i = 0; i < 3; i++) 00056 dat[i] = spi.write(0); 00057 ss = 1; 00058 temp_raw = (dat[0] << 12) | (dat[1] << 4) | (dat[2] >> 4); 00059 var1 = ((((temp_raw >> 3) - (dig_T1 << 1))) * dig_T2) >> 11; 00060 var2 = (((((temp_raw >> 4) - dig_T1) * ((temp_raw >> 4) - dig_T1)) >> 12) * dig_T3) >> 14; 00061 t_fine = var1 + var2; 00062 temp = (t_fine * 5 + 128) >> 8; 00063 tempf = (float)temp; 00064 return (tempf/100.0f); 00065 } 00066 00067 00068 00069
Generated on Sun Jul 17 2022 08:00:50 by
1.7.2