Mercurial > public > ostc4
diff Small_CPU/Src/scheduler.c @ 115:3834b6272ee5 FlipDisplay
Merge with 68181cd61f2069d061621c2cd2a6afddb7486f5e
author | Ideenmodellierer |
---|---|
date | Thu, 03 Jan 2019 19:59:36 +0100 |
parents | 68181cd61f20 |
children | 6347a86caa18 |
line wrap: on
line diff
--- a/Small_CPU/Src/scheduler.c Thu Jan 03 18:35:11 2019 +0100 +++ b/Small_CPU/Src/scheduler.c Thu Jan 03 19:59:36 2019 +0100 @@ -110,7 +110,7 @@ global.aktualGas[0] = Air; global.lifeData.actualGas = global.aktualGas[0]; - const uint8_t button_standard_sensitivity = ((2400-( 90 *24))/10)+15; + const uint8_t button_standard_sensitivity = ((2400-( 40 *24))/10)+15; global.ButtonResponsiveness[0] = button_standard_sensitivity; global.ButtonResponsiveness[1] = button_standard_sensitivity; global.ButtonResponsiveness[2] = button_standard_sensitivity; @@ -181,9 +181,14 @@ void scheduleSpecial_Evaluate_DataSendToSlave(void) { + //TEMPORARY fix for compass calibration. + //TODO: Fix I2C timeout for complete solving problem. + if(global.mode==MODE_CALIB){ + return; + } + global.dataSendToSlavePending = 0; - if(!global.dataSendToSlaveIsValid) - return; + if(!global.dataSendToSlaveIsValid) return; global.dataSendToMaster.confirmRequest.uw = 0; @@ -243,8 +248,10 @@ if(global.dataSendToSlave.setBatteryGaugeNow) { + if(global.mode!=MODE_CALIB){ global.dataSendToMaster.confirmRequest.ub.batterygauge = 1; battery_gas_gauge_set(global.dataSendToSlave.data.newBatteryGaugePercentageFloat); + } } if((global.mode == MODE_SURFACE) && (global.dataSendToSlave.mode == MODE_SHUTDOWN)) @@ -270,6 +277,34 @@ deviceDataFlashValid = 0; memcpy(&DeviceDataFlash, &global.dataSendToSlave.data.DeviceData, sizeof(SDevice)); deviceDataFlashValid = 1; + + + //TODO: Temporary placed here. Duration ~210 ms. + if (global.I2C_SystemStatus != HAL_OK) { + MX_I2C1_TestAndClear(); + MX_I2C1_Init(); +// init_pressure(); +// compass_init(0, 7); +// accelerator_init(); + } +//Collect and copy sensor data just in one place. +//TODO: compass_calib_common needs big refactor. + compass_read(); + acceleration_read(); + compass_calc(); + pressure_update(); + copyPressureData(); + battery_gas_gauge_get_data(); + copyCompassData(); +// copyCnsAndOtuData(); //TODO: move here. + copyTimeData(); +// copyBatteryData(); // TODO: move here. + copyDeviceData(); + copyVpmCrushingData(); +// + scheduleUpdateDeviceData(); + + } @@ -406,16 +441,17 @@ */ void schedule_check_resync(void) { - if((global.check_sync_not_running >= 10) || (global.dataSendToSlaveIsNotValidCount >= 2)) + //TODO: REMOVE + if((global.check_sync_not_running >= 2)) { - global.dataSendToSlaveIsNotValidCount = 0; - global.check_sync_not_running = 0; - global.sync_error_count++; - MX_SPI_DeInit(); - HAL_Delay(30); /* could be closer to length of data transmission 23.Feb.2015 hw */ - MX_DMA_Init(); - MX_SPI1_Init(); - SPI_Start_single_TxRx_with_Master(); +// global.dataSendToSlaveIsNotValidCount = 0; +// global.check_sync_not_running = 0; +// global.sync_error_count++; +// MX_SPI_DeInit(); +// HAL_Delay(30); /* could be closer to length of data transmission 23.Feb.2015 hw */ +// MX_DMA_Init(); +// MX_SPI1_Init(); +// SPI_Start_single_TxRx_with_Master(); } } @@ -476,8 +512,8 @@ if(ticksdiff >= counterPressure100msec * 100 + 20) { global.check_sync_not_running++; - pressure_update(); - scheduleUpdateDeviceData(); +// pressure_update(); +// scheduleUpdateDeviceData(); if(global.demo_mode) { turbo_seconds = demo_modify_temperature_and_pressure(global.lifeData.dive_time_seconds, counterPressure100msec, global.ceiling_from_main_CPU_mbar); @@ -508,18 +544,18 @@ // if(global.demo_mode) // global.lifeData.ascent_rate_meter_per_min /= 4; } - copyPressureData(); +// copyPressureData(); counterPressure100msec++; } //evaluate compass data at 50 ms, 150 ms, 250 ms,.... - if(ticksdiff >= counterCompass100msec * 100 + 50) - { - compass_read(); - acceleration_read(); - compass_calc(); - copyCompassData(); - counterCompass100msec++; - } +// if(ticksdiff >= counterCompass100msec * 100 + 50) +// { +// compass_read(); +// acceleration_read(); +// compass_calc(); +// copyCompassData(); +// counterCompass100msec++; +// } if(ticksdiff >= counterAmbientLight100msec * 100 + 70) { @@ -686,10 +722,10 @@ { global.check_sync_not_running++; -pressure_update(); -scheduleUpdateDeviceData(); +//pressure_update(); +//scheduleUpdateDeviceData(); global.lifeData.ascent_rate_meter_per_min = 0; -copyPressureData(); +//copyPressureData(); if(temperature_carousel > 20.0f) { @@ -743,7 +779,7 @@ while(global.mode == MODE_SURFACE) { printf("surface...\n"); - +// SPI_Start_single_TxRx_with_Master(); schedule_check_resync(); lasttick = HAL_GetTick(); ticksdiff = time_elapsed_ms(tickstart,lasttick); @@ -768,26 +804,26 @@ if(ticksdiff >= counterPressure100msec * 100 + 20) { global.check_sync_not_running++; - pressure_update(); - scheduleUpdateDeviceData(); +// pressure_update(); +// scheduleUpdateDeviceData(); global.lifeData.ascent_rate_meter_per_min = 0; - copyPressureData(); +// copyPressureData(); counterPressure100msec++; - + if(scheduleCheck_pressure_reached_dive_mode_level()) global.mode = MODE_DIVE; } //evaluate compass data at 50 ms, 150 ms, 250 ms,... - if(ticksdiff >= counterCompass100msec * 100 + 50) - { - compass_read(); - acceleration_read(); - compass_calc(); - copyCompassData(); - counterCompass100msec++; - } +// if(ticksdiff >= counterCompass100msec * 100 + 50) +// { +//// compass_read(); +//// acceleration_read(); +// compass_calc(); +// copyCompassData(); +// counterCompass100msec++; +// } //evaluate compass data at 70 ms, 170 ms, 270 ms,... if(ticksdiff >= counterAmbientLight100msec * 100 + 70) @@ -796,7 +832,7 @@ copyAmbientLightData(); counterAmbientLight100msec++; } - //Evaluate tissues, toxic data, etc. once a second + //Evaluate tissues, toxic data, etc. once a second if(ticksdiff >= 1000) { if(clearDecoNow) @@ -811,11 +847,11 @@ vpm_init(&global.vpm, global.conservatism, global.repetitive_dive, global.seconds_since_last_dive); clearDecoNow = 0; } - + //Set back tick counter tickstart = HAL_GetTick(); - - + + if(global.seconds_since_last_dive) { schedule_update_timer_helper(-1); @@ -823,7 +859,7 @@ // if(global.seconds_since_last_dive > 777900) // a bit more than nine days [seconds] // global.seconds_since_last_dive = 0; } - + if(global.accidentRemainingSeconds) { global.accidentRemainingSeconds--; @@ -831,7 +867,7 @@ global.accidentFlag = 0; } global.dataSendToMaster.accidentFlags = global.accidentFlag; - + update_surface_pressure(1); scheduleUpdateLifeData(0); decom_oxygen_calculate_otu_degrade(&global.lifeData.otu, global.seconds_since_last_dive); @@ -839,7 +875,7 @@ global.lifeData.desaturation_time_minutes = decom_calc_desaturation_time(global.lifeData.tissue_nitrogen_bar,global.lifeData.tissue_helium_bar,global.lifeData.pressure_surface_bar); battery_charger_get_status_and_contral_battery_gas_gauge(0); battery_gas_gauge_get_data(); - + copyCnsAndOtuData(); copyTimeData(); copyBatteryData(); @@ -855,7 +891,7 @@ init_pressure(); } } - + counterCompass100msec = 0; counterPressure100msec = 0; counterAmbientLight100msec = 0;