Skip to content
Snippets Groups Projects
Forked from card10 / firmware
Source project has a limited visibility.
  • rahix's avatar
    dbeec980
    fix(pycardium): Fix delay implementation · dbeec980
    rahix authored
    
    Rewrite the delay implementation to be more accurate and properly handle
    incoming MicroPython interrupts (See issue #177).
    
    For this, the delay is split into two functions:
    
    - systick_delay_precise(): Delay with microsecond accuracy for delays
          less than 1 ms.
    - systick_delay_sleep(): Sleep for a potentially very long time, using
          WFI to put the CPU to sleep.  Whenever the CPU wakes up, this
          function will poll the MicroPython scheduler so it can execute
          pending interrupts.
    
    Ontop, this implementation allows for a future, fast, tick-based
    monotonic time implementation (e.g. mp_hal_ticks_ms).
    
    Signed-off-by: default avatarRahix <rahix@rahix.de>
    dbeec980
    History
    fix(pycardium): Fix delay implementation
    rahix authored
    
    Rewrite the delay implementation to be more accurate and properly handle
    incoming MicroPython interrupts (See issue #177).
    
    For this, the delay is split into two functions:
    
    - systick_delay_precise(): Delay with microsecond accuracy for delays
          less than 1 ms.
    - systick_delay_sleep(): Sleep for a potentially very long time, using
          WFI to put the CPU to sleep.  Whenever the CPU wakes up, this
          function will poll the MicroPython scheduler so it can execute
          pending interrupts.
    
    Ontop, this implementation allows for a future, fast, tick-based
    monotonic time implementation (e.g. mp_hal_ticks_ms).
    
    Signed-off-by: default avatarRahix <rahix@rahix.de>