реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Необходима небольшая консультация...совет..., MSP430F169 + тонкости прерывания.
nicom
сообщение Feb 14 2008, 13:33
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 544
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 870



Предыстория:
Что есть: большой проект на 430F169. Работает, как генератор сигналов произвольной формы на внутренний ЦАП. Для достаточно сложных сигналов необходимо включить программную обработку сигналов... и вот тут столкнулся с необходимостью вылизывания временных затрат.

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

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

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


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

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

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

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

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

Спасибо.
Go to the top of the page
 
+Quote Post
rezident
сообщение Feb 14 2008, 13:45
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(nicom @ Feb 14 2008, 18:33) *
Собственно вопрос: как обойти эту тонкость, или как приручить компилятор...
Во-первых, у MSP430F169 имеется трехканальный DMA, предназначенный как раз для таких применений как потоковый ввод-вывод. Во-вторых, чтобы побороться за оптимизацию почитайте в описании компилятора про квалификатор переменных volatile. После этого примените его так, как посчитаете нужным.
Go to the top of the page
 
+Quote Post
nicom
сообщение Feb 14 2008, 14:16
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 544
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 870



Цитата
имеется трехканальный DMA, ...

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

...
Век живи - век учись... 07.gif
...
Получилось...
компилятор "приручился"...
...
СПАСИБО!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 06:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01363 секунд с 7
ELECTRONIX ©2004-2016