diff options
| author | Selene ToyKeeper | 2023-11-02 17:16:25 -0600 |
|---|---|---|
| committer | Selene ToyKeeper | 2023-11-02 17:16:25 -0600 |
| commit | 7cb4fe0944b839f28dfd96a88a772cd6a8b58019 (patch) | |
| tree | 8d3b203f1650edc28b1f67e1589e3bc870b33fa6 /hwdef-thefreeman-boost21-mp3431-hdr-dac-argb.c | |
| parent | added LICENSE (GPLv3) (diff) | |
| download | anduril-7cb4fe0944b839f28dfd96a88a772cd6a8b58019.tar.gz anduril-7cb4fe0944b839f28dfd96a88a772cd6a8b58019.tar.bz2 anduril-7cb4fe0944b839f28dfd96a88a772cd6a8b58019.zip | |
reorganized project files (part 1)
(just moved files, didn't change the contents yet,
and nothing will work without updating #includes and build scripts and stuff)
Diffstat (limited to 'hwdef-thefreeman-boost21-mp3431-hdr-dac-argb.c')
| -rw-r--r-- | hwdef-thefreeman-boost21-mp3431-hdr-dac-argb.c | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/hwdef-thefreeman-boost21-mp3431-hdr-dac-argb.c b/hwdef-thefreeman-boost21-mp3431-hdr-dac-argb.c deleted file mode 100644 index 31feec9..0000000 --- a/hwdef-thefreeman-boost21-mp3431-hdr-dac-argb.c +++ /dev/null @@ -1,90 +0,0 @@ -// thefreeman boost driver 2.1 output helper functions -// Copyright (C) 2023 Selene ToyKeeper -// SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "chan-rgbaux.c" - -void set_level_zero(); - -void set_level_main(uint8_t level); -bool gradual_tick_main(uint8_t gt); - - -Channel channels[] = { - { // main LEDs - .set_level = set_level_main, - .gradual_tick = gradual_tick_main - }, - RGB_AUX_CHANNELS -}; - - -void set_level_zero() { - DAC_LVL = 0; // DAC off - DAC_VREF = V055; // low Vref - HDR_ENABLE_PORT &= ~(1 << HDR_ENABLE_PIN); // HDR off - - // prevent post-off flash - IN_NFET_ENABLE_PORT |= (1 << IN_NFET_ENABLE_PIN); - delay_4ms(IN_NFET_DELAY_TIME/4); - IN_NFET_ENABLE_PORT &= ~(1 << IN_NFET_ENABLE_PIN); - - // turn off boost last - BST_ENABLE_PORT &= ~(1 << BST_ENABLE_PIN); // BST off -} - -// single set of LEDs with 1 regulated power channel -// and low/high HDR plus low/high Vref as different "gears" -void set_level_main(uint8_t level) { - uint8_t noflash = 0; - - // when turning on from off, use IN_NFET to prevent a flash - if ((! actual_level) && (level < HDR_ENABLE_LEVEL_MIN)) { - noflash = 1; - IN_NFET_ENABLE_PORT |= (1 << IN_NFET_ENABLE_PIN); - } - - // BST on first, to give it a few extra microseconds to spin up - BST_ENABLE_PORT |= (1 << BST_ENABLE_PIN); - - // pre-load ramp data so it can be assigned faster later - PWM_DATATYPE dac_lvl = PWM_GET(pwm1_levels, level); - PWM_DATATYPE dac_vref = PWM_GET(pwm_tops, level); - - // enable HDR on top half of ramp - if (level >= (HDR_ENABLE_LEVEL_MIN-1)) - HDR_ENABLE_PORT |= (1 << HDR_ENABLE_PIN); - else - HDR_ENABLE_PORT &= ~(1 << HDR_ENABLE_PIN); - - // set these in successive clock cycles to avoid getting out of sync - // (minimizes ramp bumps when changing gears) - DAC_LVL = dac_lvl; - DAC_VREF = dac_vref; - - if (noflash) { - // wait for flash prevention to finish - delay_4ms(IN_NFET_DELAY_TIME/4); - IN_NFET_ENABLE_PORT &= ~(1 << IN_NFET_ENABLE_PIN); - } -} - -bool gradual_tick_main(uint8_t gt) { - // if HDR and Vref "engine gear" is the same, do a small adjustment... - // otherwise, simply jump to the next ramp level - // and let set_level() handle any gear changes - - PWM_DATATYPE dac_next = PWM_GET(pwm1_levels, gt); - PWM_DATATYPE vref_next = PWM_GET(pwm_tops, gt); - - // different gear = full adjustment - if (vref_next != DAC_VREF) return true; // let parent set_level() for us - - // same gear = small adjustment - GRADUAL_ADJUST_SIMPLE(dac_next, DAC_LVL); - if (dac_next == DAC_LVL) return true; // done - - return false; // not done yet -} - |
