comparison src/cs/drivers/drv_app/fchg/fchg_process.c @ 190:49c7ed5eeadd

FCHG: sync with Magnetite
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 16 Apr 2020 17:29:54 +0000
parents 7409b22cac61
children
comparison
equal deleted inserted replaced
189:d78986760e92 190:49c7ed5eeadd
67 /* 67 /*
68 * Set the CHDISPA bit and start the zero calibration routine 68 * Set the CHDISPA bit and start the zero calibration routine
69 * of the I to V converter 69 * of the I to V converter
70 */ 70 */
71 ABB_Write_Register_on_page(PAGE0, BCICTL2, 0x0010); 71 ABB_Write_Register_on_page(PAGE0, BCICTL2, 0x0010);
72 ABB_Write_Register_on_page(PAGE0, BCICTL2, 0x0019); 72 ABB_Write_Register_on_page(PAGE0, BCICTL2, 0x0019 | LEDC);
73 } 73 }
74 74
75 static void start_ci_charging(void) 75 static void start_ci_charging(void)
76 { 76 {
77 rvf_send_trace("Start CI charging", 17, NULL_PARAM, 77 rvf_send_trace("Start CI charging", 17, NULL_PARAM,
296 rvf_send_trace("i2v offset (MADC code) ", 23, 296 rvf_send_trace("i2v offset (MADC code) ", 23,
297 pwr_ctrl->i2v_offset, 297 pwr_ctrl->i2v_offset,
298 RV_TRACE_LEVEL_DEBUG_LOW, FCHG_USE_ID); 298 RV_TRACE_LEVEL_DEBUG_LOW, FCHG_USE_ID);
299 if (!(msg->data[9] & CHGPRES)) { 299 if (!(msg->data[9] & CHGPRES)) {
300 pwr_ctrl->state = FCHG_STATE_NO_EXT_PWR; 300 pwr_ctrl->state = FCHG_STATE_NO_EXT_PWR;
301 pwr_init_discharge();
301 return; 302 return;
302 } 303 }
303 start_ci_charging(); 304 start_ci_charging();
304 return; 305 return;
305 case FCHG_STATE_CI_CHARGING: 306 case FCHG_STATE_CI_CHARGING:
306 ci_progress_trace(msg->data[2]); 307 ci_progress_trace(msg->data[2]);
307 if (!(msg->data[9] & CHGPRES)) { 308 if (!(msg->data[9] & CHGPRES)) {
308 ABB_Write_Register_on_page(PAGE0, BCICTL2, 0); 309 ABB_Write_Register_on_page(PAGE0, BCICTL2, 0);
309 pwr_ctrl->state = FCHG_STATE_NO_EXT_PWR; 310 pwr_ctrl->state = FCHG_STATE_NO_EXT_PWR;
311 pwr_init_discharge();
310 return; 312 return;
311 } 313 }
312 if (charging_time_limit_check()) 314 if (charging_time_limit_check())
313 return; 315 return;
314 if (pwr_ctrl->batt_mv >= pwr_ctrl->config.ci2cv_thresh) 316 if (pwr_ctrl->batt_mv >= pwr_ctrl->config.ci2cv_thresh)
316 return; 318 return;
317 case FCHG_STATE_CV_CHARGING: 319 case FCHG_STATE_CV_CHARGING:
318 if (!(msg->data[9] & CHGPRES)) { 320 if (!(msg->data[9] & CHGPRES)) {
319 ABB_Write_Register_on_page(PAGE0, BCICTL2, 0); 321 ABB_Write_Register_on_page(PAGE0, BCICTL2, 0);
320 pwr_ctrl->state = FCHG_STATE_NO_EXT_PWR; 322 pwr_ctrl->state = FCHG_STATE_NO_EXT_PWR;
323 pwr_init_discharge();
321 return; 324 return;
322 } 325 }
323 if (cv_ichg_process(msg->data[2])) 326 if (cv_ichg_process(msg->data[2]))
324 return; 327 return;
325 if (overvoltage_end_charge_check()) 328 if (overvoltage_end_charge_check())