rusEFI
An attempt to build an Engine Control Unit
Functions
backup_ram.cpp File Reference

Functions

uint32_t backupRamLoad (backup_ram_e idx)
 
void backupRamSave (backup_ram_e idx, uint32_t value)
 

Function Documentation

◆ backupRamLoad()

uint32_t backupRamLoad ( backup_ram_e  idx)

Definition at line 9 of file backup_ram.cpp.

9  {
10 #if HAL_USE_RTC
11  switch (idx) {
12  case BACKUP_STEPPER_POS:
13  return RTCD1.rtc->BKP0R & 0xffff;
15  return (RTCD1.rtc->BKP0R >> 16) & 0xff;
17  return RTCD1.rtc->BKP1R & 0xffff;
19  return (RTCD1.rtc->BKP1R >> 16) & 0xffff;
20 // it is assembly code which reads this value
21 // case DFU_JUMP_REQUESTED:
22 // return RTCD1.rtc->BKP4R;
23  default:
24  firmwareError(OBD_PCM_Processor_Fault, "Invalid backup ram idx %d", idx);
25  return 0;
26  }
27 #else
28  return 0;
29 #endif /* HAL_USE_RTC */
30 }
void firmwareError(obd_code_e, const char *,...)

Referenced by cjStart(), StepperMotor::loadStepperPos(), and startPrimeInjectionPulse().

◆ backupRamSave()

void backupRamSave ( backup_ram_e  idx,
uint32_t  value 
)

Definition at line 32 of file backup_ram.cpp.

32  {
33 #if HAL_USE_RTC
34  switch (idx) {
35  case BACKUP_STEPPER_POS:
36  RTCD1.rtc->BKP0R = (RTCD1.rtc->BKP0R & ~0x0000ffff) | (value & 0xffff);
37  break;
39  RTCD1.rtc->BKP0R = (RTCD1.rtc->BKP0R & ~0x00ff0000) | ((value & 0xff) << 16);
40  break;
42  RTCD1.rtc->BKP1R = (RTCD1.rtc->BKP1R & ~0x0000ffff) | (value & 0xffff);
43  break;
45  RTCD1.rtc->BKP1R = (RTCD1.rtc->BKP1R & ~0xffff0000) | ((value & 0xffff) << 16);
46  break;
47 // todo: start using this code
48  case DFU_JUMP_REQUESTED:
49  RTCD1.rtc->BKP4R = value;
50  break;
51  default:
52  firmwareError(OBD_PCM_Processor_Fault, "Invalid backup ram idx %d, value 0x08x", idx, value);
53  break;
54  }
55 #endif /* HAL_USE_RTC */
56 }
void firmwareError(obd_code_e, const char *,...)

Referenced by CJ125::calibrate(), StepperMotor::saveStepperPos(), startPrimeInjectionPulse(), and updatePrimeInjectionPulseState().

Go to the source code of this file.