Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RP2040] Fix I2C lockups, improve error handling and performance #329

Merged
merged 1 commit into from
Jul 27, 2022

Commits on Jul 26, 2022

  1. RP2040: Fix I2C lockups and improve error handling

    Problem:
    
    * in edge-case scenarios the tx empty interrupt was still enabled after a
      transmission was finished. This would lead to endless interrupt tail
      chaining that completely starved the system.
    
    Solution:
    
    * all irqs are now disabled at the end of a transaction by default
    
    Error handling:
    
    * all error condition irqs like over and underruns of tx and rx fifos
      are now enabled and handled with an wake-up of the sleeping thread
      plus disabling of all irqs
    
    Optimizations:
    
    * irq status register is only read once for evalutation in the irq
      handler
    * better utilization of the rx fifos during reception, which are now only
      read if all data has been successfully received.
    KarlK90 committed Jul 26, 2022
    Configuration menu
    Copy the full SHA
    c7dbb1d View commit details
    Browse the repository at this point in the history