void Tmr_Wait1us (uint16_t delay) {
uint16_t i;
TCNT0 = 0; // will start to count from 0 up to 255 (if 8-bit timer)
for (i = 0; i < delay/256; i++)
while (TCNT0 < 255)
;
while (TCNT0 <= delay % 256)
;
}
Этот код используется для установки таймера ожидания точное количество времени, чтобы быть применен к AVR-Atmega32a, я не могу понять, что пустые петли делает здесь? также что делает второй цикл?Пустой смысл цикла в коде таймера с использованием C
Неоднозначный вопрос; есть три петли, две из которых пусты. Прочтите, какие петли вы имеете в виду. – Clifford
Это не хороший способ задержки; 8-разрядный таймер будет обнулять от 255 до нуля, но цикл проверяет в то время как 'TCNT0 <255', что является ложным только тогда, когда' TCNT0' составляет ровно 255, это состояние может быть легко пропущено, если происходит прерывание и занимает больше времени, чем один рассчитывать на процесс, делая задержку недетерминистически дольше, чем предполагалось. Скорее, прерывание таймера должно использоваться для увеличения счетчика, и этот счетчик опросил, а не «TCNT0». – Clifford