aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Made thermal adjustment speed change depending on how far it needs to go.Selene ToyKeeper2018-01-041-5/+35
| | | | | | | | | (faster for large changes, much slower for smaller changes) (actual thermal behavior not tested yet) Made lockout mode moon match the current ramp instead of using the lowest of both. Made ramp-type toggle stop doing gradual adjustments back to the previous ramp's level (I hope). Added LVP to muggle mode.
* Debouncing finally works (at least, it does on my two test hosts).Selene ToyKeeper2017-12-124-56/+25
|
* Greatly improved button debouncing. Helps a lot on FW3A and my light saber.Selene ToyKeeper2017-12-114-7/+57
| | | | | Debouncing isn't 100% yet though.
* Working toward a FW3A release now. Made strobes use Nx7135 (when available) ↵Selene ToyKeeper2017-12-112-20/+38
| | | | | | | instead of FET. Added some ideas. Simplified some syntax.
* Made it possible to override address of eeprom array in RAM.Selene ToyKeeper2017-12-032-0/+8
| | | | | (useful when trying to use a single large data structure without wasting twice its size in RAM)
* Added a candle flicker mode to Anduril. Easy to enable/disable at compile time.Selene ToyKeeper2017-11-081-8/+85
|
* Added an incredibly simple muggle mode... 1-mode, on/off only, disconnect ↵Selene ToyKeeper2017-11-061-0/+59
| | | | power to exit.
* Made FSM eeprom more atomic by writing marker byte last.Selene ToyKeeper2017-11-061-1/+4
|
* Moved indicator_led() from Anduril into FSM. Made it auto-set indicator ↵Selene ToyKeeper2017-10-214-75/+79
| | | | | | | | | level based on ramp level. Made Anduril configure voltage fudge and indicator LED functions based on driver type. Removed "ticks_spent_awake" thing since it's redundant. EV_tick arg does the same thing in fewer bytes. Rearranged some clauses in off_state to put events in a more coherent order.
* Delay un-setting go_to_standby until the last moment, in case set_level() ↵Selene ToyKeeper2017-10-211-1/+1
| | | | wants to use it.
* Made DELAY_ZERO_TIME a per-MCU option; hopefully will sync to PWM better ↵Selene ToyKeeper2017-10-212-1/+11
| | | | | | | | that way. Added BLF Q8 driver type, but it's basically identical to the D4 except in name. (can be used to auto-detect whether to use indicator LED, and what the diode drop constant should be)
* Made indicator LED turn on/off in lightning mode along with main LED.Selene ToyKeeper2017-10-201-0/+15
|
* Er, don't save_config() every frame... wait until the user lets go of the ↵Selene ToyKeeper2017-10-202-4/+7
| | | | button.
* Added Q8 indicator LED support to Anduril.Selene ToyKeeper2017-10-201-0/+77
| | | | | Includes options for off/low/high during regular operation and during lockout mode (two different settings).
* Updated more temperature bits to be 14.1 instead of 13.2.Selene ToyKeeper2017-10-061-3/+3
|
* Made HOLD_TIMEOUT and RELEASE_TIMEOUT define-able in the UI code.Selene ToyKeeper2017-10-061-0/+4
|
* Temperature is 14.1 now, now 13.2. Divide by 2 instead of 4 before display.Selene ToyKeeper2017-10-061-1/+1
|
* Use either full or quarter speed in nice delays, based on output level.Selene ToyKeeper2017-10-011-1/+19
| | | | | | This fixes issues with some blinky modes being audible (particularly biking and lightning modes), without sacrificing the power savings for other blinkies (like beacon and battcheck).
* Made dual-switch startup optionally go to moon if e-switch is held.Selene ToyKeeper2017-09-291-1/+6
|
* Added option to start at memorized level, for momentary use on dual-switch ↵Selene ToyKeeper2017-09-293-5/+49
| | | | | | | lights. Renamed WL versions of eeprom functions, for naming consistency.
* Make sure hold-from-off ramps up, not down.Selene ToyKeeper2017-09-281-0/+3
|
* Added reversing to Anduril. Made EV_tick always send 0 while in "hold" state.Selene ToyKeeper2017-09-282-5/+40
| | | | | Reversing is a build-time option.
* Rearranged some build options and made sure the build still works if some ↵Selene ToyKeeper2017-09-282-11/+32
| | | | are turned off.
* Fixed issue where double-click-from-off followed by ↵Selene ToyKeeper2017-09-281-1/+0
| | | | double-click-to-true-turbo would overwrite memory with the ceiling level.
* Fleshed out options to blink at floor, ceiling, and channel boundaries.Selene ToyKeeper2017-09-281-18/+32
|
* Adjusted bike flasher floor and ceiling:Selene ToyKeeper2017-09-281-3/+4
| | | | | | - floor high enough to make sure it always blinks - ceiling can be higher than halfway up the ramp
* Er, set the clock speed *before* going idle, not after. :)Selene ToyKeeper2017-09-261-3/+4
|
* Added dynamic underclocking to FSM, instead of doing it manually in Anduril.Selene ToyKeeper2017-09-266-24/+63
|
* Fixed moon in lockout state. Was too low since the MCU wasn't underclocked.Selene ToyKeeper2017-09-261-2/+3
|
* Dropped moon power another 0.5 mA.Selene ToyKeeper2017-09-251-5/+11
| | | | | Fixed clock speed related brightness glitch when turning on at moon mode.
* Moved halfspeed thing so it'll affect goodnight mode too.Selene ToyKeeper2017-09-241-10/+9
|
* Reduced standby power by 700X by turning off brownout detection.Selene ToyKeeper2017-09-241-1/+1
| | | | | (from 24.7 uA to 0.35 uA)
* Cut moon power from ~4mA to ~2.5mA by running clock at half speed on very ↵Selene ToyKeeper2017-09-243-4/+37
| | | | | | | | | low modes. Adjusted default FET+1 ramp to compensate for speed bump. Added define(s) for whether to blink at ramp floor/ceiling/channel edges. Lowered default moon level to 1, since slower speed makes it brighter and more stable.
* Added idle to goodnight mode, for 2mA less power at all levels.Selene ToyKeeper2017-09-241-6/+11
| | | | | Reduced ROM size slightly by avoiding repeated access to the volatile current_state var.
* Removed unused code from first idle_mode(); experiment.Selene ToyKeeper2017-09-243-25/+1
|
* Added idle_mode() for slightly lower power use without turning off any ↵Selene ToyKeeper2017-09-244-3/+54
| | | | | | | | regular functions. (PWM, ADC, WDT all still enabled; only useful in moon mode) Changed default ceilings in Anduril FW3A config.
* Forgot to include a copy of the GPL before.Selene ToyKeeper2017-09-221-0/+674
| | | | | It's in other parts of the repo, but it should be in the FSM dir too.
* Updated the FSM docs a bit, for things added or changed since the last time ↵Selene ToyKeeper2017-09-221-0/+58
| | | | I touched the docs.
* Added anduril UI diagram.Selene ToyKeeper2017-09-222-0/+3428
|
* Updated Meteor UI to use provided go_to_standby. Started on UI3, but it's ↵Selene ToyKeeper2017-09-221-12/+74
| | | | | | | not really working yet. Needs some underlying plumbing changes first, adding support for medium-length clicks.
* Slightly increased resolution of VOLTAGE_FUDGE_FACTOR.Selene ToyKeeper2017-09-222-3/+4
| | | | | | My lights seemed to measure just a bit low, so hopefully this will help. It bumps up reported values by 0.05V.
* Added FW3A driver support to FSM and Anduril.Selene ToyKeeper2017-09-223-20/+73
| | | | | | Made lightning storm mode look a bit more like real lightning. Minor refactoring on how single-option config modes save state.
* Fixed a bug in gradual_tick(), I think.Selene ToyKeeper2017-09-102-3/+4
| | | | | | | | | | It was off by one, and caused actual_level to be off by one, which caused other parts of the code to do weird things... - end-of-ramp blink would happen repeatedly. - ramping up went slower (or not at all, with gradual_tick on each tick) - would sometimes trigger underheating code at moon level, and then glide up to the minimum regulation floor
* Applied recent changes to UI description text.Selene ToyKeeper2017-09-101-7/+16
|
* Moved strobes from 5 clicks to "click, click, long-click".Selene ToyKeeper2017-09-102-8/+28
| | | | | Moved momentary mode from 6 clicks to 5 clicks.
* Adjusted thermal regulation based on results of some handheld runtime tests.Selene ToyKeeper2017-09-101-2/+2
| | | | | | It was bouncing before, and now it's not. (cut response magnitude in half, increased width of null zone)
* Made thermal regulation slightly more prediction-heavy, less noisy at stable ↵Selene ToyKeeper2017-09-101-8/+11
| | | | | | | | | | | state, and slightly smaller. Added a bit of overflow protection since I think I saw it overflow with the prediction weight increased. Uses immediate temperature (instead of avg) for lowpass reset, to make it less noisy at stable state. (more trigger-happy reset switch biases it toward inaction) Avoid using volatile var, to reduce space. Overflow prevention also caps the maximum adjustment step, which should slightly help prevent overshooting the target.
* Rewrote gradual_tick(). Is smaller, better, and safer now.Selene ToyKeeper2017-09-092-118/+30
| | | | | Decreased gradual adjustment speed again to make thermal regulation less stair-stepped.
* Reworked thermal regulation.Selene ToyKeeper2017-09-093-31/+60
| | | | | | | | | | | | | | | | Now actually works on turbo (was previously emitting "temp low" instead of "temp high" while in direct-drive, probably due to an overflow). Made stepdown work based on an average of the last few temperature predictions instead of just the most recent one. (reduced noise sensitivity) Made each temperature sample based on 8 measurements instead of 4, to reduce noise. Made standby mode re-init thermal measurement arrays, to avoid weird behavior next time light is used. Reduced fixed-point precision to avoid overflows. Reduced prediction strength to encourage stepping down faster while hot. (unfortunately also steps down later, I think, if it wasn't already hot) Not totally happy with new algorithm, but it's the least crappy of a whole bunch of things I tried. (for example, a PID approach with correction based mostly on I... didn't work very well) (taking an average of the last few predictions is very similar though, and works) (but the result is still kind of meh) Saving this so I'll have a functional base next time I try to improve it.
* Made thermal regulation adjust smoothly (1 PWM step at a time) to make ↵Selene ToyKeeper2017-09-093-4/+190
| | | | | | | | | | | adjustments less noticeable. Added set_level_gradually() and gradual_tick() to ramping lib. Not terribly happy with it yet, but it at least works in practice. Added extra thermal regulation checks because I was running into stupid behavior in edge cases. Increased lowest thermal stepdown level to MAX_LEVEL/3 because it was going down way too low before. (is still pretty low, but not quite as bad)