Предыстория:
Что есть: большой проект на 430F169. Работает, как генератор сигналов произвольной формы на внутренний ЦАП. Для достаточно сложных сигналов необходимо включить программную обработку сигналов... и вот тут столкнулся с необходимостью вылизывания временных затрат.
Программа работает через прерывание от таймера...
Написал тестовый цикл:
Метка:
Инкремент переменной.
(Переменная объявлена глобальной. )
GOTO метка
Приходящее (периодически) прерывание забирает текущее значение этой переменной и выдаёт ее в ЦАП. При этом должен изменяться уровень выходного напряжения. (на осциллографе должна быть видна пила (с пропуском некоторых значений - это пока не важно))...
Исходник на "С"...
Компилируем...
IAR, старенький...
Выключить оптимизацию совсем не могу - проект не влезает в 60кБайт кода (тестовый пример встроен в целый, имеющийся проект).
Смотрим результат компиляции "С" - АSM - овский текст ...
И видно, что компилятор убирает команды, находящиеся внутри цикла...
Так понимаю... компилятор считает: раз результат не идет дальше - "на-фиг" его получать... а то, что прерывание забирает эти данные - у него "ума" не хватает...
Собственно вопрос: как обойти эту тонкость, или как приручить компилятор...
Спасибо.