aboutsummaryrefslogtreecommitdiff
path: root/hw/thefreeman/avr32dd20-devkit
diff options
context:
space:
mode:
authorSelene ToyKeeper2023-11-24 06:29:56 -0700
committerSelene ToyKeeper2023-11-24 06:29:56 -0700
commit8c237206aba74f9096d85f90209ac6b7dc238b1b (patch)
tree529b22b5dec28bdab1029016dde9d85d80039c57 /hw/thefreeman/avr32dd20-devkit
parentavr32dd20-devkit: make the defaults a bit more dev friendly (diff)
downloadanduril-8c237206aba74f9096d85f90209ac6b7dc238b1b.tar.gz
anduril-8c237206aba74f9096d85f90209ac6b7dc238b1b.tar.bz2
anduril-8c237206aba74f9096d85f90209ac6b7dc238b1b.zip
more ADC / DAC / MCU progress...
- fixed t1616 Vref values getting clobbered sometimes, wrapped setting those in a #define'd function for ease and consistency - moved some DAC definitions from hw/ to arch/ to reduce repetition - fixed thefreeman's other builds - switched from PWM_TOPS to PWM2_LEVELS (I'm trying to phase out _TOPS)
Diffstat (limited to 'hw/thefreeman/avr32dd20-devkit')
-rw-r--r--hw/thefreeman/avr32dd20-devkit/anduril.h25
-rw-r--r--hw/thefreeman/avr32dd20-devkit/hwdef.h20
2 files changed, 8 insertions, 37 deletions
diff --git a/hw/thefreeman/avr32dd20-devkit/anduril.h b/hw/thefreeman/avr32dd20-devkit/anduril.h
index ee3765a..02d5de3 100644
--- a/hw/thefreeman/avr32dd20-devkit/anduril.h
+++ b/hw/thefreeman/avr32dd20-devkit/anduril.h
@@ -1,5 +1,5 @@
-// thefreeman's BST21 BST20-FWxA (no button LED)
-// Copyright (C) 2023 TBD (thefreeman), Selene ToyKeeper
+// thefreeman's avr32dd20 devkit board
+// Copyright (C) 2023 thefreeman, Selene ToyKeeper
// SPDX-License-Identifier: GPL-3.0-or-later
#pragma once
@@ -20,7 +20,6 @@
// - high 2.5 V
// HDR ratio: 160
// PWM1: DAC Data
-#if 1
// level_calc.py 4.3287 1 150 7135 5 0.01 1400 --pwm 400000
// top level for each "gear": 30 40 120 150
#define PWM1_LEVELS \
@@ -36,26 +35,6 @@
#define MAX_1x7135 40
#define HDR_ENABLE_LEVEL_MIN 41
#define DEFAULT_LEVEL 50
-#else
-// level_calc.py 9.21 1 150 7135 5 0.2 1400 --pwm 400000
-// (plus dac-scale.py post-processing to get values for HDR+Vref ranges)
-// top level for each "gear": 35 48 127 150
-#define PWM1_LEVELS \
- 5, 11, 18, 25, 33, 41, 50, 60, 71, 83, 96, 110, 125, 141, 158, 177, 198, 220, 244, 269, 297, 326, 358, 392, 429, 469, 511, 556, 605, 657, 713, 772, 836, 904, 976, \
- 431, 465, 501, 539, 580, 624, 670, 720, 772, 828, 887, 950,1017, \
- 16, 17, 18, 20, 21, 23, 24, 26, 27, 29, 31, 33, 35, 37, 40, 42, 45, 48, 51, 54, 57, 60, 64, 68, 72, 76, 80, 85, 90, 95, 100, 106, 112, 118, 124, 131, 138, 145, 153, 161, 170, 179, 188, 198, 208, 219, 230, 242, 254, 266, 280, 294, 308, 323, 339, 355, 373, 391, 409, 429, 449, 470, 492, 515, 539, 564, 589, 616, 644, 673, 704, 735, 768, 802, 837, 874, 912, 952, 993, \
- 424, 442, 461, 480, 501, 522, 544, 566, 590, 614, 640, 666, 693, 721, 750, 780, 811, 844, 877, 912, 948, 985,1023
-// Vref selector (V10, V20, V25, V40 = 1.024V, 2.048V, 2.5V, 4.096V)
-#define PWM2_LEVELS \
- V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, \
- V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, \
- V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, \
- V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25
-
-#define MAX_1x7135 48
-#define DEFAULT_LEVEL 48
-#define HDR_ENABLE_LEVEL_MIN 49 // when HDR FET turns ON
-#endif
// no PWM, so MCU clock speed can be slow
#define HALFSPEED_LEVEL 41
diff --git a/hw/thefreeman/avr32dd20-devkit/hwdef.h b/hw/thefreeman/avr32dd20-devkit/hwdef.h
index a5b37a9..f1b6095 100644
--- a/hw/thefreeman/avr32dd20-devkit/hwdef.h
+++ b/hw/thefreeman/avr32dd20-devkit/hwdef.h
@@ -39,7 +39,7 @@
* LVB is for OTSM firmware, not used here
*/
-#define HWDEF_C thefreeman/avr32dd20-devkit/hwdef.c
+#define HWDEF_C thefreeman/avr32dd20-devkit/hwdef.c
// allow using aux LEDs as extra channel modes
#include "fsm/chan-rgbaux.h"
@@ -59,8 +59,6 @@ enum CHANNEL_MODES {
#define CHANNEL_MODES_ENABLED 0b0000000000000001
-#define PWM_CHANNELS 1 // old, remove this
-
#undef GRADUAL_ADJUST_SPEED
#define GRADUAL_ADJUST_SPEED 4
@@ -73,15 +71,7 @@ enum CHANNEL_MODES {
#define PWM2_GET(l) PWM_GET8(pwm2_levels, l)
// main LED outputs
-#define DAC_LVL DAC0_DATA // 0 to 255, for 0V to Vref
-#define DAC_VREF VREF_DAC0REF // 1.024V, 2.048V, 4.096V, or 2.5V
-//#define DAC_VREF VREF.ADC0REF // 1.024V, 2.048V, 4.096V, or 2.5V
-#define PWM_TOP_INIT 255 // highest value used in top half of ramp (unused?)
-// Vref values
-#define V10 VREF_REFSEL_1V024_gc
-#define V20 VREF_REFSEL_2V048_gc
-#define V25 VREF_REFSEL_2V500_gc
-#define V40 VREF_REFSEL_4V096_gc
+// (DAC_LVL + DAC_VREF + Vref values are defined in arch/*.h)
// BST enable
#define BST_ENABLE_PIN PIN5_bp
@@ -113,6 +103,7 @@ enum CHANNEL_MODES {
#define ADMUX_VOLTAGE_DIVIDER ADC_MUXPOS_AIN26_gc
#define DUAL_VOLTAGE_FLOOR (4*21) // for AA/14500 boost drivers, don't indicate low voltage if below this level
#define DUAL_VOLTAGE_LOW_LOW (4*7) // the lower voltage range's danger zone 0.7 volts (NiMH)
+// don't use the default VDD converter
// convert BATT LVL pin readings to FSM volt units
#undef voltage_raw2cooked
uint8_t voltage_raw2cooked(uint16_t measurement);
@@ -135,7 +126,8 @@ uint8_t voltage_raw2cooked(uint16_t measurement);
inline void hwdef_setup() {
- // TODO? for this DAC controlled-light, try to decrease the clock speed
+ // TODO: for this DAC controlled-light, try to decrease the clock speed
+ // to reduce overall system power
mcu_clock_speed();
VPORTA.DIR = PIN0_bm // R
@@ -180,7 +172,7 @@ inline void hwdef_setup() {
DAC_VREF = V10;
// TODO: try DAC_RUNSTDBY_bm for extra-efficient moon
DAC0.CTRLA = DAC_ENABLE_bm | DAC_OUTEN_bm;
- DAC_LVL = 0; // set the output voltage (off at boot)
+ DAC_LVL = 0; // turn off output at boot
// TODO: instead of enabling the DAC at boot, pull pin down
// to generate a zero without spending power on the DAC
// (and do this in set_level_zero() too)