Bmag incl gps rettelse
Dependencies: mbed WDT MODSERIAL BME280
main.h
- Committer:
- gert_lauritsen
- Date:
- 2019-07-09
- Branch:
- MbedBMAGThrRev
- Revision:
- 64:06b9b8ffd5a6
- Parent:
- 54:d4d20a744b87
File content as of revision 64:06b9b8ffd5a6:
#include <string> #include "mbed.h" #include <time.h> #include "rtos.h" #include <Ticker.h> #include "MODSERIAL/MODSERIAL.h" #include "NMEA/NMEA.h" #include "USBHostMSD.h" #include "WDT/WDT.h" #include "SPS/SPS.h" #include "BMAG/BMAG.h" #include "ErrorHandler/ErrorHandler.h" #include "BME280/BME280.h" #define FWSRCVERSION "x" #define FWIVERSION "1.0.0.7" #define IDENTIFIERID "00" #define ENCODING "0" #define TIMEZONE "ZZZ" #define SOURCEIDENTIFICATION "0000" #define GROUP "00" #define DATALINEVERSION "04" #define TAG "BMAG" using namespace std; //GPS communication init static MODSERIAL gps(p13, p14, 128); //BMAG communication init static MODSERIAL bmag(p9, p10, 64); //Debug serial connection static Serial dbg(USBTX, USBRX); //GPS Rx callback prototype void rxCallback(MODSERIAL_IRQ_INFO *q); //BMAG Rx callback prototype void bmagrxCallback(MODSERIAL_IRQ_INFO *q); //GPS NMEA Parser static NMEA gpsNMEA; //BMAG Parser static BMAG magParser; //BME280 i2c conn static I2C BME280_i2c(p28, p27); //BME 280 instance static BME280 BME; //EA_OLED display Thread thr_writelines; SPI * spiptr; DigitalOut * csptr; string l1; string l2; void init_config(char c){ *csptr = 0; //chip select to start data transmission spiptr->write(c); *csptr = 1; //chip select to end data transmission wait_us(2); }; void EA_OLED(){ //clear l1 and l2 l1 = ""; l2 = ""; spiptr = new SPI(p5, p6, p7); csptr = new DigitalOut(p8); *csptr = 1; //high at idle spiptr->format(10,3); //10bit, high steady state clock spiptr->frequency(1000000); //1MHz spi clock //function set european chararacter set init_config(0x39); //display off init_config(0x08); //entry mode set increment cursor by 1 not shifting display init_config(0x06); //Character mode and internel power on init_config(0x17); //clear display init_config(0x01); //return home init_config(0x02); //display on init_config(0x0C); wait_ms(10); //Time to stabilize (wont work without) }; void clear_display(){ //clear display *csptr = 0; //chip select to start data transmission spiptr->write(0x01); *csptr = 1; //chip select to end data transmission Thread::wait(1); }; void clear_display_waiting(){ //clear display init_config(0x01); wait_ms(1); }; void write_lines(){ //cursor return *csptr = 0; //chip select to start data transmission spiptr->write(0x02); *csptr = 1; //chip select to end data transmission Thread::wait(1); //write l1 for(int i = 0; i < strlen(l1.c_str()); i++){ *csptr = 0; //chip select to start data transmission spiptr->write(0x200 | l1[i]); //add 0x02 for character transmission *csptr = 1; //chip select to end data transmission Thread::wait(1); } //cursor return + cursor pos set *csptr = 0; //chip select to start data transmission spiptr->write(0x02); *csptr = 1; //chip select to end data transmission wait_us(1000); Thread::wait(1); for(int i = 0; i < 64; i++){ *csptr = 0; //chip select to start data transmission spiptr->write(0x14); *csptr = 1; //chip select to end data transmission wait_us(2); } //write l2 for(int i = 0; i < strlen(l2.c_str()); i++){ *csptr = 0; //chip select to start data transmission spiptr->write(0x200 | l2[i]); //add 0x02 for character transmission *csptr = 1; //chip select to end data transmission wait_us(1000); Thread::wait(1); } //dbg.printf("Display_Updated\r\n"); };