diff --git a/ADIS_tinyK22_SplitFlap/ADIS_tinyK22_SplitFlap.mex b/ADIS_tinyK22_SplitFlap/ADIS_tinyK22_SplitFlap.mex index 048945d..6b5eeff 100644 --- a/ADIS_tinyK22_SplitFlap/ADIS_tinyK22_SplitFlap.mex +++ b/ADIS_tinyK22_SplitFlap/ADIS_tinyK22_SplitFlap.mex @@ -39,39 +39,13 @@ true - - - true - - true - - - true - - - - - - - - - - - - - - - - - - - + diff --git a/ADIS_tinyK22_SplitFlap/board/pin_mux.c b/ADIS_tinyK22_SplitFlap/board/pin_mux.c index d6c8d5c..1dbb1b5 100644 --- a/ADIS_tinyK22_SplitFlap/board/pin_mux.c +++ b/ADIS_tinyK22_SplitFlap/board/pin_mux.c @@ -21,7 +21,6 @@ pin_labels: /* clang-format on */ #include "fsl_common.h" -#include "fsl_port.h" #include "pin_mux.h" /* FUNCTION ************************************************************************************************************ @@ -40,11 +39,7 @@ void BOARD_InitBootPins(void) * TEXT BELOW IS USED AS SETTING FOR TOOLS ************************************* BOARD_InitPins: - options: {callFromInitBoot: 'true', coreID: core0, enableClock: 'true'} -- pin_list: - - {pin_num: '46', peripheral: UART1, signal: RX, pin_signal: CMP1_IN1/PTC3/LLWU_P7/SPI0_PCS1/UART1_RX/FTM0_CH2/CLKOUT/I2S0_TX_BCLK/LPUART0_RX, open_drain: enable, - pull_select: up, pull_enable: enable} - - {pin_num: '49', peripheral: UART1, signal: TX, pin_signal: PTC4/LLWU_P8/SPI0_PCS0/UART1_TX/FTM0_CH3/FB_AD11/CMP1_OUT/LPUART0_TX, direction: OUTPUT, open_drain: enable, - pull_select: up, pull_enable: enable} +- pin_list: [] * BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS *********** */ /* clang-format on */ @@ -57,45 +52,6 @@ BOARD_InitPins: * END ****************************************************************************************************************/ void BOARD_InitPins(void) { - /* Port C Clock Gate Control: Clock enabled */ - CLOCK_EnableClock(kCLOCK_PortC); - - /* PORTC3 (pin 46) is configured as UART1_RX */ - PORT_SetPinMux(BOARD_INITPINS_UART1_RX_PORT, BOARD_INITPINS_UART1_RX_PIN, kPORT_MuxAlt3); - - PORTC->PCR[3] = ((PORTC->PCR[3] & - /* Mask bits to zero which are setting */ - (~(PORT_PCR_PS_MASK | PORT_PCR_PE_MASK | PORT_PCR_ODE_MASK | PORT_PCR_ISF_MASK))) - - /* Pull Select: Internal pullup resistor is enabled on the corresponding pin, if the - * corresponding PE field is set. */ - | (uint32_t)(kPORT_PullUp) - - /* Open Drain Enable: Open drain output is enabled on the corresponding pin, if the pin is - * configured as a digital output. */ - | PORT_PCR_ODE(kPORT_OpenDrainEnable)); - - /* PORTC4 (pin 49) is configured as UART1_TX */ - PORT_SetPinMux(BOARD_INITPINS_UART1_TX_PORT, BOARD_INITPINS_UART1_TX_PIN, kPORT_MuxAlt3); - - PORTC->PCR[4] = ((PORTC->PCR[4] & - /* Mask bits to zero which are setting */ - (~(PORT_PCR_PS_MASK | PORT_PCR_PE_MASK | PORT_PCR_ODE_MASK | PORT_PCR_ISF_MASK))) - - /* Pull Select: Internal pullup resistor is enabled on the corresponding pin, if the - * corresponding PE field is set. */ - | (uint32_t)(kPORT_PullUp) - - /* Open Drain Enable: Open drain output is enabled on the corresponding pin, if the pin is - * configured as a digital output. */ - | PORT_PCR_ODE(kPORT_OpenDrainEnable)); - - SIM->SOPT5 = ((SIM->SOPT5 & - /* Mask bits to zero which are setting */ - (~(SIM_SOPT5_UART1TXSRC_MASK))) - - /* UART 1 transmit data source select: UART1_TX pin. */ - | SIM_SOPT5_UART1TXSRC(SOPT5_UART1TXSRC_UART_TX)); } /*********************************************************************************************************************** * EOF diff --git a/ADIS_tinyK22_SplitFlap/board/pin_mux.h b/ADIS_tinyK22_SplitFlap/board/pin_mux.h index c7d3ba0..598ae8e 100644 --- a/ADIS_tinyK22_SplitFlap/board/pin_mux.h +++ b/ADIS_tinyK22_SplitFlap/board/pin_mux.h @@ -25,26 +25,6 @@ extern "C" { */ void BOARD_InitBootPins(void); -#define SOPT5_UART1TXSRC_UART_TX 0x00u /*!<@brief UART 1 transmit data source select: UART1_TX pin */ - -/*! @name PORTC3 (number 46), UART1_RX - @{ */ - -/* Symbols to be used with PORT driver */ -#define BOARD_INITPINS_UART1_RX_PORT PORTC /*!<@brief PORT peripheral base pointer */ -#define BOARD_INITPINS_UART1_RX_PIN 3U /*!<@brief PORT pin number */ -#define BOARD_INITPINS_UART1_RX_PIN_MASK (1U << 3U) /*!<@brief PORT pin mask */ - /* @} */ - -/*! @name PORTC4 (number 49), UART1_TX - @{ */ - -/* Symbols to be used with PORT driver */ -#define BOARD_INITPINS_UART1_TX_PORT PORTC /*!<@brief PORT peripheral base pointer */ -#define BOARD_INITPINS_UART1_TX_PIN 4U /*!<@brief PORT pin number */ -#define BOARD_INITPINS_UART1_TX_PIN_MASK (1U << 4U) /*!<@brief PORT pin mask */ - /* @} */ - /*! * @brief Configures pin routing and optionally pin electrical features. * diff --git a/ADIS_tinyK22_SplitFlap/source/IncludeMcuLibConfig.h b/ADIS_tinyK22_SplitFlap/source/IncludeMcuLibConfig.h index d890057..d9a47fb 100644 --- a/ADIS_tinyK22_SplitFlap/source/IncludeMcuLibConfig.h +++ b/ADIS_tinyK22_SplitFlap/source/IncludeMcuLibConfig.h @@ -96,7 +96,7 @@ add_compile_options(-include "../config/IncludeMcuLibConfig.h") #endif #define McuULN2003_CONFIG_USE_ACCELERATION (1) /* ------------------- RTOS ---------------------------*/ -#define McuLib_CONFIG_SDK_USE_FREERTOS (0) +#define McuLib_CONFIG_SDK_USE_FREERTOS (1) /* #define configUSE_SEGGER_SYSTEM_VIEWER_HOOKS (1) */ /* #define configTOTAL_HEAP_SIZE (24*1024) */ /* #define configUSE_HEAP_SECTION_NAME (1) */ diff --git a/ADIS_tinyK22_SplitFlap/source/communication/uart1.c b/ADIS_tinyK22_SplitFlap/source/communication/uart1.c deleted file mode 100644 index 3fb9780..0000000 --- a/ADIS_tinyK22_SplitFlap/source/communication/uart1.c +++ /dev/null @@ -1,8 +0,0 @@ -/* - * uart1.c - * - * Created on: 7 Oct 2022 - * Author: simon - */ - - diff --git a/ADIS_tinyK22_SplitFlap/source/communication/uart1.h b/ADIS_tinyK22_SplitFlap/source/communication/uart1.h deleted file mode 100644 index 108e646..0000000 --- a/ADIS_tinyK22_SplitFlap/source/communication/uart1.h +++ /dev/null @@ -1,13 +0,0 @@ -/* - * uart1.h - * - * Created on: 7 Oct 2022 - * Author: simon - */ - -#ifndef COMMUNICATION_UART1_H_ -#define COMMUNICATION_UART1_H_ - - - -#endif /* COMMUNICATION_UART1_H_ */ diff --git a/ADIS_tinyK22_SplitFlap/source/main.c b/ADIS_tinyK22_SplitFlap/source/main.c index 789707b..3face7f 100644 --- a/ADIS_tinyK22_SplitFlap/source/main.c +++ b/ADIS_tinyK22_SplitFlap/source/main.c @@ -49,7 +49,6 @@ * @brief Application entry point. */ int main(void) { - /* Init board hardware. */ BOARD_InitBootPins(); BOARD_InitBootClocks(); @@ -62,7 +61,6 @@ int main(void) { /* init platform */ PRINTF("Initializing Platform...\n"); PL_Init(); - /* init app */ PRINTF("Initializing App...\n"); App_Init(); diff --git a/ADIS_tinyK22_SplitFlap/source/platform.c b/ADIS_tinyK22_SplitFlap/source/platform.c index e15e9ce..70a684f 100644 --- a/ADIS_tinyK22_SplitFlap/source/platform.c +++ b/ADIS_tinyK22_SplitFlap/source/platform.c @@ -12,6 +12,10 @@ #include "McuGPIO.h" #include "McuULN2003.h" #include "splitflap.h" +#include "McuRTOS.h" +#include "McuRTT.h" +#include "McuShell.h" +#include "shell.h" void PL_Init(void){ @@ -21,19 +25,27 @@ void PL_Init(void){ CLOCK_EnableClock(kCLOCK_PortC); McuLib_Init(); + McuRTOS_Init(); McuWait_Init(); McuGPIO_Init(); McuLED_Init(); McuULN2003_Init(); + McuRTT_Init(); + McuShell_Init(); + SHELL_Init(); SF_InitConfig(); } void PL_Deinit(void){ SF_DeInitConfig(); + SHELL_Deinit(); + McuShell_Deinit(); + McuRTT_Deinit(); McuULN2003_Deinit(); McuLED_Deinit(); McuGPIO_Deinit(); McuWait_Deinit(); + McuRTOS_Deinit(); McuLib_Deinit(); } diff --git a/ADIS_tinyK22_SplitFlap/source/shell.c b/ADIS_tinyK22_SplitFlap/source/shell.c new file mode 100644 index 0000000..94212e7 --- /dev/null +++ b/ADIS_tinyK22_SplitFlap/source/shell.c @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2019-2022, Erich Styger + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "platform.h" +#include "Shell.h" +#include "McuShell.h" +#include "McuRTOS.h" +#include "McuRTT.h" +#include "McuArmTools.h" +#include "McuShellUart.h" +#include "McuLog.h" +#include "McuUtility.h" + +static uint8_t splitFlapId = 0; +static uint8_t ParseCommand(const uint8_t *cmd, bool *handled, McuShell_ConstStdIOType *io){ + uint8_t size = sizeof(SHELL_CMD_IDENTIFY_SF)-1; + if (McuUtility_strcmp((char*)cmd, McuShell_CMD_HELP)==0) { + McuShell_SendStr((unsigned char*)"\r\n", io->stdOut); + McuShell_SendStr((unsigned char*)McuShell_DASH_LINE, io->stdOut); + McuShell_SendStr((unsigned char*)"\r\n", io->stdOut); + McuShell_SendHelpStr((unsigned char*)"SplitFlap Help", (const unsigned char*)"Group of SplitFlap commands\r\n", io->stdOut); + McuShell_SendHelpStr((unsigned char*)" help", (const unsigned char*)"Print help this message\r\n", io->stdOut); + McuShell_SendHelpStr((unsigned char*)SHELL_CMD_IDENTIFY_SF, (const unsigned char*)" (uint8_t)\r\n", io->stdOut); + McuShell_SendHelpStr((unsigned char*)" ", (const unsigned char*)"the number printed on the splitflap\r\n", io->stdOut); + McuShell_SendHelpStr((unsigned char*)" ", (const unsigned char*)"Splitflap Number:16\n", io->stdOut); + + + *handled = TRUE; + return ERR_OK; + } else if(McuUtility_strncmp((char*)cmd, SHELL_CMD_IDENTIFY_SF, size) == 0){ + *handled = TRUE; + cmd += sizeof(SHELL_CMD_IDENTIFY_SF)-1; + if(McuUtility_ScanDecimal8uNumber(&cmd, &splitFlapId) != ERR_OK){ + // Do not save id + return ERR_FAILED; + } + } + return ERR_OK; + +} + +static const McuShell_ParseCommandCallback CmdParserTable[] = +{ + ParseCommand, + McuShell_ParseCommand, + McuRTOS_ParseCommand, + NULL /* Sentinel */ +}; + +typedef struct { + McuShell_ConstStdIOType *stdio; + unsigned char *buf; + size_t bufSize; +} SHELL_IODesc; + +static const SHELL_IODesc ios[] = +{ +// {&McuShellUart_stdio, McuShellUart_DefaultShellBuffer, sizeof(McuShellUart_DefaultShellBuffer)}, + {&McuRTT_stdio, McuRTT_DefaultShellBuffer, sizeof(McuRTT_DefaultShellBuffer)}, +// {&USB_CdcStdio, USB_CdcDefaultShellBuffer, sizeof(USB_CdcDefaultShellBuffer)}, +}; + +void SHELL_SendChar(unsigned char ch) { + for(int i=0;istdOut); + } +} + +uint8_t SHELL_ParseCommandIO(const unsigned char *command, McuShell_ConstStdIOType *io, bool silent) { + if (io==NULL) { /* use a default */ + io = McuShell_GetStdio(); + } + return McuShell_ParseWithCommandTableExt(command, io, CmdParserTable, silent); +} + +void SHELL_SendString(const unsigned char *str) { + for(int i=0;istdOut); + } +} + +static void ShellTask(void *pv) { + int i; + + McuLog_info("Shell task started"); + for(i=0;i