by MARTA RADI
Dependencies: GPSM bno055 SDcardM
main.cpp@3:835df5760305, 2019-10-03 (annotated)
- Committer:
- renemagrit
- Date:
- Thu Oct 03 20:21:37 2019 +0000
- Revision:
- 3:835df5760305
- Parent:
- 1:9fac2596c39d
MSPD ispravak
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
milenicnikola | 0:feb16cdce752 | 1 | /*------------------LIBS------------------*/ |
milenicnikola | 0:feb16cdce752 | 2 | #include "mbed.h" |
milenicnikola | 0:feb16cdce752 | 3 | #include "bno055.h" |
milenicnikola | 1:9fac2596c39d | 4 | #include "CANlibrary.h" |
milenicnikola | 1:9fac2596c39d | 5 | #include "CANadressID.h" |
milenicnikola | 1:9fac2596c39d | 6 | #include "GPSM.h" |
milenicnikola | 1:9fac2596c39d | 7 | #include "SDcardM.h" |
milenicnikola | 1:9fac2596c39d | 8 | #include "SDBlockDevice.h" |
milenicnikola | 0:feb16cdce752 | 9 | #include <string> |
milenicnikola | 0:feb16cdce752 | 10 | /*---------------DATA TYPES---------------*/ |
milenicnikola | 1:9fac2596c39d | 11 | |
renemagrit | 3:835df5760305 | 12 | CAN can(PA_11, PA_12,1000000); |
milenicnikola | 1:9fac2596c39d | 13 | |
milenicnikola | 0:feb16cdce752 | 14 | //10DOF |
milenicnikola | 1:9fac2596c39d | 15 | BNO055 imu(PB_14, PB_13); |
milenicnikola | 1:9fac2596c39d | 16 | char calibration[22]= {0x03, 0x00, 0xF2, 0xFF, 0x08, 0x00, 0xB4, |
milenicnikola | 1:9fac2596c39d | 17 | 0x00, 0xAB, 0xFF, 0xD9, 0xFE, 0xFF, 0xFF, |
milenicnikola | 1:9fac2596c39d | 18 | 0xF5, 0xFF, 0x00, 0x00, 0xE8, 0x03, 0x95, 0x02 |
milenicnikola | 1:9fac2596c39d | 19 | }; |
milenicnikola | 1:9fac2596c39d | 20 | //XBEE |
milenicnikola | 1:9fac2596c39d | 21 | Serial pc(PA_0, PA_1, 115200); |
milenicnikola | 0:feb16cdce752 | 22 | |
milenicnikola | 1:9fac2596c39d | 23 | //SD Card Object |
milenicnikola | 1:9fac2596c39d | 24 | SDBlockDevice sd(PA_7, PA_6, PA_5, PA_4, 100000); |
milenicnikola | 0:feb16cdce752 | 25 | |
milenicnikola | 1:9fac2596c39d | 26 | uint8_t buff[512] = ""; |
milenicnikola | 1:9fac2596c39d | 27 | bd_addr_t* blockAddr = (bd_addr_t*) buff; |
milenicnikola | 1:9fac2596c39d | 28 | //uint32_t* byteAddr = blockAddr+1; |
milenicnikola | 0:feb16cdce752 | 29 | |
milenicnikola | 1:9fac2596c39d | 30 | int main() |
milenicnikola | 1:9fac2596c39d | 31 | { |
milenicnikola | 1:9fac2596c39d | 32 | *blockAddr=512; |
milenicnikola | 1:9fac2596c39d | 33 | //*byteAddr=14; |
milenicnikola | 1:9fac2596c39d | 34 | pc.printf("INITIALIZING...\r\n"); |
milenicnikola | 1:9fac2596c39d | 35 | //GPS INIT |
milenicnikola | 1:9fac2596c39d | 36 | pc.printf("GPS...\r\n"); |
milenicnikola | 1:9fac2596c39d | 37 | GPSM::GPSM_Init(PC_10, PC_11); |
milenicnikola | 1:9fac2596c39d | 38 | while(GPSM::_gps->readable()) GPSM::_gps->getc(); |
milenicnikola | 1:9fac2596c39d | 39 | GPSM::_gps->attach(callback(GPSM::rx_interrupt)); |
milenicnikola | 0:feb16cdce752 | 40 | //10DOF INIT |
milenicnikola | 1:9fac2596c39d | 41 | //imu.reset(); |
milenicnikola | 1:9fac2596c39d | 42 | //while(!imu.check()); |
milenicnikola | 1:9fac2596c39d | 43 | pc.printf("IMU...\r\n"); |
milenicnikola | 0:feb16cdce752 | 44 | //10DOF SET MODE AND CALIBRATE |
milenicnikola | 0:feb16cdce752 | 45 | imu.set_calibration_data(calibration); |
milenicnikola | 0:feb16cdce752 | 46 | imu.setmode(OPERATION_MODE_NDOF); |
milenicnikola | 0:feb16cdce752 | 47 | wait_ms(10); |
milenicnikola | 0:feb16cdce752 | 48 | imu.write_calibration_data(); |
milenicnikola | 1:9fac2596c39d | 49 | |
milenicnikola | 1:9fac2596c39d | 50 | pc.printf("CAN...\r\n"); |
renemagrit | 3:835df5760305 | 51 | //can.frequency(1000000); //10hz??? |
milenicnikola | 1:9fac2596c39d | 52 | can_initRX(); |
milenicnikola | 1:9fac2596c39d | 53 | |
milenicnikola | 1:9fac2596c39d | 54 | pc.printf("SD...\r\n"); |
milenicnikola | 1:9fac2596c39d | 55 | SD_init(); |
milenicnikola | 1:9fac2596c39d | 56 | //sd.init(); |
milenicnikola | 1:9fac2596c39d | 57 | //sd.program(buff, 0, 512); |
milenicnikola | 1:9fac2596c39d | 58 | SD_log_string("PILETINA SE ZA PRSTE LEPI!"); |
milenicnikola | 1:9fac2596c39d | 59 | SD_log_float(3.14159); |
milenicnikola | 1:9fac2596c39d | 60 | SD_log_int(73); |
milenicnikola | 1:9fac2596c39d | 61 | SD_flush(); |
milenicnikola | 1:9fac2596c39d | 62 | sd.read(buff, 512, 512); |
milenicnikola | 1:9fac2596c39d | 63 | pc.printf("%s", buff); |
milenicnikola | 0:feb16cdce752 | 64 | |
milenicnikola | 0:feb16cdce752 | 65 | |
milenicnikola | 1:9fac2596c39d | 66 | pc.printf("STATUS NOMINAL: ALL FUCKED UP\r\n"); |
milenicnikola | 1:9fac2596c39d | 67 | //ticker.attach(&tick, 1); |
milenicnikola | 1:9fac2596c39d | 68 | //ticked=false; |
milenicnikola | 1:9fac2596c39d | 69 | /*----------------MAIN LOOP----------------*/ |
milenicnikola | 0:feb16cdce752 | 70 | while (true) { |
milenicnikola | 1:9fac2596c39d | 71 | //while(!ticked); |
milenicnikola | 1:9fac2596c39d | 72 | //ticked=false; |
milenicnikola | 1:9fac2596c39d | 73 | wait_ms(1000); |
milenicnikola | 1:9fac2596c39d | 74 | |
milenicnikola | 0:feb16cdce752 | 75 | //GET YPR |
milenicnikola | 0:feb16cdce752 | 76 | imu.get_angles(); |
milenicnikola | 0:feb16cdce752 | 77 | pc.printf("Yaw: %5.1f Pitch: %5.1f Roll: %5.1f\r\n", imu.euler.yaw, imu.euler.pitch, imu.euler.roll); |
milenicnikola | 0:feb16cdce752 | 78 | |
milenicnikola | 0:feb16cdce752 | 79 | //GET ACCEL |
milenicnikola | 0:feb16cdce752 | 80 | imu.get_accel(); |
milenicnikola | 0:feb16cdce752 | 81 | pc.printf("ACX: %5.1f ACY: %5.1f ACZ: %5.1f\r\n", imu.accel.x, imu.accel.y, imu.accel.z); |
milenicnikola | 1:9fac2596c39d | 82 | |
milenicnikola | 1:9fac2596c39d | 83 | if(imu.getmode()!=OPERATION_MODE_NDOF) { |
milenicnikola | 1:9fac2596c39d | 84 | pc.printf("IMU_FEJL\r\n"); |
milenicnikola | 1:9fac2596c39d | 85 | imu.setmode(OPERATION_MODE_NDOF); |
milenicnikola | 1:9fac2596c39d | 86 | wait_ms(10); |
milenicnikola | 1:9fac2596c39d | 87 | imu.write_calibration_data(); |
milenicnikola | 1:9fac2596c39d | 88 | pc.printf("REINITED\r\n"); |
milenicnikola | 1:9fac2596c39d | 89 | } |
milenicnikola | 1:9fac2596c39d | 90 | |
milenicnikola | 1:9fac2596c39d | 91 | if(GPSM::poll()) |
milenicnikola | 1:9fac2596c39d | 92 | pc.printf("LON: %f, LAT: %f\r\n", GPSM::get_dec_longitude(), GPSM::get_dec_latitude()); |
milenicnikola | 1:9fac2596c39d | 93 | |
milenicnikola | 1:9fac2596c39d | 94 | |
renemagrit | 3:835df5760305 | 95 | if(check_flag(10)) { |
renemagrit | 3:835df5760305 | 96 | pc.printf("ASAD1: %d\n", get_data(10, 0)); |
milenicnikola | 1:9fac2596c39d | 97 | } |
milenicnikola | 1:9fac2596c39d | 98 | if(check_flag(12)) { |
renemagrit | 3:835df5760305 | 99 | pc.printf("ASAD2: %d\n", get_data(12, 0)); |
milenicnikola | 1:9fac2596c39d | 100 | } |
renemagrit | 3:835df5760305 | 101 | pc.printf(" - - - - - - - DTA - - - - - - - \n"); |
renemagrit | 3:835df5760305 | 102 | pc.printf("DTA1: RPM - %d TPS - %d WaterTemp - %d AirTemp - %d\n", get_data(DTA1_RPM), get_data(DTA1_TPS), get_data(DTA1_WaterTemp), get_data(DTA1_AirTemp)); |
renemagrit | 3:835df5760305 | 103 | pc.printf("DTA2: MAP - %d Lambda - %d Speed - %d OilPres - %d\n", get_data(DTA2_MAP), get_data(DTA2_Lambda), get_data(DTA2_Speed), get_data(DTA2_OilPres)); |
renemagrit | 3:835df5760305 | 104 | pc.printf("DTA3: OilTemp - %d Volts - %d\n", get_data(DTA3_OilTemp), get_data(DTA3_Volts)); |
renemagrit | 3:835df5760305 | 105 | pc.printf("DTA4: Gear - %d\n", get_data(DTA4_Gear)); |
renemagrit | 3:835df5760305 | 106 | pc.printf("DTA6: Crank - %d\n", get_data(DTA6_Crank)); |
renemagrit | 3:835df5760305 | 107 | |
milenicnikola | 1:9fac2596c39d | 108 | |
milenicnikola | 0:feb16cdce752 | 109 | } |
milenicnikola | 0:feb16cdce752 | 110 | } |