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