Миграция проектов на ПЛИС новых производителей

Неточность в вычислениях на Atmega324P

Новичок
 
Регистрация: 09.06.2010
Сообщений: 1
Репутация: 10
 
09.06.2010 00:30 #1
Пишу на CodeVisionAVR програму которая подсчитывает число статистически распределенных импульсов за единицу времени.
Импульсы подаются на счетный вход таймера1 (16-bit) и регистрируются по фронту.Максимальная частота следования импульсов 5 кГц.Минимальная пауза между импульсами 200 мкс.Подсчитываю интенсивность за 1 сек и пересчитываю ее в попугаи.
Временной интервал в 1 сек. формируется таймером2 работающим от внешнего часового кварца (асинхронно).
В подпрограмме прерывания, которое происходит 1 раз в сек. по переполнению таймера2 производится считывание счетного регистра таймера1 и производятся вычисления.
Вот кусок кода (подпрограмма обработчика прерывания):

// Timer 2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{

// Reinitialize Timer 2 value
TCNT2=0x80;
// Place your code here
if (POWER==0) goto exit;
xren1=0;
xren=0;
Sn=TCNT1L;
Sn=Sn+(TCNT1H<<8);
S=S+Sn;
t++;
I=(float)(S/((t-tnach)-(dead_t*S)));
Igamma=(float)(I/gamma_sens);
Ibeta=(float)(((I*60)/7)/beta_sens);
Ialfa=(float)(((I*60)/7)/alfa_sens);
deltaS=sqrt(S);
deltaI=(float)(deltaS/((t-tnach)-(dead_t*S)));
if (I==0) {
percent=100;
goto x;
}
percent=(float)(100*(deltaI/I));
x:
In=(float)Sn;
del=labs(In-I);
deltaSn=sqrt(Sn+1);
if (I>90) {S=0; TCNT1H=0; TCNT1L=0; tnach=t; goto y;};
if ((del<(long)deltaI)||(del<(long)3*deltaSn)) {TCNT1H=0; TCNT1L=0;}
else {S=0; TCNT1H=0; TCNT1L=0; tnach=t;}
y:
doza=doza+Igamma;
doza1=(float)(doza/3600);
doza2=(float)(doza/360000);
if ((hour==23)&&(minute==59)&&(second==55)) jornal ();
light_timer++;
link_timer++;
pclink();
if ((light_mode==3)&&(light_timer>=31)) LIGHT=0;
exit:
RTC ();
conv_coplete=1;
}

Проблема в том, что если мега работает на частоте 8 Мгц, то все вычисляется правльно, если предделителем тактовой частоты снижаешь ее до 2 МГц ради экономии электричества то появляется ошибка.Результат вычесления становится меньше процентов на 10.
В чем может быть проблема?
Оценка
В многообразии литиевых батареек и аккумуляторов нет какого-то универсального или идеального варианта. Выбирая тот или иной вариант для питания устройства, разработчику приходится оперировать множеством параметров, используя наиболее оптимальное их сочетание для каждого приложения. Разберем параметры для различных приложений.
Новичок
 
Аватар для BOB51
 
Регистрация: 25.11.2008
Адрес: ДОНЕЦК
Сообщений: 313
Репутация: 58
48 13
0 0
 
17.07.2010 16:18 #2
параметры опроса вывода и синхронизации счетчика увязаны с внутренней тактовой частотой CPU, тем более сложно в случае работы с внутренним r-c генератором...
прийдется вставку на асме самому писать...
Оценка
Ответ
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход
Электронные компоненты. Бесплатная доставка по России
Часовой пояс GMT +3, время: 21:49.
Обратная связь РадиоЛоцман Вверх