ПРЕСМЕТУВАЊЕ НА ЕФЕКТИВНА ВРЕДНОСТ СО ПОМОШ НА PSOC3! ПОМОШ!!!!!

  • Креатор на темата Креатор на темата 2pacforever
  • Време на започнување Време на започнување
Член од
14 август 2006
Мислења
43
Поени од реакции
1
Здраво на сите! Потребна ми е помош околу еден проблем, и ќе сум многу благодарен кога би можеле да ми помогнете. Задачата е на два влезни сигнала. Треба да се пресмета ефективната вредност на двата сигнала и оној сигнал со поголема вредност да го пуштам на излез. Моето решение е:
Ги квадрирам и собирам сите примероци(бројот на примероци е определ број, во мојот случај тој број е 65535. Потоа сумата, којашто е еднаква на сумата од квадратите, ја делам со 65535 и потоа барам корен од тоа. На тој начин ја пресметувам ефективната вредност. Откако ќе ги најдам ефективните вредности, ги споредувам и поголемата ја пуштам на излез.
Мојот код е:
#include <device.h>
#include <math.h>
double result = 0;
double konecen = 0;
double konecen1 = 0;
int32 suma1=0;
int32 suma2=0;
double result1 = 0;
int32 br1=0;
int32 br2=0;
void main()
{
ADC_DelSig_1_Start(); /* Initialize ADC */
for(;;)
{
AMux_1_Start( ); /* Reset all channels */
AMux_1_Select(0); /* Connect channel 1 */
ADC_DelSig_1_StartConvert();
ADC_DelSig_1_IsEndConversion(ADC_DelSig_1_WAIT_FOR_RESULT);
ADC_DelSig_1_StopConvert();
suma1+=ADC_DelSig_1_GetResult16() * ADC_DelSig_1_GetResult16();
br1+=1;
if (br1==65535)

{
result = suma1/65535 ;
konecen = sqrt(result);

}
AMux_1_Select(1); /* Connect channel 2 */
ADC_DelSig_1_StartConvert();
ADC_DelSig_1_IsEndConversion(ADC_DelSig_1_WAIT_FOR_RESULT);
suma2+=ADC_DelSig_1_GetResult16() * ADC_DelSig_1_GetResult16();
br2+=1;
if (br2==65535)

{
result1 = suma2/65535 ;
konecen1 = sqrt(result1);

}
if( br1==65535 && br2==65535)
{
br1=0;
br2=0;
suma1=0;
suma2=0;
if(konecen > konecen1)
{
AMux_2_Start( );
AMux_2_Select(0);
}
else
{
AMux_2_Select(1);
}
break;
}

}
}


Дали мислите дека ова ќе работи? Исто така добродојдени се и идеи и сугестии како да се убрза кодот?
Исто така како може да направам конверзија од бинарен запис на конечен и конечен1 во децимален, бидејќи ќе треба да ги прикажам на екран, па ми треба најлесниот начин да го направам тоа? Тоа би требало да изгледа вака:
влезен сигнал1 ефективна вредност=бројка
влезен сигнал2 ефективна вредност=бројка
излез=сигнал1 или сигнал 2(зависно кој е поголем)
И уште нешто. Дали ќе подобро ако ја пресмет ам сумата на квадратите со Interapt рутината на adc? Сите други идеи за решавање на проблемот се добредојдени. Фала однапред на помошта.
 

Attachments

  • za na forum slika.JPG
    za na forum slika.JPG
    58,3 KB · Прегледи: 18
  • slika za na forum1.JPG
    slika za na forum1.JPG
    54,7 KB · Прегледи: 19

Kajgana Shop

Back
На врв Bottom