Try   HackMD

Book Sprint


Outline

  • Interrupts
    • What's an interrupt <- @hdoordt
      • Reflect on the way things were done in prior chapters
      • What's it good for: power saving, interleaving computation, concurrently waiting on i/o,
      • What is an interrupt?
      • What does it do (code pause, jump to ISP, return to where it was)
      • Can pause in the middle of a single CPU instruction, which makes interrupts very much like threads: race conditions
      • ISR has no arguments so how does it get input? Segue into next section
    • enabling it at the peripheral, masking/unmasking in nvic, ensure you unpend the interrupt before return <- James
    • Example with defmt::exit (or panic or something) - for fast feedback <- Bart
    • Gluing this together with non-embedded concepts like sharing
      across threads, etc.
    • HERE BE SHARING DRAGONS
    • WFE/WFI
    • Example using interrupt gpio and timer peripherals
      • timer flashes LED
      • two buttons speed up/slow down the timer flash period
      • main loop wfi
      • Do this with an atomic so we don't need shared stuff again?
    • Under The Hood <- @adamgreig
      • ARM-specific stuff like NVIC, priorities, pre-emption
      • Vector table
      • Concurrency/resource sharing
      • Chip-specific stuff like PPI, EasyDMA
      • Interrupt macro
  • DMA and PWM