aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/fsm/fsm.h3
-rw-r--r--src/fsm/main.c6
-rw-r--r--src/fsm/pio.c52
-rw-r--r--src/fsm/pio.h54
-rw-r--r--src/fsm/pio.txt34
5 files changed, 88 insertions, 61 deletions
diff --git a/src/fsm/fsm.h b/src/fsm/fsm.h
index ed918bc..e9a5ba7 100644
--- a/src/fsm/fsm.h
+++ b/src/fsm/fsm.h
@@ -52,7 +52,6 @@ struct fsm_input_signals_t {
/* Signals coming from repeater electronics */
int sq; // Squelch detection
int discrim_u; // FM discriminator says RX is too high in frequency
- int carrier; // RX carrier detection
int qrp; // The relay is currently running with low power
int start_tm; // 2-hour pulse
float temp; // temperature in degrees C
@@ -73,7 +72,7 @@ struct fsm_input_signals_t {
// All signals the FSM has to control
struct fsm_output_signals_t {
/* Signals to the repeater electronics */
- int qrp; // Place the repeater in QRP mode
+ int qrp; // Place the repeater in QRP mode // TODO move out of FSM
int tx_on; // Enable TX circuitry
int modulation; // Enable repeater RX to TX modulation
diff --git a/src/fsm/main.c b/src/fsm/main.c
index 516aace..b6f865e 100644
--- a/src/fsm/main.c
+++ b/src/fsm/main.c
@@ -300,8 +300,6 @@ static void exercise_fsm(void *pvParameters)
fsm_input.start_tm = (tm_trigger == 1 && last_tm_trigger == 0) ? 1 : 0;
last_tm_trigger = tm_trigger;
- fsm_input.sq = fsm_input.carrier; // TODO clarify
-
fsm_input.cw_psk31_done = !cw_psk31_busy();
if (fsm_input.cw_psk31_done) {
@@ -318,8 +316,8 @@ static void exercise_fsm(void *pvParameters)
fsm_get_outputs(&fsm_out);
pio_set_tx(fsm_out.tx_on);
- pio_set_led_yel(fsm_out.modulation);
- pio_set_led_grn(fsm_input.carrier);
+ pio_set_mod_off(!fsm_out.modulation);
+ pio_set_qrp(fsm_out.qrp); // TODO move out of FSM
// Add message to CW generator only on rising edge of trigger
if (fsm_out.cw_psk31_trigger && !cw_last_trigger) {
diff --git a/src/fsm/pio.c b/src/fsm/pio.c
index fba7ddc..418f24a 100644
--- a/src/fsm/pio.c
+++ b/src/fsm/pio.c
@@ -47,7 +47,7 @@ void pio_init()
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
-#if GPIOC_OPENDRAIN_PINS
+#if defined(GPIOC_OPENDRAIN_PINS)
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Pin = GPIOC_OPENDRAIN_PINS;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
@@ -56,12 +56,14 @@ void pio_init()
GPIO_Init(GPIOC, &GPIO_InitStructure);
#endif
+#if defined(GPIOC_INPUT_PU_PINS)
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_Pin = GPIOC_INPUT_PU_PINS;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
+#endif
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_Pin = GPIOC_INPUT_PINS;
@@ -87,15 +89,26 @@ void pio_set_fsm_signals(struct fsm_input_signals_t* sig)
void read_fsm_input_task(void *pvParameters)
{
while (1) {
- pio_signals.qrp = GPIO_ReadInputDataBit(GPIOC, GPIO_PIN_QRP_n) ? 0 : 1;
-#if INVERTED_1750
- pio_signals.tone_1750 = GPIO_ReadInputDataBit(GPIOC, GPIO_PIN_1750) ? 0 : 1;
-#else
- pio_signals.tone_1750 = GPIO_ReadInputDataBit(GPIOC, GPIO_PIN_1750) ? 1 : 0;
-#endif
- pio_signals.carrier = GPIO_ReadInputDataBit(GPIOC, GPIO_PIN_RX_n) ? 0 : 1;
- pio_signals.discrim_u = GPIO_ReadInputDataBit(GPIOC, GPIO_PIN_U_n) ? 0 : 1;
- pio_signals.discrim_d = GPIO_ReadInputDataBit(GPIOC, GPIO_PIN_D_n) ? 0 : 1;
+ pio_signals.qrp =
+ GPIO_ReadInputDataBit(GPIOC, GPIO_PIN_QRP_n) ? 0 : 1;
+
+ pio_signals.tone_1750 =
+ GPIO_ReadInputDataBit(GPIOC, GPIO_PIN_1750_n) ? 0 : 1;
+
+ pio_signals.sq =
+ GPIO_ReadInputDataBit(GPIOC, GPIO_PIN_SQ_n) ? 0 : 1;
+
+ pio_signals.discrim_u =
+ GPIO_ReadInputDataBit(GPIOC, GPIO_PIN_U) ? 1 : 0;
+
+ pio_signals.discrim_d =
+ GPIO_ReadInputDataBit(GPIOC, GPIO_PIN_D) ? 1 : 0;
+
+ pio_signals.wind_generator_ok =
+ GPIO_ReadInputDataBit(GPIOC, GPIO_PIN_REPLIE_n) ? 1 : 0;
+
+ pio_signals.sstv_mode =
+ GPIO_ReadInputDataBit(GPIOC, GPIO_PIN_FAX_n) ? 0 : 1;
vTaskDelay(100 / portTICK_RATE_MS);
}
@@ -103,31 +116,30 @@ void read_fsm_input_task(void *pvParameters)
void pio_set_tx(int on)
{
- // Led is active high, TX_n is inverted logic
if (on) {
- GPIO_SetBits(GPIOC, GPIO_PIN_LED_red | GPIO_PIN_TX);
+ GPIO_SetBits(GPIOC, GPIO_PIN_TX);
}
else {
- GPIO_ResetBits(GPIOC, GPIO_PIN_LED_red | GPIO_PIN_TX);
+ GPIO_ResetBits(GPIOC, GPIO_PIN_TX);
}
}
-void pio_set_led_grn(int on)
+void pio_set_qrp(int on)
{
if (on) {
- GPIO_SetBits(GPIOC, GPIO_PIN_LED_grn);
+ GPIO_SetBits(GPIOC, GPIO_PIN_QRP_out);
}
else {
- GPIO_ResetBits(GPIOC, GPIO_PIN_LED_grn);
+ GPIO_ResetBits(GPIOC, GPIO_PIN_QRP_out);
}
}
-void pio_set_led_yel(int on)
+void pio_set_mod_off(int mod_off)
{
- if (on) {
- GPIO_SetBits(GPIOC, GPIO_PIN_LED_yel);
+ if (mod_off) {
+ GPIO_SetBits(GPIOC, GPIO_PIN_MOD_OFF);
}
else {
- GPIO_ResetBits(GPIOC, GPIO_PIN_LED_yel);
+ GPIO_ResetBits(GPIOC, GPIO_PIN_MOD_OFF);
}
}
diff --git a/src/fsm/pio.h b/src/fsm/pio.h
index 181b08d..9e7d4fb 100644
--- a/src/fsm/pio.h
+++ b/src/fsm/pio.h
@@ -33,40 +33,46 @@
/* See pio.txt for PIO allocation details */
-#define INVERTED_1750 0
-
/* On GPIO C */
-#define GPIO_PIN_QRP_n GPIO_Pin_1
-#define GPIO_PIN_LED_red GPIO_Pin_2
-#define GPIO_PIN_1750 GPIO_Pin_4
-#define GPIO_PIN_LED_yel GPIO_Pin_5
-#define GPIO_PIN_RX_n GPIO_Pin_6
-#define GPIO_PIN_U_n GPIO_Pin_8
-#define GPIO_PIN_LED_grn GPIO_Pin_9
-#define GPIO_PIN_D_n GPIO_Pin_11
-#define GPIO_PIN_TX GPIO_Pin_13
+#define GPIO_PIN_QRP_n GPIO_Pin_1
+#define GPIO_PIN_TX GPIO_Pin_2
+#define GPIO_PIN_1750_n GPIO_Pin_4
+#define GPIO_PIN_MOD_OFF GPIO_Pin_5
+#define GPIO_PIN_SQ_n GPIO_Pin_6
+#define GPIO_PIN_U GPIO_Pin_8
+#define GPIO_PIN_QRP_out GPIO_Pin_9
+#define GPIO_PIN_D GPIO_Pin_11
+#define GPIO_PIN_REPLIE_n GPIO_Pin_13
+#define GPIO_PIN_FAX_n GPIO_Pin_14
-#define GPIOC_OUTPUT_PINS GPIO_PIN_LED_red | \
- GPIO_PIN_LED_yel | \
- GPIO_PIN_LED_grn | \
- GPIO_PIN_TX
+#define GPIOC_OUTPUT_PINS ( \
+ GPIO_PIN_TX | \
+ GPIO_PIN_MOD_OFF | \
+ GPIO_PIN_QRP_out | \
+ 0)
-#define GPIOC_OPENDRAIN_PINS 0
+#undef GPIOC_OPENDRAIN_PINS
+#undef GPIOC_INPUT_PU_PINS
-#define GPIOC_INPUT_PINS 0
+#define GPIOC_INPUT_PINS ( \
+ GPIO_PIN_QRP_n | \
+ GPIO_PIN_1750_n | \
+ GPIO_PIN_SQ_n | \
+ GPIO_PIN_U | \
+ GPIO_PIN_D | \
+ GPIO_PIN_REPLIE_n | \
+ 0 )
-#define GPIOC_INPUT_PU_PINS GPIO_PIN_QRP_n | \
- GPIO_PIN_U_n | \
- GPIO_PIN_D_n | \
- GPIO_PIN_RX_n | \
- GPIO_PIN_1750
+/* Analog inputs */
+// TODO: SWR forward power
+// TODO: SWR reflected power
void pio_init(void);
void pio_set_tx(int on);
-void pio_set_led_yel(int on);
-void pio_set_led_grn(int on);
+void pio_set_mod_off(int mod_off);
+void pio_set_qrp(int on);
void pio_set_fsm_signals(struct fsm_input_signals_t* sig);
diff --git a/src/fsm/pio.txt b/src/fsm/pio.txt
index cd29cd1..3464b28 100644
--- a/src/fsm/pio.txt
+++ b/src/fsm/pio.txt
@@ -1,9 +1,29 @@
Allocation of PIOs to functions
===============================
-Test logic
-----------
-- out TX_ON PC13
+TODO Connexions Relais
+----------------------
+- in QRP_n PC1
+- out TX_ON PC2
+- i/o ? PC3
+- in 1750_n PC4
+- out MOD_OFF PC5
+- in SQ_n PC6
+- in U_n PC8
+- out QRP PC9
+- in D_n PC11
+- in REPLIE_n PC13
+- in FAX_n PC14
+
+- i/o ? PC15
+
+- i/o Dallas 1-wire
+
+TODO Analog signals
+-------------------
+- in SWR forward
+- in SWR reflected
+- in Vcc 12V measurement
u-blox NEO-M8N GPS module connection
------------------------------------
@@ -17,15 +37,7 @@ Debug USART
For the little test board with the 3 LEDs and switches
------------------------------------------------------
-Blue in QRP_n PC1
-Violet out LED red PC2
-Grey in 1750 PC4
-White out LED yel PC5
-Black - GND GND
-Brown in RX_n PC6
-Red in U_n PC8
Orange out LED grn PC9
-Green in D_n PC11
I2C to Audio Codec
------------------