Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Цифровые сигнальные процессоры (DSP) и их применение»

проблема с библиотечной функцией

Отправлено AP 09 декабря 2008 г. 17:58


Среда CSS 3.3
Процессор F2811

понадобилось переписать функцию в файле F28xileg_vdc.c
void F28X_ileg2_dcbus_drv_read(ILEG2DCBUSMEAS *p)

взял ее исходный код из каталога с28\lib\drvlib\src закинул в свой файл с другим названием и подключил к проекту

в pmsm3_1.h я переключаюсь между ними

ILEG2SHIFTMEAS ilg2_vdc1 = ILEG2SHIFTMEAS_DEFAULTS;
//ILEG2DCBUSMEAS ilg2_vdc1 = ILEG2DCBUSMEAS_DEFAULTS;

в первом случае токи считаются ок
во втором идет переполнение в умножении на GAIN

проблема в следующем месте

int dat_q15;
long tmp;

/* Wait until ADC conversion is completed */
while (AdcRegs.ADCST.bit.SEQ1_BSY == 1)
{};

dat_q15 = AdcRegs.ADCRESULT0^0x8000; /* Convert result to Q15 (bipolar signal) */
tmp = (long)(p->Imeas_a_gain*dat_q15);

проблема появляется в результате переполнения при умножении двух int
я ее разрешил убрав произведение из скобок

tmp = (long)p->Imeas_a_gain*dat_q15;

Собственно вопрос как тогда грамотно скомпилять их библиотеку если в искходнике такие грабли?



Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
что получится, если сложить 4 и 4 ?

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru