diff --git a/libraries/APM_RC/APM_RC_APM1.cpp b/libraries/APM_RC/APM_RC_APM1.cpp
index 7f648e50f60d1b58ed189ed5180a05100237f30d..1915efa1fd90aeb72d7cb2f298f80d94052a2316 100644
--- a/libraries/APM_RC/APM_RC_APM1.cpp
+++ b/libraries/APM_RC/APM_RC_APM1.cpp
@@ -219,15 +219,10 @@ uint16_t APM_RC_APM1::InputCh(uint8_t ch)
         return _HIL_override[ch];
     }
 
-    // We need to block ICP4 interrupts during the read of 16 bit PWM values
-    uint8_t _timsk4 = TIMSK4;
-    TIMSK4 &= ~(1<<ICIE4);
-
-    // value
+    // we need to stop interrupts to be sure we get a correct 16 bit value
+    cli();
     result = _PWM_RAW[ch];
-
-   // Enable ICP4 interrupt if previously active
-    TIMSK4 = _timsk4;
+    sei();
 
     // Because timer runs at 0.5us we need to do value/2
     result >>= 1;
diff --git a/libraries/APM_RC/APM_RC_APM2.cpp b/libraries/APM_RC/APM_RC_APM2.cpp
index aa6847fa96d8e95c8f443fd605e6f61616ec8c08..d78105227a604eb065e76bcfa41e2ccabc0d119b 100644
--- a/libraries/APM_RC/APM_RC_APM2.cpp
+++ b/libraries/APM_RC/APM_RC_APM2.cpp
@@ -241,16 +241,11 @@ uint16_t APM_RC_APM2::InputCh(unsigned char ch)
         return _HIL_override[ch];
     }
 
-    // We need to block ICP5 interrupts during the read of 16 bit PWM values
-    uint8_t _timsk5 = TIMSK5;
-    TIMSK5 &= ~(1<<ICIE5);
-
+    // we need to block interrupts during the read of a 16 bit
     // value
+    cli();
     result = _PWM_RAW[ch];
-
-    // Enable ICP5 interrupt if previously active
-    TIMSK5 = _timsk5;
-    
+    sei();
     // Because timer runs at 0.5us we need to do value/2
     result >>= 1;