diff --git a/armsrc/lfsampling.c b/armsrc/lfsampling.c index fb52411d4..c5a075e7a 100644 --- a/armsrc/lfsampling.c +++ b/armsrc/lfsampling.c @@ -137,7 +137,7 @@ uint32_t DoAcquisition(uint8_t decimation, uint32_t bits_per_sample, bool averag uint32_t sample_total_saved = 0; uint32_t cancel_counter = 0; - uint16_t checker=0; + uint16_t checker = 0; while (true) { if ( checker == 1000 ) { @@ -293,8 +293,19 @@ void doT55x7Acquisition(size_t sample_size) { bool startFound = false; bool highFound = false; bool lowFound = false; + + uint16_t checker = 0; + + while ( skipCnt < 1000 && (i < bufsize)) { + if ( checker == 1000 ) { + if (BUTTON_PRESS() || data_available()) + break; + else + checker = 0; + } else { + ++checker; + } - while (!BUTTON_PRESS() && !data_available() && skipCnt < 1000 && (i < bufsize)) { WDT_HIT(); @@ -359,7 +370,18 @@ void doCotagAcquisition(size_t sample_size) { uint16_t i = 0; uint16_t noise_counter = 0; - while (!BUTTON_PRESS() && !data_available() && (i < bufsize) && (noise_counter < (COTAG_T1 << 1))) { + uint16_t checker = 0; + + while ((i < bufsize) && (noise_counter < (COTAG_T1 << 1))) { + if ( checker == 1000 ) { + if (BUTTON_PRESS() || data_available()) + break; + else + checker = 0; + } else { + ++checker; + } + WDT_HIT(); if (AT91C_BASE_SSC->SSC_SR & AT91C_SSC_RXRDY) { @@ -408,8 +430,18 @@ uint32_t doCotagAcquisitionManchester() { uint16_t sample_counter = 0, period = 0; uint8_t curr = 0, prev = 0; uint16_t noise_counter = 0; + uint16_t checker = 0; + + while ((sample_counter < bufsize) && (noise_counter < (COTAG_T1 << 1))) { + if ( checker == 1000 ) { + if (BUTTON_PRESS() || data_available()) + break; + else + checker = 0; + } else { + ++checker; + } - while (!BUTTON_PRESS() && !data_available() && (sample_counter < bufsize) && (noise_counter < (COTAG_T1 << 1))) { WDT_HIT(); if (AT91C_BASE_SSC->SSC_SR & AT91C_SSC_RXRDY) {