Commit Graph

123 Commits

Author SHA1 Message Date
eeeck ce85e473b3 Move before starting scheduler to avoid race condition
- If a CAN message arrives during boot time ISR will fire and try to put
  data into xCAN1RxQueue. At that time queue is NULL: calling RTOS APIs
  on NULL handles will cause a HardFault
2026-06-15 14:11:11 +02:00
eeeck 8c8fe93d5b Release CANrx semaphore in ISR 2026-06-15 14:09:51 +02:00
eeeck ab8b68313b Transition from timer based to task based LED signal
- Remove RTOS timers
- Create LED task
- Avoid polling, instead wait for semaphore
2026-06-15 14:06:51 +02:00
eeeck 70cead28d7 Re-add newlib lock glue to Src 2026-06-15 10:37:01 +02:00
eeeck ac212c4a0a Merge pull request 'Change headers with better copyright comments' (#13)
from code-licensing into j1939

Reviewed-on: erickahmed/j1939_logger#13
2026-06-14 21:36:45 +02:00
eeeck 9fc2f0b73b Remove files that were misteriously duplicated... 2026-06-14 21:33:13 +02:00
eeeck 3c66a39a5d Fix variable name mismatch 2026-06-14 21:27:10 +02:00
eeeck 19eefc288b Fix scope error by moving declaration 2026-06-14 20:48:11 +02:00
eeeck 17febf569a Use a more generic name as semaphore will be used by other tasks 2026-06-14 18:31:54 +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 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 0e4b41647f Change headers with better copyright comments
- Add SPDX License Identifier and copyright notice
- Add NOTICE.md

Minor: remove unused freertos.c
2026-06-13 20:07:32 +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 b38d4d5403 Remove static declare 2026-06-10 13:07:24 +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