From 1a63b36583fe0a6c5371933b6d7ccfc086a7f45c Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Mon, 2 Mar 2015 13:22:07 +0100 Subject: Revert "Temporary fix for pulseIn() regression." This reverts commit 8ddc5198f6ef8b2816a61b7b0fcce99f927d11a0. To be substituted by ASM generated code --- cores/arduino/wiring_pulse.c | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) (limited to 'cores/arduino/wiring_pulse.c') diff --git a/cores/arduino/wiring_pulse.c b/cores/arduino/wiring_pulse.c index 830c454..0d96886 100644 --- a/cores/arduino/wiring_pulse.c +++ b/cores/arduino/wiring_pulse.c @@ -61,25 +61,9 @@ unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout) width++; } - // convert the reading to microseconds. There will be some error introduced by + // convert the reading to microseconds. The loop has been determined + // to be 20 clock cycles long and have about 16 clocks between the edge + // and the start of the loop. There will be some error introduced by // the interrupt handlers. - - // Conversion constants are compiler-dependent, different compiler versions - // have different levels of optimization. -#if __GNUC__==4 && __GNUC_MINOR__==3 && __GNUC_PATCHLEVEL__==2 - // avr-gcc 4.3.2 - return clockCyclesToMicroseconds(width * 21 + 16); -#elif __GNUC__==4 && __GNUC_MINOR__==8 && __GNUC_PATCHLEVEL__==1 - // avr-gcc 4.8.1 - return clockCyclesToMicroseconds(width * 24 + 16); -#elif __GNUC__<=4 && __GNUC_MINOR__<=3 - // avr-gcc <=4.3.x - #warning "pulseIn() results may not be accurate" - return clockCyclesToMicroseconds(width * 21 + 16); -#else - // avr-gcc >4.3.x - #warning "pulseIn() results may not be accurate" - return clockCyclesToMicroseconds(width * 24 + 16); -#endif - + return clockCyclesToMicroseconds(width * 21 + 16); } -- cgit v1.2.3-18-g5258