123
Fork of LG by
Diff: DeviceISACS.c
- Revision:
- 167:bedc0a9d559a
- Parent:
- 166:c3c0b8a90d81
- Child:
- 173:7f938afb0447
--- a/DeviceISACS.c Sun May 22 18:59:20 2016 +0000 +++ b/DeviceISACS.c Sun Jun 05 11:03:33 2016 +0000 @@ -2,23 +2,25 @@ extern Device device; -void InitISACSOutputWithDefaults(void){ - device.isacs.output.interpolator.settings.points = 2; +void InitISACSOutputDefaultSettings(void){ + device.isacs.output.settings.transfer.points = 2; //Control point 1.5 volt - low output limit - device.isacs.output.interpolator.settings.voltage[0] = 0x00017fff; - device.isacs.output.interpolator.settings.code[0] = 800; + device.isacs.output.settings.transfer.voltage[0] = 0x00017fff; + device.isacs.output.settings.transfer.code[0] = 800; //Control point 12.5 volt - high output limit - device.isacs.output.interpolator.settings.voltage[1] = 0x000c7fff; - device.isacs.output.interpolator.settings.code[1] = 2048; - device.isacs.output.start.settings.voltage = 0x000c7fff; //+12.5V start - device.isacs.output.reset.settings.voltage = 0x00077fff; //+7.5V if regulator disabled at reset time + device.isacs.output.settings.transfer.voltage[1] = 0x000c7fff; + device.isacs.output.settings.transfer.code[1] = 2048; + device.isacs.output.settings.start.voltage = 0x000c7fff; //+12.5V start + device.isacs.output.settings.reset.voltage = 0x00077fff; //+7.5V if regulator disabled at reset time } -void InitISACSOutput(void){ - //isacsSetOutputVoltage(device.isacs.output.start.settings.voltage); +void InitISACSOutputState(void){ } -void InitISACSRegulatorWithDefaults(void){ +void DeviceStartISACSOutput(void){ +} + +void InitISACSRegulatorDefaultSettings(void){ //Startup settings device.isacs.regulator.settings.start.enabled = 1; device.isacs.regulator.settings.start.reference = 0x00020000; //Reference voltage 2V in 16.16 signed fixed point format @@ -33,25 +35,31 @@ device.isacs.regulator.settings.reset.scale = 1; //Scale factor } -void InitISACSRegulator(void){ +void InitISACSRegulatorState(void){ device.isacs.regulator.state.enabled = device.isacs.regulator.settings.start.enabled; device.isacs.regulator.state.reference = device.isacs.regulator.settings.start.reference; device.isacs.regulator.state.scale = device.isacs.regulator.settings.start.scale; } -void InitISACSWithDefaults(void){ - InitISACSOutputWithDefaults(); - InitISACSRegulatorWithDefaults(); - InitISACSPotentiometersWithDefaults(); +void DeviceStartISACSRegulator(void){ +} + +void InitISACSDefaultSettings(void){ + InitISACSPotentiometersDefaultSettings(); + InitISACSRegulatorDefaultSettings(); + InitISACSOutputDefaultSettings(); } -void InitISACS(void){ - InitISACSOutput(); - InitISACSRegulator(); - InitISACSPotentiometers(); +void InitISACSState(void){ + InitISACSPotentiometersState(); + InitISACSRegulatorState(); + InitISACSOutputState(); } -void StartISACS(void){ +void DeviceStartISACS(void){ + DeviceStartISACSPotentiometers(); + DeviceStartISACSRegulator(); + DeviceStartISACSOutput(); } /* @@ -96,38 +104,38 @@ int32_t isacsInputCodeToVoltage(uint32_t code) { int32_t c1, c2; - for (uint8_t i = 1; i < device.isacs.input.interpolator.settings.points; i++) { - c1 = device.isacs.input.interpolator.settings.code[i - 1]; + for (uint8_t i = 1; i < device.isacs.input.settings.transfer.points; i++) { + c1 = device.isacs.input.settings.transfer.code[i - 1]; if (code < c1) { - return device.isacs.input.interpolator.settings.voltage[i - 1]; + return device.isacs.input.settings.transfer.voltage[i - 1]; } - c2 = device.isacs.input.interpolator.settings.code[i]; + c2 = device.isacs.input.settings.transfer.code[i]; if (code < c2) { - int32_t v1 = device.isacs.input.interpolator.settings.voltage[i - 1]; - int32_t v2 = device.isacs.input.interpolator.settings.voltage[i]; + int32_t v1 = device.isacs.input.settings.transfer.voltage[i - 1]; + int32_t v2 = device.isacs.input.settings.transfer.voltage[i]; return isacsInterpolate(code, c1, c2, v1, v2); } } - return device.isacs.input.interpolator.settings.voltage[device.isacs.input.interpolator.settings.points - 1]; + return device.isacs.input.settings.transfer.voltage[device.isacs.input.settings.transfer.points - 1]; } int32_t isacsOutputVoltageToCode(uint32_t voltage) { int32_t v1, v2; - for (uint8_t i = 1; i < device.isacs.output.interpolator.settings.points; i++) { - v1 = device.isacs.output.interpolator.settings.voltage[i - 1]; + for (uint8_t i = 1; i < device.isacs.output.settings.transfer.points; i++) { + v1 = device.isacs.output.settings.transfer.voltage[i - 1]; if (voltage < v1) { - return device.isacs.output.interpolator.settings.code[i - 1]; + return device.isacs.output.settings.transfer.code[i - 1]; } - v2 = device.isacs.output.interpolator.settings.voltage[i]; + v2 = device.isacs.output.settings.transfer.voltage[i]; if (voltage < v2) { - int32_t c1 = device.isacs.output.interpolator.settings.code[i - 1]; - int32_t c2 = device.isacs.output.interpolator.settings.code[i]; + int32_t c1 = device.isacs.output.settings.transfer.code[i - 1]; + int32_t c2 = device.isacs.output.settings.transfer.code[i]; return isacsInterpolate(voltage, v1, v2, c1, c2); } } - return device.isacs.output.interpolator.settings.code[device.isacs.output.interpolator.settings.points - 1]; + return device.isacs.output.settings.transfer.code[device.isacs.output.settings.transfer.points - 1]; } /* @@ -199,16 +207,16 @@ */ void isacsProcess(void) { - device.isacs.input.voltage = isacsInputCodeToVoltage(device.controller.SSP.in[4]); - device.isacs.input.sum += device.isacs.input.voltage; + device.isacs.input.state.voltage = isacsInputCodeToVoltage(device.controller.SSP.in[4]); + device.isacs.input.state.sum += device.isacs.input.state.voltage; if (device.measurement.counter == 31) { - device.isacs.input.average = device.isacs.input.sum >> 5; - device.isacs.input.sum = 0; + device.isacs.input.state.average = device.isacs.input.state.sum >> 5; + device.isacs.input.state.sum = 0; if (device.isacs.regulator.state.enabled) { - device.isacs.regulator.state.error = device.isacs.regulator.state.reference - device.isacs.input.average; - device.isacs.output.voltage += device.isacs.regulator.state.error * device.isacs.regulator.state.scale; - device.controller.SSP.out[0] = isacsOutputVoltageToCode(device.isacs.output.voltage); + device.isacs.regulator.state.error = device.isacs.regulator.state.reference - device.isacs.input.state.average; + device.isacs.output.state.voltage += device.isacs.regulator.state.error * device.isacs.regulator.state.scale; + device.controller.SSP.out[0] = isacsOutputVoltageToCode(device.isacs.output.state.voltage); } } } \ No newline at end of file