Hello world for bm1383glv on mbed classic. Sets up treshold interrupts and makes measurements. Depends on rohm-sensor-hal and rohm-bm1383-glv.

Dependencies:   mbed rohm-bm1383-glv rohm-sensor-hal

Hello world for mbed classic + Rohm BM1383 glv barometer sensor.

main_classic.cpp

Committer:
MikkoZ
Date:
2016-04-12
Revision:
0:9fb407c1232e
Child:
1:6f7979f79aa4

File content as of revision 0:9fb407c1232e:

/*   Copyright 2016 Rohm Semiconductor

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
*/

#include "rohm-sensor-hal/rohm-sensor-hal/rohm_hal.h"       //mbed.h, types, DEBUG_print*
#include "rohm-sensor-hal/rohm-sensor-hal/I2CCommon.h"

#include "rohm-bm1383-glv/rohm-bm1383-glv/bm1383_driver.h"
#include "rohm-bm1383-glv/rohm-bm1383-glv/bm1383glv.h"

Serial pc(USBTX, USBRX);


void printTreshodRegStatus(){
    if(bm1383_is_treshold_high_crossed()){
        pc.printf("TresHighReg INT");
        }
    else{
        pc.printf("TresHighReg NO INT");
        }
    pc.printf("\r\n");
    if(bm1383_is_treshold_low_crossed()){
        pc.printf("TresLowReg  INT");
        }
    else{
        pc.printf("TresLowReg  NO INT");
        }
    pc.printf("\r\n");
  }
 
    
void use_treshold_interrupts_to_find_treshold_matching_current_pressure(){
    pc.printf("\nBM1383 library test program.\n\r");
    I2CCommonBegin();

    bm1383_wait_until_found();
    pc.printf("\nSensor found.\n\r");
    bm1383_mode_poweroff2reset();
    wait(1);
    bm1383_mode_reset2standby();

    //setup bm1383 if needed
    bm1383_set_low_treshold(100);
    bm1383_enable_interrupt_latching();
    //bm1383_disable_interrupt_pullup();  //Pullup doesn't work on Japan-shield? Int line stays low(triggered).
    bm1383_enable_treshold_interrupts();
    bm1383_clear_interrupt();
    
    while(1) {
        float pressure;
        static uint16_t treshold = 1000;
      
        pc.printf("\nStart meas. - ");
    
        bm1383_set_high_treshold(treshold);
        pc.printf("Treshold: %d \n\r", treshold);
    
        bm1383_start_measurement_oneshot();
    
        wait(0.5);
        //waitActiveLowInterrupt(INTPIN);
        printTreshodRegStatus();
        
        pressure = bm1383_read_pressure();
        pc.printf("Pressure: %f\n\r", pressure);
    
        pc.printf("Clear int command\n\r");
        bm1383_clear_interrupt();
        //waitActiveLowInterruptClear(INTPIN);
    
        treshold = treshold + 1000;    
    
    }
}


int main() {
    use_treshold_interrupts_to_find_treshold_matching_current_pressure();
    }