void main() { long temperature = 0; long pressure = 0; long altitude = 0; double temp = 0; OSCCON = 0x70; // 8 MHz OSC // I2C TRISCbits.TRISC3 = 1; // SCL TRISCbits.TRISC4 = 1; // SDA // UART // Initialize UART openTxUsart(); // Initialize I2C OpenI2C(MASTER, SLEW_OFF); delay_ms(100); BMP085_Calibration(); BMP_dump_calibration(); printf((const far rom char*) "=========================\r\n"); printf((const far rom char*) "=========RESTART=========\r\n"); printf((const far rom char*) "=========RESTART=========\r\n"); printf((const far rom char*) "=========RESTART=========\r\n"); printf((const far rom char*) "=========================\r\n"); while(1) { bmp085Convert(&temperature, &pressure); printf((const far rom char*)"Temperature: %ld (in 0.1 deg C)\r\n", temperature); printf((const far rom char*)"Pressure: %ld Pa\n\r\n", pressure); // For fun, lets convert to altitude temp = (double) pressure/101325; temp = 1-pow(temp, 0.19029); altitude = floor(44330*temp); printf((const far rom char*)"Altitude: %ldm\r\n", altitude); printf((const far rom char*) "=========================\r\n"); delay_ms(10000); } }
//######################################### //######################################### //######################################### // S T A R T M A I N P R O G R A M int main(void) { //----------------------------------------- // Allocate memory //----------------------------------------- int32_t temperature = 0; int32_t pressure = 0; int16_t BMP085_calibration_int16_t[8]; int16_t BMP085_calibration_uint16_t[3]; uint8_t error_code=0; int32_t altitude=0; //----------------------------------------- // Initialize Stuff //----------------------------------------- //uart_init(); //Initialize UART0 volatile int16_t testVar; _delay_ms(11); i2cSetBitrate(1000); //Initialize TWI 1000kHz BMP085_Calibration(BMP085_calibration_int16_t, BMP085_calibration_uint16_t,&error_code);////Initialize BMP085 lcd_init(); lcd_set_font(FONT_FIXED_8,NORMAL); //----------------------------------------- // Do forever //----------------------------------------- //printf("error code global init: %d \n",error_code); while(1) { /* printf("------------------------\n"); printf("------------------------\n"); printf("Pressure raw %ld \n",bmp085ReadPressure(&error_code)); printf("error code global: %d \n",error_code); printf("------------------------\n"); printf("------------------------\n"); printf("Temperature raw %ld \n",bmp085ReadTemp(&error_code)); printf("error code global: %d \n",error_code); printf("------------------------\n"); printf("------------------------\n"); */ bmp085Convert(BMP085_calibration_int16_t, BMP085_calibration_uint16_t,&temperature, &pressure,&error_code); lcd_moveto_xy (1, 0); lcd_put_string_P(FONT_FIXED_8, NORMAL, PSTR("Temp: ")); lcd_put_int((int16_t)temperature); lcd_moveto_xy (2, 0); lcd_put_string_P(FONT_FIXED_8, NORMAL, PSTR("Pressure: ")); lcd_put_int((int16_t)pressure); altitude = bmp085CalcAltitude (pressure); lcd_moveto_xy (3, 0); lcd_put_string_P(FONT_FIXED_8, NORMAL, PSTR("Altitude: ")); lcd_put_int((int16_t)altitude); /* printf("Temperature: %ld (in 0.1 deg C)\n", temperature); printf("Pressure: %ld Pa\n\n", pressure); printf("Altitude: %ld dm\n", bmp085CalcAltitude(pressure)); printf("error code global: %d \n",error_code); printf("------------------------\n"); printf("------------------------\n"); */ _delay_ms(200); } return 0; }