Commit Graph

72 Commits

Author SHA1 Message Date
eeeck 5a3223af29 Merge pull request 'Use semaphores and one shot RTOS timers to better manage LEDs for incoming CAN message on FIFO buffer' (#8) from led-semaphore into j1939
Reviewed-on: erickahmed/j1939_logger#8
2026-06-14 16:49:17 +02:00
eeeck 53772ccb7d Remove error handling as it would cause crash on full queue 2026-06-14 16:45:02 +02:00
eeeck 9d4d807cfb Fix race condition that could cause a hard fault 2026-06-14 16:21:55 +02:00
eeeck 5ec806ffea Add CMSIS include 2026-06-14 16:17:01 +02:00
eeeck 8777f742ac Move typedef to header 2026-06-14 16:15:33 +02:00
eeeck 4aafa81009 Change CODE BEGIN N value 2026-06-14 16:14:20 +02:00
eeeck ac16f8150e Use a more sensible number of semaphores 2026-06-14 16:10:18 +02:00
eeeck f0d2990b8d Move below timer setup 2026-06-14 16:10:00 +02:00
eeeck 72ffb2644e Use more clear variable names 2026-06-14 16:09:45 +02:00
eeeck 2a3d5d17b3 Remove unnecessary declarations 2026-06-14 16:08:43 +02:00
eeeck 151bac7a13 Fix typo 2026-06-14 16:08:21 +02:00
eeeck 75efc4840d Use new context structure instead of direct pass 2026-06-14 15:17:03 +02:00
eeeck a75d42faeb Create context structure for timer callback
Strucure is made of
-  LED (port, pin)
- Semaphore
- Timer handle
2026-06-14 15:16:23 +02:00
eeeck 5b500d72ff Avoid having to declare additional variable 2026-06-14 14:56:32 +02:00
eeeck 5f1695dc0d Start timer once for automatic rearming with semaphore release 2026-06-14 14:51:46 +02:00
eeeck de6dc24dd3 Acquire semaphore and restart timer if new message incoming 2026-06-14 14:51:33 +02:00
eeeck 1b38c0f29a Release semaphore on incoming message
- Discard previous solution with timer only
2026-06-14 14:50:49 +02:00
eeeck 7ece650f72 Move declaration on top 2026-06-14 14:49:54 +02:00
eeeck ebbd1816fa Write LOW status on LED when timer triggers 2026-06-14 14:19:44 +02:00
eeeck 2e2150ebd2 Write HIGH status on LED on incoming CAN message and start 25ms timer 2026-06-14 14:19:30 +02:00
eeeck d6ea04e33e Change variable name 2026-06-14 14:18:40 +02:00
eeeck 7c7d774522 Create semaphores for signalling new message in FIFO buffer 2026-06-14 14:18:28 +02:00
eeeck c65341c662 Change periodic timers to one shot timers 2026-06-14 14:18:07 +02:00
eeeck d42e5fce46 Read CAN messages from FIFO buffer 2026-06-14 13:55:05 +02:00
eeeck 8ef0980510 Handle ISR for CANrx by saving message in FIFO buffer 2026-06-14 13:53:40 +02:00
eeeck dc3688d3d7 Change error check structure 2026-06-14 12:25:31 +02:00
eeeck 34553af0a7 Create message queues for saving CAN frames 2026-06-14 11:11:34 +02:00
eeeck 2cce753716 Remove duplicate declaration 2026-06-14 10:47:12 +02:00
eeeck 19eaee2674 Enable interrupt when CAN frame received and stored in FIFO buffer 2026-06-14 10:42:26 +02:00
eeeck 8e37c44eae Refactor naming conventions following FREERTOS guidelines 2026-06-14 10:04:16 +02:00
eeeck c101c77ba4 Refactor: move RTOS task definition back to main.c
- Private functions remain on canlog.c
- Better consistency for when regenerating with CubeMX
2026-06-14 00:36:41 +02:00
eeeck ce995602e4 Merge branch 'rtos-timers' into j1939 2026-06-13 23:02:22 +02:00
eeeck 7b913c8ab9 Simplify CAN error code handler 2026-06-13 20:03:24 +02:00
eeeck de7c817471 Reset LEDs in error handler 2026-06-10 14:27:39 +02:00
eeeck 59a58d1f1f Implement LED heartbeat with RTOS timers instead of threads
- Less memory overhead (no stack allocation)
- Better timing accuracy (less jitter)
- CAN bus still has higher priority than timers
2026-06-10 14:14:17 +02:00
eeeck 0c3c93040b Simplify CAN error code handler 2026-06-10 13:16:19 +02:00
eeeck d641c8b915 Simplify CAN error code handler 2026-06-10 13:15:01 +02:00
eeeck b38d4d5403 Remove static declare 2026-06-10 13:07:24 +02:00
eeeck d32c03c8f0 Update function prototype names 2026-06-10 13:07:15 +02:00
eeeck 0b05331fff Fix error handling for CAN bus 2026-06-10 13:01:43 +02:00
eeeck 0f6011d05b Use CMSIS-RTOS2 instead of FreeRTOS for consistency 2026-06-10 11:38:30 +02:00
eeeck 6c4a1368be Use more clear names for RTOS function prototypes 2026-06-10 11:28:42 +02:00
eeeck e2b6d13364 Clarify function prototype description 2026-06-10 11:25:31 +02:00
eeeck b14cdfaccb Lower priority for LED heartbeat 2026-06-10 11:25:01 +02:00
eeeck 7bb401762a Add headers for better code regeneration compatibility with STM32CubeMX 2026-06-10 11:24:43 +02:00
eeeck 87e8ffc6fa Adapt error handler to log CAN errors and toggle error LED 2026-06-09 10:43:32 +02:00
eeeck 91385d00cf Configure filter banks and start CAN 2026-06-09 10:42:40 +02:00
eeeck 30b7538e26 Use HAL WritePin func instead of TogglePin
- Better reliability in blinking LED
- Slightly more efficiency (fewer CPU clocks)
2026-06-09 10:05:25 +02:00
eeeck c891681b94 Minor comment clarifications 2026-06-09 09:51:10 +02:00
eeeck 770e97ccd9 Move include declaration to private includes 2026-06-09 09:50:00 +02:00