Имеется простой кусок кода:
Код
while (1)
{
IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, count & 0x01);
delay = 0;
while (delay < 10000000) {
delay++;
}
count++;
}
По идее должно меняться значение count через некоторую задержку, создаваемую выполнением цикла. Когда выбрана опция оптимизации Off (оптимизация выключена), то программа работает как и должна. Если включить любой тип отпимизации - Level1,2,3, Size, то компилятор выкашивает из программы цикл, типа его результат нигде не используется:
Код
delay = 0;
while (delay < 10000000) {
delay++;
}
Получается, что в каждой итерации цикла count выводится в порт и увеличивается на 1, без задержки.
Вопрос в том, как правильно сделать программную задержку при включенной оптимизации, чтобы компилятор ее не удалил?
Сообщение отредактировал Artemvvv - Jul 8 2011, 10:46