Commit Graph

197 Commits

Author SHA1 Message Date
linuswck 489333c43d ld: save pwr_limit into settings 2024-04-10 16:56:20 +08:00
linuswck 4288d465c9 thermostat: Report temp_setpoint in degree celsius 2024-04-10 16:56:20 +08:00
linuswck d435dc06d8 fix typos 2024-03-25 15:43:20 +08:00
linuswck b1a1173075 cmd_handler: Add newline at the end of json sent 2024-03-25 15:43:20 +08:00
linuswck af68b0e90a Update rust, stm32-eth, hal, smoltcp versions 2024-03-25 15:43:12 +08:00
linuswck 7d41edef20 ld: Increase the delay before turning on LD_PWR
- Delay is tested and verified with oscilloscope
- Tested with 0.3A LD output current
2024-03-21 15:21:24 +08:00
linuswck 607da8a822 ld: Add a delay before turning on LD PWR
- DAC output might not drop to 0V before PWR is being turned on
- Thus, it might drive nondeterministic current into the laser diode during pwr up
2024-03-20 17:24:47 +08:00
linuswck 67f9e65df8 Start tec_readings_conversion after report is sent
- Before this fix, tec_readings only converts when eth_is_pending
2024-03-20 15:35:12 +08:00
linuswck 7d2e14ef2f eth: Poll Iface In ETH IRQ
- Improve responsiveness of TCP packets handling
- Fix a bug when one client is connected and active report is ON, the other client's cmds do not receive Ack from Kirdy
2024-03-20 15:32:28 +08:00
linuswck e9d5f4598a Fix wrong USB Product Description 2024-03-20 11:45:09 +08:00
linuswck 1867935047 Send report to connected socket
- Remove active report in flash settings
2024-03-19 17:38:29 +08:00
linuswck 99cf17f7e4 temp_mon: Add support for constant current mode 2024-03-19 14:52:26 +08:00
linuswck 0a01d299bc Fix wrong reporting of Thermostat Pwr_on status 2024-03-19 14:52:26 +08:00
linuswck dbbd438e92 ld: Fix unable to save & load ld_i flash settings 2024-03-19 14:48:25 +08:00
linuswck 3ad7c417f6 Fix a ld current ramp up bug
- During ld_i ramp up, if pwr up cmd is called, ld_i is set incorrectly
2024-03-18 16:41:55 +08:00
linuswck 0380c8d30b Unify naming and unit in firmware and driver
- mA, uA -> A
- K -> Degree Celsius
- tec -> thermostat
2024-03-18 15:55:05 +08:00
linuswck 1480305c16 max1968: Fix ADC+DMA does not start converting bug 2024-03-15 17:12:42 +08:00
linuswck 74c465d16f fix typos 2024-03-12 11:47:58 +08:00
linuswck a9dbff8250 Send Response Back to The Client after Recv Cmd 2024-03-08 16:38:52 +08:00
linuswck b7231f48ff Fix Recv Dfu cmd doesn't hard reset bug 2024-03-07 10:26:32 +08:00
linuswck 7f6a385e1d Support controls from multiple TCP Socket Clients 2024-03-06 16:30:31 +08:00
linuswck eff8adc184 Update Eth Link Speed with the detected Speed
- adds support to Half/FullDuplexBase10T, HalfDuplexBase100Tx Eth Speed
- fix a bug which Kirdy requires link to up to enter main loop
2024-03-06 12:15:08 +08:00
linuswck a579e5c5d5 Add default gateway into IpSettings 2024-03-06 10:34:57 +08:00
linuswck 65b757ac3c Add cmd to Store IP Settings in Flash
- Cmds Setup Flow: Set IP -> Save Settings to Flash -> Issue HardRst
2024-03-05 16:44:28 +08:00
linuswck 911d9a7bc9 Load & Config IP Settings from Flash at StartUp 2024-03-05 16:44:03 +08:00
linuswck 111d9a4226 cleanup 2024-03-05 16:33:49 +08:00
linuswck a3885c365e Implement Save & Load Flash Settings in FSM & cmd 2024-03-05 16:33:45 +08:00
linuswck a58b0954ec Add Set Default PWR On cmd for ld & tec 2024-03-05 10:35:05 +08:00
linuswck 92c6cf12d4 Add fns to apply ld, tec settings summary configs 2024-03-05 10:35:05 +08:00
linuswck ef2410f441 Add fns, struct items for getting ld, tec settings 2024-03-05 10:35:05 +08:00
linuswck adfa4f5fa3 Move TempAdcFilter struct def to Thermostat 2024-03-05 10:35:05 +08:00
linuswck df939eb9a3 Use FSM to manage device state in main loop 2024-03-05 10:35:01 +08:00
linuswck 3aca712e1d Fix typos 2024-03-04 10:32:33 +08:00
linuswck 4526536a48 Ignore packets of 0 bytes size 2024-03-01 11:31:06 +08:00
linuswck f488786e1c Use DMA to read Tec_I & Tec_V
- Remove the single conversion polling time with DMA
2024-03-01 11:31:01 +08:00
linuswck 46393bacdb Add comments on TCP client development 2024-02-28 13:00:02 +08:00
linuswck 6fc800e562 net: Set stm32 link speed with the Phy Speed read 2024-02-28 13:00:02 +08:00
linuswck 76477065be Change f64 to f32 for SI Unit related computation
- Save computational time
- Improve the processing speed of TecSetI cmd
2024-02-28 12:59:58 +08:00
linuswck b1fa0e51c8 Add a separate tec_set_i cmd to reduce overhead
- miniconf is slow at validating complex struct with large enum lists
2024-02-28 12:46:21 +08:00
linuswck 9f82fa58f4 cmd: Add temp adc filter config cmd 2024-02-28 12:23:09 +08:00
linuswck 19341672a9 Correct SPI Clock Freq and Set them to Max
- Set the SPI frequency to maximum to reduce data transaction time
- SPI1 SCLK is divided from PCLK2
- SPI2, SPI2 SCLK are divided from PCLK1
2024-02-28 12:23:09 +08:00
linuswck 86a9fb039e boot: Correct PCLK1, PCLK2 freq value
- PCLK is divided from HCLK in power of two
- abs max pclk1 = 42MHz
- abs max pclk2 = 84MHz
2024-02-28 12:23:09 +08:00
linuswck a2bb390ae2 ad7172: Add filter configs for single channel mode 2024-02-28 12:23:09 +08:00
linuswck 18dd0a7963 Save Thermostat and Laser Diode PWR On/Off status 2024-02-28 12:22:40 +08:00
linuswck d1cc677668 thermostat: split poll_adc & update_pid into 2 fns 2024-02-28 12:21:37 +08:00
linuswck c09ccc29cd cmd: Add cmd to get all device settings 2024-02-23 12:45:29 +08:00
linuswck c4135f6ac3 cmd: Add cmds to config pd_mon params 2024-02-22 16:44:45 +08:00
linuswck 6ee45b4814 thermostat: Limit Pid Temp SetPt to TempMon limits 2024-02-21 17:37:56 +08:00
linuswck a8787430b1 Add Temperature Monitor to Thermostat
- Issue an alarm when temperature goes out of user-defined operating range during Pid Controller startup
    or reading is outside of +-0.5 Degree from temperature set point after Pid Controller becomes stable
- If alarm is observed, power down laser and tec controller and disengage Pid Controller
- Add the corresponding cmd for configuring the temperature monitor
2024-02-21 17:32:11 +08:00
linuswck ed785b7c85 ld: correct timer and dac reset in pwr_up seq 2024-02-21 11:11:12 +08:00
linuswck 30ab228b4b ld: Set default ld_current_limit in setup() fn 2024-02-20 16:22:13 +08:00
linuswck 88cca12a60 ld: Use Timer IRQ to ramp up/down output current
- Fixes possible watchdog timeout
- Improves ethernet response time & thermostat Pid update interval consistency
2024-02-20 16:18:06 +08:00
linuswck 8139ebdc1b ld_ctrl: set_dac() fn now returns the volt set
- before this fix, set_dac() just returns the inputted voltage
2024-02-20 12:30:00 +08:00
linuswck 5f83b73011 cmd: Add active report mode cmd 2024-02-19 15:08:00 +08:00
linuswck 0642640da7 dfu: Add eth cmd, fns to put stm32 into dfu mode 2024-02-16 17:23:47 +08:00
linuswck 6dd1bf9301 hw_rev: Generate random mac address on rev0_3 2024-02-16 17:23:39 +08:00
linuswck 7a76325288 cmd: rm rev from cmd json
- not in used
2024-02-15 12:14:14 +08:00
linuswck ffa5f4e8ff pid: Use Thermostat's PID algo instead of IDSP
- Has lower steady state error upon testing with PID autotune
2024-02-15 12:14:14 +08:00
linuswck e9a396f001 thermostat: Add abs timestamp to StatusReport 2024-02-15 12:14:14 +08:00
linuswck 412f5ec58b cmd: add cmds to poll tec temp, dis/enable pid 2024-02-15 12:14:14 +08:00
linuswck e29898f8f8 fix typos 2024-02-15 12:14:14 +08:00
linuswck 60a79d1780 rename get_term_status -> get_lf_mod_in_impedance 2024-02-15 12:14:14 +08:00
linuswck b0edd3dba2 hw_rev: Wait for 5s b4 gpio init instead of 1.5s
- See Issue #32
2024-02-15 12:14:14 +08:00
linuswck 6b05b2d851 Fix Power Up Hw Issue
- See Issue #32 on Kirdy Hw Repo
2024-02-07 12:46:13 +08:00
linuswck f22ab430b8 pid: Use IDSP impl of Pid, Add Eth Pid Ctrl Cmds 2024-02-07 11:56:38 +08:00
linuswck 4cd650367d thermostat: cleanup pid_engaged fn 2024-02-05 15:14:51 +08:00
linuswck de262b849d eth: Add Thermostat related json cmd 2024-02-05 15:14:23 +08:00
linuswck 4132bfacd3 boot: Set thermostat & LD init output current to 0 2024-02-02 17:37:37 +08:00
linuswck 6096711d2c eth: Poll and Handle Json based Ld ctrl cmd
- Upgrade to miniconf 9.0
- Only non report related laser diode ctrl command is implemented
2024-02-02 17:35:58 +08:00
linuswck 3d3d6f5cb5 ld: cleanup 2024-02-02 17:23:39 +08:00
linuswck 172c3e1dfc cleanup boot.rs, thermostat.rs 2024-02-01 16:23:52 +08:00
linuswck ee0ed8ebe7 eth: add drivers for init, polling & sending data 2024-02-01 16:20:36 +08:00
linuswck 771f2813f7 gpio: correct wrong eth pin definition 2024-01-31 17:15:32 +08:00
linuswck 4e0d14def2 laser: Add driver and fn to get termination status 2024-01-30 13:01:33 +08:00
linuswck f6677d874c LD: Rst LD current at power_up for soft start 2024-01-26 16:56:55 +08:00
linuswck d391e3a1fb LD: Setting LD output current now ramps up slowly 2024-01-26 16:56:55 +08:00
linuswck edd30e94a0 laser_diode: Add fn to set pd_dark_i 2024-01-26 16:56:55 +08:00
linuswck ad731c2f15 rename pd_mon -> pd_responsitivity 2024-01-26 16:56:55 +08:00
linuswck 9d8a553669 pd_mon: add fns to convert between pwr and current 2024-01-26 16:56:55 +08:00
linuswck 6af0f992d5 LdPwrExcProtector: Cleanup 2024-01-26 16:56:55 +08:00
linuswck f50505feaf Rename Analog_Wdg -> LdPwrExcProtector 2024-01-26 16:56:55 +08:00
linuswck 9ae867cd88 max1968: rm redundant adc config 2024-01-26 16:56:55 +08:00
linuswck 85b50bf824 Analog_Wdg: Finish Power Excursion Protection fns
- Verified to be working
2024-01-26 16:56:39 +08:00
linuswck 07ea733b34 thermostst: Patch hw related settings for rev0_3 2024-01-24 12:25:45 +08:00
linuswck 5bea3f0e5f boot: init analog wdg & power up laser after cfg
- Verified to be boot-able on Rev0_3 board
2024-01-24 12:19:07 +08:00
linuswck af283b17ac laser_diode: use analog wdg fns 2024-01-24 12:18:42 +08:00
linuswck c3022e9db1 Analog_Wdg: Add GPIO init 2024-01-24 12:18:42 +08:00
linuswck c02181c80c laser diode: Add Analog Watchdog initial commit
- rm pid_state for laser diode
2024-01-24 12:18:42 +08:00
linuswck 095fe8ea69 AD7172: Rm deprecated warning for Rev0_2 hw bug 2024-01-24 12:18:42 +08:00
linuswck a0b67cdb09 MAX1968: Patch DacVfb pinout for rev0_3 2024-01-24 12:18:42 +08:00
linuswck 381f25f036 AD7172: correct wrong NSS pinout definition 2024-01-24 12:18:42 +08:00
linuswck c768bdc93a Thermostat: Add fn to calibrate ADC's VDDA
- ADC1 exclusive feature
- Calibrated VDDA val can be passed to other ADCs to adjust gain error
2024-01-24 12:18:42 +08:00
linuswck 0d12c902fc pd_mon: Separate ld_power calculation to a file 2024-01-24 12:18:37 +08:00
linuswck 3cfdee917a rename current_source -> ld_ctrl 2024-01-24 12:16:06 +08:00
linuswck 5f582be143 rename ld_drive to laser_diode 2024-01-24 12:16:06 +08:00
linuswck 2f7ca2a706 Thermostat: Add fns to report status & settings
- Report all system status, PID Settings, NTC parameter, TEC Settings
2024-01-24 12:16:06 +08:00
linuswck ff3d9b790a thermostat: pid_state rename variables 2024-01-24 12:16:06 +08:00
linuswck bc7bf9a6e7 rename channel_state -> pid_state 2024-01-24 12:16:02 +08:00
linuswck ca110962f7 Thermostat: Add pid_ctrl parms & its related fns
- setup: include the pid_ctrl
- poll_adc: Fetch Temperature and Update PID to set the current output
2024-01-24 12:16:02 +08:00
linuswck d0f226ce03 Thermostat: Add default to ChannelState 2024-01-24 12:16:02 +08:00