diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-06-15 13:30:45 +0200 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-06-15 13:30:45 +0200 |
commit | 20f442e5f5aa6a4fcf07f65e2f446a3c0ff8e4f2 (patch) | |
tree | 99f2422681eaa34a6f21b54d86e67115c291d5ce /puzzle | |
parent | dbe08a8cd3d29cee7ba1adae4841c0a831784f31 (diff) |
WIP freertos + Arduino workaround
Diffstat (limited to 'puzzle')
-rw-r--r-- | puzzle/dummy/CMakeLists.txt | 7 | ||||
-rw-r--r-- | puzzle/dummy/FreeRTOSConfig.h | 51 | ||||
-rw-r--r-- | puzzle/dummy/main.cpp | 40 |
3 files changed, 72 insertions, 26 deletions
diff --git a/puzzle/dummy/CMakeLists.txt b/puzzle/dummy/CMakeLists.txt index c485e74..f80d18c 100644 --- a/puzzle/dummy/CMakeLists.txt +++ b/puzzle/dummy/CMakeLists.txt @@ -12,6 +12,12 @@ add_compile_definitions(DEBUG) set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/lib/Arduino-CMake-Toolchain/Arduino-toolchain.cmake) set(ARDUINO_BOARD "Arduino Uno [avr.uno]") +# freertos +add_library(freertos_config INTERFACE) +target_include_directories(freertos_config SYSTEM INTERFACE .) +set(FREERTOS_PORT GCC_ATMEGA) +set(FREERTOS_HEAP 4) + # used for testing # set(ARDUINO_BOARD "Raspberry Pi Pico W [rp2040.rpipicow]") # add_compile_definitions(USE_TINYUSB) @@ -20,6 +26,7 @@ set(ARDUINO_BOARD "Arduino Uno [avr.uno]") project(pb_mod_dummy C CXX) add_subdirectory(lib/pbdrv) +add_subdirectory(lib/FreeRTOS-Kernel) add_executable(main main.cpp diff --git a/puzzle/dummy/FreeRTOSConfig.h b/puzzle/dummy/FreeRTOSConfig.h new file mode 100644 index 0000000..ab6bd7f --- /dev/null +++ b/puzzle/dummy/FreeRTOSConfig.h @@ -0,0 +1,51 @@ +#pragma once + +#define configUSE_PREEMPTION 1 +#define configUSE_IDLE_HOOK 0 +#define configUSE_TICK_HOOK 0 +#define configMAX_PRIORITIES 32 +#define configMINIMAL_STACK_SIZE ((configSTACK_DEPTH_TYPE) 192) +#define configUSE_16_BIT_TICKS 1 +#define configIDLE_SHOULD_YIELD 1 +#define configUSE_MUTEXES 1 +#define configUSE_RECURSIVE_MUTEXES 1 +#define configUSE_APPLICATION_TASK_TAG 0 +#define configUSE_COUNTING_SEMAPHORES 1 +#define configQUEUE_REGISTRY_SIZE 8 +#define configUSE_QUEUE_SETS 0 +#define configUSE_TIME_SLICING 1 +#define configSTACK_DEPTH_TYPE uint16_t +#define configSUPPORT_STATIC_ALLOCATION 0 +#define configSUPPORT_DYNAMIC_ALLOCATION 1 +#define configTOTAL_HEAP_SIZE (1024) +#define configCHECK_FOR_STACK_OVERFLOW 0 +#define configUSE_MALLOC_FAILED_HOOK 0 +#define configUSE_DAEMON_TASK_STARTUP_HOOK 0 +#define configGENERATE_RUN_TIME_STATS 0 +#define configUSE_TRACE_FACILITY 0 +#define configUSE_STATS_FORMATTING_FUNCTIONS 0 +#define configUSE_TIMERS 1 +#define configTIMER_TASK_PRIORITY (configMAX_PRIORITIES - 1) +#define configTIMER_QUEUE_LENGTH 10 +#define configTIMER_TASK_STACK_DEPTH 92 + +#include <assert.h> +#define configASSERT(x) assert(x) + +#define INCLUDE_vTaskPrioritySet 1 +#define INCLUDE_uxTaskPriorityGet 1 +#define INCLUDE_vTaskDelete 1 +#define INCLUDE_vTaskSuspend 1 +#define INCLUDE_vTaskDelayUntil 1 +#define INCLUDE_vTaskDelay 1 +#define INCLUDE_xTaskGetSchedulerState 1 +#define INCLUDE_xTaskGetCurrentTaskHandle 1 +#define INCLUDE_uxTaskGetStackHighWaterMark 1 +#define INCLUDE_xTaskGetIdleTaskHandle 1 +#define INCLUDE_eTaskGetState 1 +#define INCLUDE_xTimerPendFunctionCall 1 +#define INCLUDE_xTaskAbortDelay 1 +#define INCLUDE_xTaskGetHandle 1 +#define INCLUDE_xTaskResumeFromISR 1 +#define INCLUDE_xQueueGetMutexHolder 1 + diff --git a/puzzle/dummy/main.cpp b/puzzle/dummy/main.cpp index e5f5e24..ddf3bf0 100644 --- a/puzzle/dummy/main.cpp +++ b/puzzle/dummy/main.cpp @@ -1,38 +1,26 @@ #include <Arduino.h> #include <Wire.h> +#include <FreeRTOS.h> +#include <task.h> + #include "drv/arduino/mod.h" #include "pb-mod.h" -#define TEST_A - -#ifdef TEST_A -#define ADDR_RX 0x69 -#define ADDR_TX 0x20 -#define MSG "aa" -#define MSG_SIZE 3 -#define MSG_DELAY 10 -#endif - -#ifdef TEST_B -#define ADDR_TX 0x69 -#define ADDR_RX 0x20 -#define MSG "bbbbbbbb" -#define MSG_SIZE 9 -#define MSG_DELAY 10 -#endif - const char * PB_MOD_NAME = "dummy"; -const i2c_addr_t PB_MOD_ADDR = ADDR_RX; +const i2c_addr_t PB_MOD_ADDR = 0x69; -void setup() { - pb_setup(); +void testTask() { + while(1) { + vTaskDelay(1000 / portTICK_PERIOD_MS); + Serial.write("Hello world!\r\n"); + } } -void loop() { - // pb_i2c_send(ADDR_TX, (uint8_t *) MSG, MSG_SIZE); - // delay(MSG_DELAY); +void setup() { + Serial.begin(115200); + Serial.write("setup called\r\n"); + xTaskCreate((TaskFunction_t) testTask, "test", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 2, NULL); + Serial.write("setup done\r\n"); } -void pb_i2c_recv(const uint8_t * data, size_t size) { } - |