aboutsummaryrefslogtreecommitdiff
path: root/hw/thefreeman/avr32dd20-devkit/hwdef.h
diff options
context:
space:
mode:
authorSelene ToyKeeper2024-03-12 13:17:47 -0600
committerSelene ToyKeeper2024-03-12 13:17:47 -0600
commit8dbc5c8b694a5a60b5f2bbc4228037eff119ba68 (patch)
tree4e2404dcbc74c175bc9c60a68bb18708f15cb521 /hw/thefreeman/avr32dd20-devkit/hwdef.h
parentadded wurkkos-ts25-boost (early version made from spec, no clue if it works) (diff)
parentenabled eeprom read/write stabilization by default on recent MCUs, (diff)
downloadanduril-8dbc5c8b694a5a60b5f2bbc4228037eff119ba68.tar.gz
anduril-8dbc5c8b694a5a60b5f2bbc4228037eff119ba68.tar.bz2
anduril-8dbc5c8b694a5a60b5f2bbc4228037eff119ba68.zip
Merge branch 'trunk' into wurkkos-ts25-boost
* trunk: enabled eeprom read/write stabilization by default on recent MCUs, to prevent corrupt data thefreeman-avr32dd20-devkit: enable boost bypass at boot, so AA/NiMH can boot avr32dd20-devkit: use unimplemented "CH" pin as a boost bypass control added "emisar-2ch-fet-joined" build, for D4S w/ lighted switch documented FW3X swapped pins better documented Wurkkos TS25/TS11/FC13 distinctions build.sh: don't require DFPs, newer avr-libc doesn't need them use BLIP_LEVEL instead of 0 for "blip"s clarified which-hex-file.md a bit; make sure the model number matches fw3x: reduced pulsing on low modes
Diffstat (limited to 'hw/thefreeman/avr32dd20-devkit/hwdef.h')
-rw-r--r--hw/thefreeman/avr32dd20-devkit/hwdef.h23
1 files changed, 21 insertions, 2 deletions
diff --git a/hw/thefreeman/avr32dd20-devkit/hwdef.h b/hw/thefreeman/avr32dd20-devkit/hwdef.h
index f1b6095..38b508d 100644
--- a/hw/thefreeman/avr32dd20-devkit/hwdef.h
+++ b/hw/thefreeman/avr32dd20-devkit/hwdef.h
@@ -28,6 +28,7 @@
* 18 PA1 G: aux green
* 19 PA2 B: aux blue
* 20 PA3 CH: detect charging
+ * or BBY: boost bypass PFET
*
* BST EN enable the boost regulator and Op-Amp
* DAC sets the current, max current depends on Vset voltage divider and Rsense
@@ -35,6 +36,8 @@
* and low value Rsense (high current range, pin high)
* IN- NFET : pull up after BST enable to eliminate startup flash, pull down otherwise
* CH senses the status of the onboard charger
+ * BBY routes power around the boost converter in li-ion 3V mode
+ * (pin low = bypass, pin high = boost)
* BATT LVL : Vbat * (100.0/(330+100))
* LVB is for OTSM firmware, not used here
*/
@@ -77,6 +80,11 @@ enum CHANNEL_MODES {
#define BST_ENABLE_PIN PIN5_bp
#define BST_ENABLE_PORT PORTD_OUT
+// BST bypass
+#define USE_BST_BYPASS
+#define BST_BYPASS_PIN PIN3_bp
+#define BST_BYPASS_PORT PORTA_OUT
+
// HDR
// turns on HDR FET for the high current range
#define HDR_ENABLE_PIN PIN7_bp
@@ -133,7 +141,9 @@ inline void hwdef_setup() {
VPORTA.DIR = PIN0_bm // R
| PIN1_bm // G
| PIN2_bm // B
- //| PIN3_bm // CH
+ #ifdef USE_BST_BYPASS
+ | PIN3_bm // BBY
+ #endif
| PIN7_bm; // HDR
VPORTD.DIR = PIN5_bm // EN
| PIN6_bm // DAC
@@ -143,7 +153,10 @@ inline void hwdef_setup() {
//PORTA.PIN0CTRL = PORT_PULLUPEN_bm; // R
//PORTA.PIN1CTRL = PORT_PULLUPEN_bm; // G
//PORTA.PIN2CTRL = PORT_PULLUPEN_bm; // B
- //PORTA.PIN3CTRL = PORT_PULLUPEN_bm; // CH
+ #ifdef USE_BST_BYPASS
+ PORTA.PIN3CTRL = PORT_PULLUPEN_bm; // BBY
+ BST_BYPASS_PORT |= (1 << BST_BYPASS_PIN);
+ #endif
PORTA.PIN4CTRL = PORT_PULLUPEN_bm;
PORTA.PIN5CTRL = PORT_PULLUPEN_bm;
//PORTA.PIN6CTRL = PORT_PULLUPEN_bm; // BATT LVL
@@ -177,6 +190,12 @@ inline void hwdef_setup() {
// to generate a zero without spending power on the DAC
// (and do this in set_level_zero() too)
+ // TCA/TCB/TCD aren't being used, so turn them off
+ TCA0.SINGLE.CTRLA = 0;
+ TCB0.CTRLA = 0;
+ TCB1.CTRLA = 0;
+ TCD0.CTRLA = 0;
+
}