Lesson 1Microcontroller families comparison: AVR, PIC, ARM Cortex-M (M0/M3/M4) — performance, peripherals, and ecosystemThis lesson compares main microcontroller families. You will look at AVR, PIC, and ARM Cortex-M devices for speed, built-in parts, tools, support networks, cost, and fit for communication-focused embedded designs in South Sudan contexts.
AVR architecture, strengths, and use casesPIC families and typical application domainsARM Cortex-M cores: M0, M3, and M4 featuresEcosystem, tools, and community supportPeripherals, memory, and performance scalingCost, availability, and long-term lifecycleLesson 2Basic firmware safety: watchdog timer usage, fault reporting, and robust reset strategiesThis lesson focuses on simple firmware safety features. You will set up watchdog timers, design safe reset and recovery steps, add fault reporting, and make sure unexpected stops or bad states are found and fixed properly.
Watchdog timer configuration and feedingDetecting and handling lockups and dead loopsBrown-out, POR, and external reset handlingStoring reset cause and fault contextNonvolatile logging of critical failuresSafe restart and degraded operation modesLesson 3GPIO and peripheral budgeting: ADC channels, UART/SPI/I2C ports, timers, interrupts and DMA planningThis lesson covers assigning GPIOs and on-chip parts to system needs. You will plan ADC channels, serial ports, timers, interrupts, and DMA to avoid problems, allow growth, and meet time limits in your projects.
Creating a complete signal and pin inventoryMapping ADC channels to sensors and referencesAllocating UART, SPI, and I2C for peripheralsTimer allocation for PWM, capture, and timebaseInterrupt priority and nesting considerationsPlanning DMA channels for high data throughputLesson 4Essential MCU hardware choices: supply voltage, clock source (internal RC, crystal, external oscillator), and power domainsThis lesson guides key hardware choices for MCUs. You will check supply voltage options, clock sources, and power areas, thinking about speed, noise, analog precision, and matching with sensors, radios, and outside logic.
Selecting core supply voltage and regulatorsI/O voltage levels and level shifting needsInternal RC oscillator pros and consCrystal and external oscillator selectionSeparating analog and digital power domainsDecoupling and ground layout implicationsLesson 5Clocking and timing: selecting clock source, configuring system tick, low-power modes and wake sourcesThis lesson explains clock setup and timing. You will choose clock sources, set PLLs, configure system tick, and design low-power modes and wake triggers while meeting time, jitter, and power needs.
Clock tree overview and configuration stepsPLL, prescalers, and frequency trade-offsSystem tick configuration and timekeepingTimer usage for delays and schedulingLow-power sleep and stop mode selectionWakeup sources and latency managementLesson 6ADC driver design: sampling sequence, oversampling, averaging, and conversion timingThis lesson details designing ADC drivers for good measurements. You will plan sampling order, set triggers, use oversampling and averaging, control conversion time, and reduce noise with hardware and firmware methods.
ADC reference selection and calibrationChannel sequencing and scan configurationSampling time and trigger source selectionOversampling, averaging, and filteringDMA-based ADC data acquisitionMitigating noise and crosstalk in readingsLesson 7Embedded power management: sleep modes, brown-out detection, RTC for wakeups, and battery considerationsThis lesson addresses power management in embedded systems. You will use sleep modes, brown-out detection, RTC wakeups, and think about battery types, size, and life for reliable low-power communication setups.
Sleep mode selection and entry criteriaRTC configuration for timed wake eventsBrown-out detection thresholds and actionsMeasuring and budgeting average currentBattery chemistry and discharge behaviorDesigning for long battery life and safetyLesson 8Firmware architecture and flow: boot, peripheral init, sensor read routine, error handling, data formatting, comms schedulingThis lesson shows overall firmware structure from start to normal work. You will design boot steps, initialize peripherals, sensor reading loops, error paths, data formatting, and communication timing for steady behavior.
Boot sequence and startup code overviewPeripheral and middleware initialization orderDesigning periodic sensor read tasksCentralized error handling and logging pathsData formatting, scaling, and unit handlingCooperative scheduling and main loop designLesson 9Communication driver design: UART, SPI, I2C stacks; polling vs interrupt vs DMA approachesThis lesson explains building reusable UART, SPI, and I2C drivers. You will compare polling, interrupt, and DMA ways, define driver interfaces, handle errors and timeouts, and fit them into higher protocol layers.
Layered architecture for serial driversUART driver: framing, buffering, and flow controlSPI driver: modes, chip select, and throughputI2C driver: addressing, arbitration, and retriesPolling versus interrupt-driven transfersDMA-based transfers and ring buffer design