I'm a communications and electronics engineer working on automotive-style embedded projects, applying C and learning AUTOSAR and FreeRTOS.
Currently working in the automation industry at Alimentos Sello Rojo.
I'm drawn to motorsport — I'm fascinated by how an F1 car's onboard systems capture and process sensor data in real time, and by the whole electronic system of the car: powertrain, battery management, and control systems. That same curiosity extends to how systems like Mars rovers acquire and transmit data from remote, extreme environments.
Languages: C
Microcontrollers: 8-bit (PIC18F4550), 32-bit ARM Cortex-M (STM32F446RE, STM32G431RB)
RTOS: FreeRTOS (tasks, task notifications, scheduling)
Protocols: UART, CAN, I2C (academic)
Tools: GCC/arm-none-eabi-gcc, Makefile, GDB, CMSIS, Git
Debugging: Oscilloscope, multimeter, UART-based debugging
Other: Driver development, register-level programming, reading datasheets and reference manuals
Currently learning: AUTOSAR
- Bare-metal sensored FOC motor control for a BLDC/PMSM motor, built on an AUTOSAR-inspired layered architecture
- Hardware: STM32G431RB (NUCLEO-G431RB), STSPIN830 motor driver, AS5600 magnetic encoder, GBM2804H-100T gimbal motor
- Mcu and Port modules complete and tested — clock configuration (150 MHz SYSCLK, verified via MCO), input/output pin configuration
- ADC driver in progress
- Two FreeRTOS tasks — UART command handling and LED blink control — synchronized via
xTaskNotify - UART driver runs in both bare-metal and FreeRTOS contexts; debugged and fixed a baud rate bug (corrected formula and clock source)
- All HAL drivers (GPIO, UART) written from scratch using CMSIS
- FreeRTOS integrated as a git submodule, built via Makefile
- No IDE — build, flash, and debug (GDB) entirely from the command line
- Wrote all drivers from scratch in C
- Cooperative scheduler with 1ms tick (Timer 2)
- Interrupt-driven design: system tick, UART communication with ring buffers
- Debugged via multimeter and UART prints (external printf implementation)
- Built and flashed from the command line via Makefile