diff --git a/src/zap/zap.h b/src/zap/zap.h index e3d26bb..5e5ab97 100644 --- a/src/zap/zap.h +++ b/src/zap/zap.h @@ -25,9 +25,10 @@ static inline void zap_init(enum zap_component zc) { if (zc & zap_crowbar) zap_crowbar_init(); if (zc & zap_dac) zap_dac_init(); if (zc & zap_gpio) zap_gpio_init(false, true); - if (zc & zap_max4619) zap_max_init(false); + if (zc & zap_max4619) zap_max_init(false, false); if (zc & zap_picoemp) zap_picoemp_init(); } +// TODO: deinit stuff (also in submodules) static inline void zap_init_default(void) { zap_init(zap_adc | zap_crowbar | zap_dac | zap_gpio | zap_max4619); diff --git a/src/zap/zap_max4619.c b/src/zap/zap_max4619.c index c5d7a7f..41a327f 100644 --- a/src/zap/zap_max4619.c +++ b/src/zap/zap_max4619.c @@ -8,7 +8,7 @@ #include "zap_max4619.h" -void zap_max_init(bool inhibit) { +void zap_max_init(bool inhibit, bool use_jp300) { const io_rw_32 pinmask = 1u << ZAP_GLITCH_OUT; sio_hw->gpio_clr = pinmask; // default to low -> JP300 @@ -18,6 +18,10 @@ void zap_max_init(bool inhibit) { gpio_set_drive_strength(ZAP_GLITCH_OUT, GPIO_DRIVE_STRENGTH_12MA); gpio_set_function(ZAP_GLITCH_OUT, GPIO_FUNC_SIO); + gpio_put(ZAP_MAX_VHI_SW, use_jp300); + gpio_set_dir(ZAP_MAX_VHI_SW, GPIO_OUT); + gpio_set_function(ZAP_MAX_VHI_SW, GPIO_FUNC_SIO); + gpio_put(ZAP_MAX_INHIBIT, inhibit); gpio_set_dir(ZAP_MAX_INHIBIT, GPIO_OUT); gpio_set_function(ZAP_MAX_INHIBIT, GPIO_FUNC_SIO); diff --git a/src/zap/zap_max4619.h b/src/zap/zap_max4619.h index dd652f5..3e7b42c 100644 --- a/src/zap/zap_max4619.h +++ b/src/zap/zap_max4619.h @@ -8,13 +8,18 @@ #include "zap_pinout.h" -void zap_max_init(bool inhibit); +void zap_max_init(bool inhibit, bool use_jp300); static inline void zap_max_set_inhibit(bool inhibit) { if (inhibit) sio_hw->gpio_set = 1u << ZAP_MAX_INHIBIT; else sio_hw->gpio_clr = 1u << ZAP_MAX_INHIBIT; } +static inline void zap_max_use_vhi_jp300(bool use_jp300 /* if false: use Vdac1 */) { + if (use_jp300) sio_hw->gpio_set = 1u << ZAP_MAX_VHI_SW; + else sio_hw->gpio_clr = 1u << ZAP_MAX_VHI_SW; +} + static inline void zap_max_put(bool low) { if (low) sio_hw->gpio_set = 1u << ZAP_GLITCH_OUT; else sio_hw->gpio_clr = 1u << ZAP_GLITCH_OUT; diff --git a/src/zap/zap_pinout.h b/src/zap/zap_pinout.h index 01a4037..f2edf0e 100644 --- a/src/zap/zap_pinout.h +++ b/src/zap/zap_pinout.h @@ -12,6 +12,7 @@ #define ZAP_CROWBAR_2 13 #define ZAP_MAX_INHIBIT 16 +#define ZAP_MAX_VHI_SW 21 #define ZAP_GPIO_ENABLE 22 #define ZAP_DAC_SPI spi0