Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Необходима небольшая консультация...совет...
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
nicom
Предыстория:
Что есть: большой проект на 430F169. Работает, как генератор сигналов произвольной формы на внутренний ЦАП. Для достаточно сложных сигналов необходимо включить программную обработку сигналов... и вот тут столкнулся с необходимостью вылизывания временных затрат.

Программа работает через прерывание от таймера...

Написал тестовый цикл:

Метка:
Инкремент переменной.
(Переменная объявлена глобальной. )
GOTO метка


Приходящее (периодически) прерывание забирает текущее значение этой переменной и выдаёт ее в ЦАП. При этом должен изменяться уровень выходного напряжения. (на осциллографе должна быть видна пила (с пропуском некоторых значений - это пока не важно))...

Исходник на "С"...
Компилируем...
IAR, старенький...
Выключить оптимизацию совсем не могу - проект не влезает в 60кБайт кода (тестовый пример встроен в целый, имеющийся проект).

Смотрим результат компиляции "С" - АSM - овский текст ...

И видно, что компилятор убирает команды, находящиеся внутри цикла...
Так понимаю... компилятор считает: раз результат не идет дальше - "на-фиг" его получать... а то, что прерывание забирает эти данные - у него "ума" не хватает...

Собственно вопрос: как обойти эту тонкость, или как приручить компилятор...

Спасибо.
rezident
Цитата(nicom @ Feb 14 2008, 18:33) *
Собственно вопрос: как обойти эту тонкость, или как приручить компилятор...
Во-первых, у MSP430F169 имеется трехканальный DMA, предназначенный как раз для таких применений как потоковый ввод-вывод. Во-вторых, чтобы побороться за оптимизацию почитайте в описании компилятора про квалификатор переменных volatile. После этого примените его так, как посчитаете нужным.
nicom
Цитата
имеется трехканальный DMA, ...

...получаются большие дополнительные накладные расходы ...Готовый сигнал через DMA идет классно, а вот, как работаем с двумя буферами, один выводится, один расчитывается - то "семафорить" получалось плохо, видимо, надо еще поработать...
Цитата
... почитайте в описании компилятора про квалификатор переменных volatile. После этого примените его так, как посчитаете нужным.

...
Век живи - век учись... 07.gif
...
Получилось...
компилятор "приручился"...
...
СПАСИБО!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.