aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@osmocom.org>2021-06-02 22:34:34 +0200
committerHarald Welte <laforge@osmocom.org>2021-06-03 09:36:10 +0200
commit4996d7d63414003f5d42a03b737069e5bb3ad633 (patch)
tree629e86093f3f37da7802f39e3387fe8865ed9015
parent054d7ca499c2701ade5868ad09482c617b3e4c78 (diff)
octsimtest: Adjust VCC voltage thresholds (resistive VCC divider)
octsimtest has a resistive voltage divider in front of the VCC ADC in order to also detect 5V. We must make the thresholds board-specific and adjust them for octsimtest. Change-Id: I9e4adb4f349d2d838ea4100eb49271f3a0e7a2a5
-rw-r--r--firmware/libboard/octsimtest/include/board.h3
-rw-r--r--firmware/libboard/qmod/include/board.h3
-rw-r--r--firmware/libcommon/source/mode_cardemu.c6
3 files changed, 9 insertions, 3 deletions
diff --git a/firmware/libboard/octsimtest/include/board.h b/firmware/libboard/octsimtest/include/board.h
index 361c180..2d8a896 100644
--- a/firmware/libboard/octsimtest/include/board.h
+++ b/firmware/libboard/octsimtest/include/board.h
@@ -105,6 +105,9 @@
#define BOARD_USB_BMATTRIBUTES USBConfigurationDescriptor_BUSPOWERED_NORWAKEUP
#define DETECT_VCC_BY_ADC
+/* we have a resistive voltage divider of 47 + 30 kOhms to also detect 5V supply power */
+#define VCC_UV_THRESH_1V8 (1500000*47)/(47+30)
+#define VCC_UV_THRESH_3V (2500000*47)/(47+30)
/** Supported modes */
/* SIMtrace board supports sniffer mode */
diff --git a/firmware/libboard/qmod/include/board.h b/firmware/libboard/qmod/include/board.h
index 5165434..0d35bef 100644
--- a/firmware/libboard/qmod/include/board.h
+++ b/firmware/libboard/qmod/include/board.h
@@ -109,6 +109,9 @@
#define BOARD_USB_RELEASE 0x010
#define CARDEMU_SECOND_UART
+
#define DETECT_VCC_BY_ADC
+#define VCC_UV_THRESH_1V8 1500000
+#define VCC_UV_THRESH_3V 2500000
#define HAVE_CARDEM
diff --git a/firmware/libcommon/source/mode_cardemu.c b/firmware/libcommon/source/mode_cardemu.c
index 604c66a..8a59e16 100644
--- a/firmware/libcommon/source/mode_cardemu.c
+++ b/firmware/libcommon/source/mode_cardemu.c
@@ -408,6 +408,9 @@ void card_emu_uart_interrupt(uint8_t uart_chan)
***********************************************************************/
#ifdef DETECT_VCC_BY_ADC
+#if !defined(VCC_UV_THRESH_1V8) || !defined(VCC_UV_THRESH_3V)
+#error "You must define VCC_UV_THRESH_{1V1,3V} if you use ADC VCC detection"
+#endif
static volatile int adc_triggered = 0;
static int adc_sam3s_reva_errata = 0;
@@ -456,9 +459,6 @@ static int card_vcc_adc_init(void)
return 0;
}
-#define VCC_UV_THRESH_1V8 1500000
-#define VCC_UV_THRESH_3V 2500000
-
static void process_vcc_adc(struct cardem_inst *ci)
{
if (ci->vcc_uv >= VCC_UV_THRESH_3V)