From f3aae2f80bb7da4aa073d362132b139979709adb Mon Sep 17 00:00:00 2001 From: "Christian L. V. Madsen" Date: Sun, 13 Apr 2025 19:19:19 +0200 Subject: [PATCH] works --- storno_cqp6xx_digital_xtal/cqm6xx_app.c | 36 ++++++++++++++++++++++-- storno_cqp6xx_digital_xtal/cqm6xx_app.h | 3 ++ storno_cqp6xx_digital_xtal/si5351_driver | 2 +- 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/storno_cqp6xx_digital_xtal/cqm6xx_app.c b/storno_cqp6xx_digital_xtal/cqm6xx_app.c index 4e890cb..e970e8c 100644 --- a/storno_cqp6xx_digital_xtal/cqm6xx_app.c +++ b/storno_cqp6xx_digital_xtal/cqm6xx_app.c @@ -66,7 +66,7 @@ void setRTXOscMode(storno_xtal_app_t *inst){ if(inst->rtx_mode != STORNO_APP_TX_MODE){ cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_ENABLE); // RX - cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_ENABLE); // TX + cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_1,SI5351_OUTPUT_DISABLE); // TX }else{ cm_setOutputEnable(inst->si5351_dev,SI5351_OUTPUT_0,SI5351_OUTPUT_DISABLE); // RX @@ -82,6 +82,17 @@ void EepromWritePLLParameters(storno_xtal_app_t *inst){ } +void sendStruct(uint8_t *data, uint8_t size){ + + for(uint8_t idx = 0; idx < size; idx++){ + + cm_uart_send(data[idx]); + + } + + return; +} + void cqm6xx_app_taskHandler(storno_xtal_app_t *inst){ // Check Struct @@ -98,6 +109,20 @@ void cqm6xx_app_taskHandler(storno_xtal_app_t *inst){ return; } + if(inst->rtx_mode == STORNO_APP_SEND_PLLA_PARAM){ + inst->rtx_mode = STORNO_APP_RX_MODE; + + sendStruct(&inst->plla_param_data, sizeof(storno_pll_param_msg)); + return; + } + + if(inst->rtx_mode == STORNO_APP_SEND_PLLB_PARAM){ + inst->rtx_mode = STORNO_APP_RX_MODE; + + sendStruct(&inst->pllb_param_data, sizeof(storno_pll_param_msg)); + return; + } + // If TX pin is not set, then turn on RX output on PLL and disable TX clock. Run setRTXOscMode once, so pll isnt constantly written to!! if((gpio_get_level(GPIO_PORTA,GPIO_PIN_PTT) != GPIO_LEVEL_SET) && (inst->rtx_mode != STORNO_APP_RX_MODE)){ @@ -169,6 +194,13 @@ int uart_rx_event(storno_xtal_app_t *inst, void *rxData){ case MSG_PLLB_PARAM: memcpy(&inst->pllb_param_data,rxData,sizeof(storno_pll_param_msg)); break; + + case MSG_GET_PLLA_PARAM: + + break; + + case MSG_GET_PLLB_PARAM: + break; } @@ -192,7 +224,7 @@ void cqm6xx_app_init(storno_xtal_app_t *inst, void *si5351_dev){ //cm_taskManager_init(&inst->storno_xtal_task); // Check if data is vaild (if this is a new mcu) - if(!isEEPROMValid(inst)|| 1){ + if(!isEEPROMValid(inst)){ // If settings are somehow unvalid, then write default settings.. writeDefaultSettingsEEprom(inst); } diff --git a/storno_cqp6xx_digital_xtal/cqm6xx_app.h b/storno_cqp6xx_digital_xtal/cqm6xx_app.h index 7ce4698..79ea5a3 100644 --- a/storno_cqp6xx_digital_xtal/cqm6xx_app.h +++ b/storno_cqp6xx_digital_xtal/cqm6xx_app.h @@ -50,6 +50,9 @@ typedef enum { STORNO_APP_RX_MODE = 0, STORNO_APP_TX_MODE = 1, STORNO_APP_PROGRAM_EEPROM = 2, + STORNO_APP_SEND_PLLA_PARAM = 3, + STORNO_APP_SEND_PLLB_PARAM = 4, + }storno_app_modes; diff --git a/storno_cqp6xx_digital_xtal/si5351_driver b/storno_cqp6xx_digital_xtal/si5351_driver index 1102fbd..d6fb9d8 160000 --- a/storno_cqp6xx_digital_xtal/si5351_driver +++ b/storno_cqp6xx_digital_xtal/si5351_driver @@ -1 +1 @@ -Subproject commit 1102fbd4d5faa50572af80ba0b9c6f3c48708a1d +Subproject commit d6fb9d88566c9f6c615da84239222daf124538e1