All posts
- Thread-safe event passing in wxPython
- Multiprocessing - Python's best kept secret
- Best practices in firmware
- Connecting a high speed parallel ADC to SAM E70
- Triggering DMA from timers (or GPIO) on the SAM E70
- Interrupt remapping on Cortex-M0 (and other small chips)
- Lifehack: detecting debugger connection for Cortex-M0 & Ozone
- Reducing Home Assistant RAM usage
- Very simple stack overflow detection for Cortex-M and RISC-V
- Yet another autossh tutorial
- Abusing reserved interrupt vectors on Cortex-M for metadata
- Wiznet W7500 flash programming
- Listing stuck Python threads
- Recovering a bricked Wiznet W7500 using the bootloader
- I have been copied on Aliexpress!
- Today I learned: How to read address zero on RISC-V
- Story from the trenches - uninitialized RAM is not random (enough)
- Things you should know about the stack on Cortex-M
- Bug of the day: missing entry point
- Implementing a LIN slave on STM32L011
- Home Assistant and HAN port electricity meter
- Interview questions for embedded engineers
- What is inside a Mean Well DIN rail power supply
- Scheduling posts with Pelican
- Practical comparison of ARM compilers
- Connecting Modbus RTU to TCP with Waveshare RS485 to Ethernet converter
- Connecting a Modbus energy meter to Home Assistant
- Getting Home Assistant uptime in minutes
- Water leak app notification in Home Assistant
- Migrating to Pelican
- Oscilloscope bandwidth benchmark
- STM32 stop mode & EXTI wakeup without HAL
- Matching STM32 hardware CRC with standard CRC-32
- Coax relay PCB for HF antenna switching
- Fast integer scaling on Cortex-M0
- Reducing FFT code size of CMSIS DSP
- Debouncing buttons on EFM32 Happy Gecko
- Beware of JDY-30 Bluetooth SPP modules
- STM32L4 I2C driver for FreeRTOS without HAL
- STM32L4 UART driver for FreeRTOS without HAL
- Generating signals with STM32L4 timer, DMA and DAC
- Debugging runtime memory corruption on Cortex-M
- Preserving debugging breadcrumbs across reboots in Cortex-M
- Reducing firmware size by removing libc
- Fixing Cortex-M startup code for link-time optimization
- Disk space monitoring & e-mail notifications with Bash
- Practical FFT on microcontrollers using CMSIS DSP
- Bell 202 modem for AVR and other MCUs
- Making sinewaves with XMEGA DAC
- Git - checking JavaScript files for debugger statements
- EFM32 Cortex-M firmware project from scratch - step by step
- Git - confirmation before commit
- Using the internal EEPROM of STM32L
- Open OBD2 datalogger
- Kinetis E - writing to internal flash
- Making graphics and fonts for embedded systems
- Waveshare ePaper display library
- Hard fault in __libc_init_array
- STM32L151 makefile project
- Reading OBD2 data without ELM327, part 2 – K-Line
- Reading OBD2 data without ELM327, part 1 - CAN
- FreeRTOS on Kinetis E Cortex M0+ : easy porting tutorial
- XMEGA power down mode for battery powered devices
- Kinetis - relocating variables to upper SRAM
- Practical NodeMCU endurance with a big NiCd battery pack
- XMEGA USART driver with TX DMA
- XMEGA high-performance SPI with DMA
- XMEGA and HD44780 LCD
- Making call graphs with GCC, egypt and cflow
- Antenna switch & rotator controller
- Reliable storage of settings in EEPROM
- Using XMEGA hardware CRC generator for CRC-16 CCITT
- AVR fuses for beginners
- Using OS X Time Machine with NFS
- Youkits TJ5A
- MG-log for Android
- Serial port redirection from Windows to Linux with socat
- Gentoo on Banana Pi
- RRDtool - quick tutorial
- Banana Pi on battery power
- Small, cheap power supply modules from Aliexpress
- Universal antenna rotator controller
- NodeMCU as a standalone thermometer
- B6AC battery charger teardown
- NodeMCU networked thermometer
- First steps with NodeMCU