| Commit message (Collapse) | Author | Files | Lines |
|
(still need to update file contents afterward,
but doing it in a separate commit so git can detect renames easier)
|
|
(also modified the build scripts to work with the new file structure)
|
|
(just moved files, didn't change the contents yet,
and nothing will work without updating #includes and build scripts and stuff)
|
|
delays + smooth steps
Anduril has gradually gotten faster over the years, apparently, so it
needed longer delays to get accurate-ish timing for beacon and other modes.
Adding DSM also changes the timing perceptibly, so I made it possible to
calibrate the delay fudge factor on a per-build basis.
|
|
(but I could only test dm11-boost on actual hardware)
(also, it looks like dm11-sbt90 is almost identical to the base kr4 build,
so I removed its hwdef)
|
|
|
|
(also reduced avg standby power by about 15 uA)
(also fixed oscillating voltage mode colors, I think)
The bug happened because sometimes sleep LVP would get triggered, because the
ADC would read zero under some conditions.
This in turn happened because the ADC needs the MCU to be at least partially
awake in order to finish a measurement. So in standby mode, with the MCU only
waking up very briefly to send a sleep tick and go back to sleep, the ADC
required several cycles (like 375ms to 625ms) to finish a single measurement.
This varied depending on how many instructions the MCU executed while it was
awake. In the single-color mode, so few instructions were being executed that
the ADC seemed to time out and abort its measurement, returning a zero. Then a
low voltage warning was sent, which knocked the light back into "Off" mode.
Adding no-op instructions inside the single-color clause was sufficient to
prevent the ADC from timing out, because it kept the MCU awake just barely long
enough. But it was a kludge, and it still took like half a second to finish a
measurement, and the measurements were noisy. It also used more power, because
it required keeping the ADC powered on far too long.
This fix puts the MCU into "ADC Noise Reduction" mode instead, when a voltage
measurement is needed during sleep. It reduces noise to make measurements more
stable... but more importantly, it lets the measurement finish in like 0.5ms
instead of 500ms. So it uses less power and isn't dependent on the number of
calculations the MCU does during each "sleep tick".
As a bonus, this can also measure voltage much more often, while still using
less total energy than before. It was once every 8 seconds, and now it's once
per second.
Avg power use in aux low mode, on a D4Sv2: (avg of 30k samples each)
- before: 101 uA
- after: 86 uA
|
|
instead of full GPL headers (or all too often, nothing at all)
There are a few "FIXME" entries where I'm not sure about the correct copyright.
|
|
(new D1v2 comes in both flavors, and it's easier for everyone if
they can use the same firmware)
Also, removed lockout-abort bug on D1v2 (and DM11, I think).
Hopefully some day I'll have time to update to a newer compiler,
and then hopefully it won't have this issue any more... but for now,
it still uses a kludge to trick the compiler into working.
|
|
|
|
|
|
|
|
(had to guess about some hardware details, unsure if correct)
|
|
special clauses
(also adjusted KR4 jump start levels a bit)
|
|
and reduced the jump-start-moon power a bit too
(he says both are good now, but I don't have hardware to measure it myself)
The higher floor is because, when the driver is really hot from being on turbo,
going directly to moon causes the LEDs to turn off for a while until the driver cools.
The new floor is the lowest level where post-turbo activation works reliably.
However, it should turn on even at the level 1/150 when it's not hot.
|
|
|
|
(and also added "jump start moon" to it)
(and generally finished adding dynamic PWM support to FSM)
|
|
|
|
(the idea is "high but not crazy", or around 100% to 150% of thermally-sustainable level)
... and set the default steps to 5 instead of 3
|
|
(because they're close enough that they can use the same code)
|
|
|
|
raised therm faster level
|
|
milestone levels
|
|
reliable level
(moon level 1 flickers or doesn't work at all on some hardware)
|
|
|
|
|