Bläddra i källkod

pcnt: fix bug in clear interrupt status

morris 5 år sedan
förälder
incheckning
dcb23c0bc8
1 ändrade filer med 1 tillägg och 1 borttagningar
  1. 1 1
      components/driver/pcnt.c

+ 1 - 1
components/driver/pcnt.c

@@ -286,6 +286,7 @@ static void IRAM_ATTR pcnt_intr_service(void *arg)
     uint32_t status;
     uint32_t status;
     pcnt_port_t pcnt_port = (pcnt_port_t)arg;
     pcnt_port_t pcnt_port = (pcnt_port_t)arg;
     pcnt_hal_get_intr_status(&(p_pcnt_obj[pcnt_port]->hal), &status);
     pcnt_hal_get_intr_status(&(p_pcnt_obj[pcnt_port]->hal), &status);
+    pcnt_hal_clear_intr_status(&(p_pcnt_obj[pcnt_port]->hal), status);
     
     
     while (status) {
     while (status) {
         int unit = __builtin_ffs(status) - 1;
         int unit = __builtin_ffs(status) - 1;
@@ -295,7 +296,6 @@ static void IRAM_ATTR pcnt_intr_service(void *arg)
             (pcnt_isr_func[unit].fn)(pcnt_isr_func[unit].args);
             (pcnt_isr_func[unit].fn)(pcnt_isr_func[unit].args);
         }
         }
     }
     }
-    pcnt_hal_clear_intr_status(&(p_pcnt_obj[pcnt_port]->hal), status);
 }
 }
 
 
 static inline esp_err_t _pcnt_isr_service_install(pcnt_port_t pcnt_port, int intr_alloc_flags)
 static inline esp_err_t _pcnt_isr_service_install(pcnt_port_t pcnt_port, int intr_alloc_flags)