Go to the source code of this file.
Functions | |
void | tdelay (uint16_t) |
void tdelay | ( | uint16_t | ) |
00017 { 00018 uint16_t i; 00019 00020 if (ms == 0) return; 00021 00022 ms = ms * 12; 00023 00024 uint8_t remainder = ms % 256; 00025 if (remainder) { 00026 TCCR2 = 0; 00027 TCNT2 = 0; 00028 OCR2 = remainder; 00029 TIFR |= _BV(OCF2); 00030 00031 // prescaler = 1024, 0.128ms per cycle 00032 for (TCCR2 = _BV(CS22)|_BV(CS21)|_BV(CS20); (TIFR & _BV(OCF2)) == 0;); 00033 } 00034 00035 OCR2 = 0; 00036 TCNT2 = 0; 00037 for (i = ms/256; i > 0; i--) { 00038 TCCR2 = 0; 00039 TIFR |= _BV(TOV2); 00040 for (TCCR2 = _BV(CS22)|_BV(CS21)|_BV(CS20); (TIFR & _BV(TOV2)) == 0;); 00041 } 00042 00043 TCCR2 = 0; 00044 }