diff --git a/motor-control/firmware/.vscode/settings.json b/motor-control/firmware/.vscode/settings.json index 4df6ac6..7374015 100644 --- a/motor-control/firmware/.vscode/settings.json +++ b/motor-control/firmware/.vscode/settings.json @@ -50,7 +50,7 @@ "wready" ], "cmake.sourceDirectory": "/home/alexander/Projects/gobot/motor-control/firmware", - "cmake.buildDirectory": "${workspaceFolder}/firmware/build", + "cmake.buildDirectory": "${workspaceFolder}/build", "cmake.configureOnOpen": true, "files.associations": { "timer.h": "c", diff --git a/motor-control/firmware/.vscode/tasks.json b/motor-control/firmware/.vscode/tasks.json index acffcbd..534e22c 100644 --- a/motor-control/firmware/.vscode/tasks.json +++ b/motor-control/firmware/.vscode/tasks.json @@ -32,8 +32,9 @@ "cwd": "${workspaceRoot}" }, "group": "test", - - "dependsOn": ["CMake: build main"], + "dependsOn": [ + "CMake: build main" + ], "presentation": { "echo": true, "reveal": "always", @@ -43,7 +44,6 @@ "clear": true } }, - { "type": "cmake", "label": "CMake: build usb_test", @@ -75,8 +75,9 @@ "cwd": "${workspaceRoot}" }, "group": "test", - - "dependsOn": ["CMake: build usb_test"], + "dependsOn": [ + "CMake: build usb_test" + ], "presentation": { "echo": true, "reveal": "always", @@ -86,7 +87,6 @@ "clear": true } }, - { "type": "cmake", "label": "CMake: build freeRTOS_test", @@ -118,8 +118,9 @@ "cwd": "${workspaceRoot}" }, "group": "test", - - "dependsOn": ["CMake: build freeRTOS_test"], + "dependsOn": [ + "CMake: build freeRTOS_test" + ], "presentation": { "echo": true, "reveal": "always", @@ -129,8 +130,6 @@ "clear": true } }, - - { "type": "shell", "label": "Pico: launch openocd", @@ -161,11 +160,22 @@ "type": "shell", "label": "Doxygen: Generate Docs", "command": [ - "doxygen ./docs/Doxyfile", + "doxygen ./docs/Doxyfile" ], "options": { "cwd": "${workspaceRoot}" } + }, + { + "type": "shell", + "label": "Nuke Build Directory", + "command": [ + "rm -rf build" + ], + "options": { + "cwd": "${workspaceRoot}" + }, + "problemMatcher": [] } ] } \ No newline at end of file diff --git a/motor-control/firmware/CMakeLists.txt b/motor-control/firmware/CMakeLists.txt index e652eb1..b76dbc6 100755 --- a/motor-control/firmware/CMakeLists.txt +++ b/motor-control/firmware/CMakeLists.txt @@ -8,8 +8,8 @@ else() SET(PICO_SDK_PATH "${CMAKE_SOURCE_DIR}/lib/pico-sdk") endif() -SET(PICO_TOOLCHAIN_PATH $PICO_SDK_PATH/cmake/preload/toolchains/) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "$<1:${CMAKE_BINARY_DIR}/bin>") +#SET(PICO_TOOLCHAIN_PATH "${PICO_SDK_PATH}/cmake/preload/toolchains/") +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") include(${PICO_SDK_PATH}/pico_sdk_init.cmake) @@ -47,12 +47,7 @@ target_include_directories(main PUBLIC include/ ) -# Add FreeRTOS -include(freeRTOS.cmake) - -target_include_directories(FreeRTOS PUBLIC - ${CMAKE_CURRENT_LIST_DIR} -) +include(${PROJECT_SOURCE_DIR}/cmake/tmc2209.cmake) # Adding PIO #pico_generate_pio_header(main ${CMAKE_CURRENT_LIST_DIR}/src/dac/dac.pio) @@ -61,11 +56,8 @@ target_include_directories(FreeRTOS PUBLIC target_link_libraries(main pico_stdlib pico_multicore - hardware_pio - hardware_dma - hardware_timer - FreeRTOS - EEPROMDriver + + tmc2209_driver ) diff --git a/motor-control/firmware/FreeRTOSConfig.h b/motor-control/firmware/FreeRTOSConfig.h deleted file mode 100644 index ac8dbf3..0000000 --- a/motor-control/firmware/FreeRTOSConfig.h +++ /dev/null @@ -1,100 +0,0 @@ -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - - -#define configUSE_PREEMPTION 1 -#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0 -#define configUSE_TICKLESS_IDLE 0 -#define configCPU_CLOCK_HZ 133000000 -#define configSYSTICK_CLOCK_HZ 1000000 -#define configTICK_RATE_HZ 1000 -#define configMAX_PRIORITIES 4 -#define configMINIMAL_STACK_SIZE 256 -#define configMAX_TASK_NAME_LEN 16 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 1 -#define configUSE_TASK_NOTIFICATIONS 1 -#define configTASK_NOTIFICATION_ARRAY_ENTRIES 3 -#define configUSE_MUTEXES 0 -#define configUSE_RECURSIVE_MUTEXES 0 -#define configUSE_COUNTING_SEMAPHORES 1 -#define configUSE_ALTERNATIVE_API 0 /* Deprecated! */ -#define configQUEUE_REGISTRY_SIZE 10 -#define configUSE_QUEUE_SETS 0 -#define configUSE_TIME_SLICING 1 -#define configUSE_NEWLIB_REENTRANT 0 -#define configENABLE_BACKWARD_COMPATIBILITY 0 -#define configNUM_THREAD_LOCAL_STORAGE_POINTERS 5 -#define configSTACK_DEPTH_TYPE uint16_t -#define configMESSAGE_BUFFER_LENGTH_TYPE size_t - -/* Memory allocation related definitions. */ -#define configSUPPORT_STATIC_ALLOCATION 0 -#define configSUPPORT_DYNAMIC_ALLOCATION 1 -#define configTOTAL_HEAP_SIZE 50000 -#define configAPPLICATION_ALLOCATED_HEAP 0 - -/* Hook function related definitions. */ -#define configUSE_IDLE_HOOK 0 -#define configUSE_TICK_HOOK 0 -#define configCHECK_FOR_STACK_OVERFLOW 0 -#define configUSE_MALLOC_FAILED_HOOK 0 -#define configUSE_DAEMON_TASK_STARTUP_HOOK 0 - -/* Run time and task stats gathering related definitions. */ -#define configGENERATE_RUN_TIME_STATS 0 -#define configUSE_TRACE_FACILITY 0 -#define configUSE_STATS_FORMATTING_FUNCTIONS 0 - -/* Co-routine related definitions. */ -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES 1 - -/* Software timer related definitions. */ -#define configUSE_TIMERS 1 -#define configTIMER_TASK_PRIORITY 3 -#define configTIMER_QUEUE_LENGTH 10 -#define configTIMER_TASK_STACK_DEPTH configMINIMAL_STACK_SIZE - -/* Interrupt nesting behaviour configuration. */ -#define configKERNEL_INTERRUPT_PRIORITY [dependent of processor] -#define configMAX_SYSCALL_INTERRUPT_PRIORITY [dependent on processor and application] -#define configMAX_API_CALL_INTERRUPT_PRIORITY [dependent on processor and application] - -/* Define to trap errors during development. */ -//#define configASSERT( ( x ) ) assert() - -/* FreeRTOS MPU specific definitions. */ -#define configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS 0 -#define configTOTAL_MPU_REGIONS 8 /* Default value. */ -#define configTEX_S_C_B_FLASH 0x07UL /* Default value. */ -#define configTEX_S_C_B_SRAM 0x07UL /* Default value. */ -#define configENFORCE_SYSTEM_CALLS_FROM_KERNEL_ONLY 1 - -/* Optional functions - most linkers will remove unused functions anyway. */ -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_xResumeFromISR 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_xTaskGetCurrentTaskHandle 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 0 -#define INCLUDE_xTaskGetIdleTaskHandle 0 -#define INCLUDE_eTaskGetState 0 -#define INCLUDE_xEventGroupSetBitFromISR 1 -#define INCLUDE_xTimerPendFunctionCall 0 -#define INCLUDE_xTaskAbortDelay 0 -#define INCLUDE_xTaskGetHandle 0 -#define INCLUDE_xTaskResumeFromISR 1 - -#define vPortSVCHandler isr_svcall -#define xPortPendSVHandler isr_pendsv -#define xPortSysTickHandler isr_systick - - -/* A header file that defines trace macro can be included here. */ - -#endif /* FREERTOS_CONFIG_H */ \ No newline at end of file diff --git a/motor-control/firmware/cmake/tmc2209.cmake b/motor-control/firmware/cmake/tmc2209.cmake new file mode 100644 index 0000000..ea22f65 --- /dev/null +++ b/motor-control/firmware/cmake/tmc2209.cmake @@ -0,0 +1,13 @@ +add_library(tmc2209_driver STATIC + src/tmc2209/uart_interface.cpp +) + +target_include_directories(tmc2209_driver PRIVATE + include/tmc2209/ +) + +target_link_libraries(tmc2209_driver + pico_stdlib + hardware_uart +) + diff --git a/motor-control/firmware/freeRTOS.cmake b/motor-control/firmware/freeRTOS.cmake deleted file mode 100644 index 498ec03..0000000 --- a/motor-control/firmware/freeRTOS.cmake +++ /dev/null @@ -1,13 +0,0 @@ -SET(FreeRTOS_DIR ${CMAKE_CURRENT_LIST_DIR}/lib/FreeRTOS-Kernel) -FILE(GLOB FreeRTOS_src ${FreeRTOS_DIR}/*.c) - -add_library(FreeRTOS STATIC - ${FreeRTOS_src} - ${FreeRTOS_DIR}/portable/GCC/ARM_CM0/port.c - ${FreeRTOS_DIR}/portable/MemMang/heap_4.c -) - -target_include_directories(FreeRTOS PUBLIC -${FreeRTOS_DIR}/portable/GCC/ARM_CM0/ - ${FreeRTOS_DIR}/include/ -) \ No newline at end of file diff --git a/motor-control/firmware/lib/pico-sdk b/motor-control/firmware/lib/pico-sdk index efe2103..beb6f99 160000 --- a/motor-control/firmware/lib/pico-sdk +++ b/motor-control/firmware/lib/pico-sdk @@ -1 +1 @@ -Subproject commit efe2103f9b28458a1615ff096054479743ade236 +Subproject commit beb6f990a6b141d8c7ddc8d90318849103f2aecb