diff options
| author | Selene ToyKeeper | 2022-04-14 19:59:55 -0600 |
|---|---|---|
| committer | Selene ToyKeeper | 2022-04-14 19:59:55 -0600 |
| commit | 2527602a3680f2e0d4217359e0a142920621f739 (patch) | |
| tree | b60de4907679be3108abe0c26450c9dd735203ef /spaghetti-monster | |
| parent | revert spurious change to version.h (diff) | |
| parent | Created LED_DISABLE_DELAY option and enabled it for SP10 Pro to hopefully eli... (diff) | |
| download | anduril-2527602a3680f2e0d4217359e0a142920621f739.tar.gz anduril-2527602a3680f2e0d4217359e0a142920621f739.tar.bz2 anduril-2527602a3680f2e0d4217359e0a142920621f739.zip | |
merged gchart's latest changes:
- sp10-pro shutoff fix
- mt35-mini support
- power channel enable/disable timing delays
(though I wouldn't recommend doing 80ms like the thefreeman code does,
since that's more than one WDT cycle (16ms))
Diffstat (limited to 'spaghetti-monster')
| -rw-r--r-- | spaghetti-monster/anduril/MODELS | 1 | ||||
| -rw-r--r-- | spaghetti-monster/anduril/cfg-mateminco-mt35-mini.h | 51 | ||||
| -rw-r--r-- | spaghetti-monster/anduril/cfg-sofirn-sp10-pro.h | 15 | ||||
| -rw-r--r-- | spaghetti-monster/fsm-ramping.c | 26 |
4 files changed, 92 insertions, 1 deletions
diff --git a/spaghetti-monster/anduril/MODELS b/spaghetti-monster/anduril/MODELS index d2d509a..329cc4d 100644 --- a/spaghetti-monster/anduril/MODELS +++ b/spaghetti-monster/anduril/MODELS @@ -51,6 +51,7 @@ Model Name MCU 0441 ff-e01 attiny85 0511 mateminco-mf01s attiny85 0521 mateminco-mf01-mini attiny85 +0531 mateminco-mt35-mini attiny85 0611 blf-q8 attiny85 0612 sofirn-sp36 attiny85 0613 blf-q8-t1616 attiny1616 diff --git a/spaghetti-monster/anduril/cfg-mateminco-mt35-mini.h b/spaghetti-monster/anduril/cfg-mateminco-mt35-mini.h new file mode 100644 index 0000000..b409c39 --- /dev/null +++ b/spaghetti-monster/anduril/cfg-mateminco-mt35-mini.h @@ -0,0 +1,51 @@ +// Mateminco MT35 Mini / Astrolux FT03 +#define MODEL_NUMBER "0531" +#include "hwdef-Mateminco_MT35-Mini.h" +// ATTINY: 85 + +// this light should be fine running a bit hotter than most +#undef DEFAULT_THERM_CEIL +#define DEFAULT_THERM_CEIL 55 + +// the button lights up +#define USE_INDICATOR_LED +// the button is visible while main LEDs are on +#define USE_INDICATOR_LED_WHILE_RAMPING + +// enable blinking aux LEDs +#define TICK_DURING_STANDBY +#define STANDBY_TICK_SPEED 3 // every 0.128 s + +#define RAMP_LENGTH 150 +// level_calc.py fifth 2 150 7135 1 1 120 FET 1 10 2000 +#define PWM1_LEVELS 1,2,2,3,4,5,6,7,8,9,11,13,14,16,18,21,23,26,28,31,35,38,41,45,49,53,58,63,67,73,78,84,90,96,102,109,116,124,131,139,147,156,165,174,184,194,204,215,226,237,249,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0 +#define PWM2_LEVELS 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,3,4,5,6,7,8,9,10,11,12,14,15,16,17,18,20,21,22,24,25,27,28,30,31,33,35,36,38,40,42,43,45,47,49,51,53,55,57,59,62,64,66,68,71,73,75,78,80,83,86,88,91,94,96,99,102,105,108,111,114,117,120,124,127,130,134,137,140,144,148,151,155,159,162,166,170,174,178,182,186,190,195,199,203,208,212,217,221,226,231,235,240,245,250,255 +#define DEFAULT_LEVEL 46 +#define MAX_1x7135 52 +#define HALFSPEED_LEVEL 20 +#define QUARTERSPEED_LEVEL 10 + +#define RAMP_SMOOTH_FLOOR 1 +#define RAMP_SMOOTH_CEIL 112 +#define RAMP_DISCRETE_FLOOR 10 +#define RAMP_DISCRETE_CEIL RAMP_SMOOTH_CEIL +#define RAMP_DISCRETE_STEPS 7 + +// safe limit ~33% power +#define SIMPLE_UI_FLOOR RAMP_DISCRETE_FLOOR +#define SIMPLE_UI_CEIL RAMP_LENGTH +#define SIMPLE_UI_STEPS 5 + +// stop panicking at ~40% power +#define THERM_FASTER_LEVEL 120 +#define MIN_THERM_STEPDOWN 95 // ~600 lumens +#define THERM_RESPONSE_MAGNITUDE 16 // smaller adjustments, big body. default = 64 + +#define DEFAULT_2C_STYLE 1 // enable 2 click turbo (Anduril 1 style) + +#ifdef BLINK_AT_RAMP_MIDDLE +#undef BLINK_AT_RAMP_MIDDLE +#endif + +// Allow 3C in Simple UI for switching between smooth and stepped ramping +#define USE_SIMPLE_UI_RAMPING_TOGGLE diff --git a/spaghetti-monster/anduril/cfg-sofirn-sp10-pro.h b/spaghetti-monster/anduril/cfg-sofirn-sp10-pro.h index bcfc80e..a3463ae 100644 --- a/spaghetti-monster/anduril/cfg-sofirn-sp10-pro.h +++ b/spaghetti-monster/anduril/cfg-sofirn-sp10-pro.h @@ -71,3 +71,18 @@ // enable factory reset on 13H without loosening tailcap #define USE_SOFT_FACTORY_RESET + +// set fuses, these carry over to the ELF file but not the HEX file +// we need this for enabling BOD in Active Mode from the factory. +// settings can be verified / dumped from the ELF file using this +// command: avr-objdump -d -S -j .fuse anduril.elf +FUSES = { + .WDTCFG = FUSE_WDTCFG_DEFAULT, /* Watchdog Configuration */ + .BODCFG = FUSE_ACTIVE0_bm, /* BOD Configuration */ + .OSCCFG = FUSE_OSCCFG_DEFAULT, /* Oscillator Configuration */ + .TCD0CFG = FUSE_TCD0CFG_DEFAULT, /* TCD0 Configuration */ + .SYSCFG0 = FUSE_SYSCFG0_DEFAULT, /* System Configuration 0 */ + .SYSCFG1 = FUSE_SYSCFG1_DEFAULT, /* System Configuration 1 */ + .APPEND = FUSE_APPEND_DEFAULT, /* Application Code Section End */ + .BOOTEND = FUSE_BOOTEND_DEFAULT, /* Boot Section End */ +};
\ No newline at end of file diff --git a/spaghetti-monster/fsm-ramping.c b/spaghetti-monster/fsm-ramping.c index abbfbde..2e6901d 100644 --- a/spaghetti-monster/fsm-ramping.c +++ b/spaghetti-monster/fsm-ramping.c @@ -93,6 +93,10 @@ void set_level(uint8_t level) { TINT1_LVL = 0; TINT2_LVL = 0; #endif + // for drivers with a slow regulator chip (eg, boost converter, delay before turning off to prevent flashes + #ifdef LED_DISABLE_DELAY + delay_4ms(LED_DISABLE_DELAY/4); + #endif // disable the power channel, if relevant #ifdef LED_ENABLE_PIN LED_ENABLE_PORT &= ~(1 << LED_ENABLE_PIN); @@ -104,6 +108,10 @@ void set_level(uint8_t level) { // enable the power channel, if relevant #ifndef USE_TINT_RAMPING // update_tint handles this better #ifdef LED_ENABLE_PIN + #ifdef LED_ENABLE_DELAY + uint8_t led_enable_port_save = LED_ENABLE_PORT; + #endif + #ifndef LED_ENABLE_PIN_LEVEL_MIN LED_ENABLE_PORT |= (1 << LED_ENABLE_PIN); #else @@ -114,9 +122,25 @@ void set_level(uint8_t level) { else // disable during other parts of the ramp LED_ENABLE_PORT &= ~(1 << LED_ENABLE_PIN); #endif + + // for drivers with a slow regulator chip (eg, boost converter, delay before lighting up to prevent flashes + #ifdef LED_ENABLE_DELAY + if (LED_ENABLE_PORT != led_enable_port_save) // only delay if the pin status changed + delay_4ms(LED_ENABLE_DELAY/4); + #endif #endif #ifdef LED2_ENABLE_PIN - LED2_ENABLE_PORT |= (1 << LED2_ENABLE_PIN); + #ifdef LED2_ENABLE_DELAY + uint8_t led2_enable_port_save = LED2_ENABLE_PORT; + #endif + + LED2_ENABLE_PORT |= (1 << LED2_ENABLE_PIN); + + // for drivers with a slow regulator chip (eg, boost converter, delay before lighting up to prevent flashes + #ifdef LED2_ENABLE_DELAY + if (LED2_ENABLE_PORT != led2_enable_port_save) // only delay if the pin status changed + delay_4ms(LED2_ENABLE_DELAY/4); + #endif #endif #endif // ifndef USE_TINT_RAMPING |
