Цитата(Verifi @ Jun 17 2009, 12:56)

Перевести КОООФИЦИЕНТЫ В ЦЕЛЫЕ (48 )сделать чего надо в целочисленном виде,а результат разделить на 10,хотя я на ADUC 845 переделывал библиотеку под плавучку на асме для максимальношо ускорения,результатом остался весьма доволен.А вообще поподробнее чего в прграмме с 10 Кгц делается?
Вот тут
-----------------------------
CODE
#include <ADuC841.h>
#define TRUE 1
#define FALSE 0
#define ADC_0 0x10
#define ADC_1 0x11
#define ADCCON1_CFG 0xF2;
#define T2CON_CFG 0x4;
#define PLLCON CFG 0x50:
sbit P00 = P0^0:
sbit P01 = P0^1;
sbit P02 = Р0^2;
sbit Р03 = Р0^3;
sbit Р34 = РЗ^4;
sbit Р35 = РЗ^5;
sbit Р36 = РЗ^6;
sbit Р37 = РЗ^7;
unsigned char chanel = 0;
float fUoc = 0, fUf = 0, fUf1 = 0, fU2 = 0, fUnkz = 0, fUЗ = 0, fU4 = 0, fU3_1 = 0, fU4_1 = 0. fU5 = 0, fU6 = 0, fU8 = 0, fU7_1 = 0, fU6_1 = 0, fUosh = 0, fUosh_1 = 0, fUin1 = 0, fUin2 = 0, fUin = 0, fUtp = 0, fU7 = 0;
char sign (float value )
{
return ( value > 0 ) ? 1 : -1;
}
short get_ADC ( char ADCCONFIGDATA)
{
ADCCON2 = ADCCONFIGDATA;
while ( SCONV ) { }
return ((ADCDATAH & 0xF ) * 0x100 + ADCDATAL;
}
void InitializeCPU ( )
{
ADCCON1 = ADCC0N1_CFG;
T2CON = T2CON_CFG;
PLLCON = PLLCON_CFG;
RCAP2H = 0xFF;
RCAP2L = 0x9C;
PT2 = 1; // Timer 2 interupt priority
Т2ЕX = 0;
T2 = 0;
TF2 = 1; // Interupt flag enable
}
void main( void )
{
Initialize_CPU( );
while (TRUE)
{
if ( TF2 = TRUE )
{
TF2 = FALSE;
for( chanel = 0; chanel <= 1; chanel++ )
{
switch( chanel )
case 0:
fUin1 = ( P00 = FALSE ) ? FALSE : 4096;
fUin2 = ( P01 = FALSE ) ? FALSE : 4096;
fUoc = getADC ( ADC_0 ):
break;
case 1:
fUin1 = ( P02 = FALSE ) ? FALSE : 4096;
fUin2 = ( P03 = FALSE ) ? FALSE : 4096;
fUoc = get_ADC ( ADC_1 ):
break;
default:
break;
}
fU7 = 4.8 * (fUoc - 2048 );
fU6 = 10 * fU7 + 10 * fU7_1 + fU6_1;
fU7_1 = fU7;
fU6_1 = fU6:
fUosh = 5.21 * fUin - 5.84 * fU7;
fUf = 0.25 * fUosh + (-0.25 * fUosh_1 - 0.25 * fUf );
fUosh_1 = fUosh;
fUf_1 = fUf;
fU2 = (fUf >= 2457.6) ? 2457.6 : (fUf <= -2457.6) ? -2457.6 : fUf;
fUnkz - 10 * fUin + fU2 - 0.1 * fU7 - 15 * fU8 + 2.33 * fU5;
fUЗ = (fUnkz >= 3522.56) ? 3522.56 : (fUnkz <= 3522.56) ? 3522.56 : fUnkz;
}
}
}
Сообщение отредактировал B1sh0p - Jun 17 2009, 18:54