Муфты электромонтажные от производителя Fucon

Неточность в вычислениях на 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.
В чем может быть проблема?
Оценка
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей.
Новичок
 
Аватар для BOB51
 
Регистрация: 25.11.2008
Адрес: ДОНЕЦК
Сообщений: 313
Репутация: 58
48 13
0 0
 
17.07.2010 16:18 #2
параметры опроса вывода и синхронизации счетчика увязаны с внутренней тактовой частотой CPU, тем более сложно в случае работы с внутренним r-c генератором...
прийдется вставку на асме самому писать...
Оценка
Ответ
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

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

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