TEST(IQmath_ExtractInteger, IQ17int) { LONGS_EQUAL(16383, _IQ17int(_IQ17(16383.999992371))) ; LONGS_EQUAL(-16384, _IQ17int(_IQ17(-16384.0))) ; }
int main(void) { /* FIFO Buffer */ unsigned long temp[1]; /*Set the clocking to directly run from the crystal at 8MHz*/ SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ); /*Enable ADC Peripheral*/ SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0); //Enable Timers. SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER2); SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1); SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0); /* Set the clock for the GPIO Port B */ SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); /* Set the type of the GPIO Pin */ GPIOPinTypeTimer(GPIO_PORTB_BASE, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_5); /* UART configuration */ InitConsole(); //Setting the timer for PWM TimerConfigure(TIMER2_BASE, TIMER_CFG_16_BIT_PAIR | TIMER_CFG_B_PWM); TimerConfigure(TIMER1_BASE, TIMER_CFG_16_BIT_PAIR | TIMER_CFG_A_PWM); TimerConfigure(TIMER0_BASE, TIMER_CFG_16_BIT_PAIR | TIMER_CFG_A_PWM); /*Configure ADC Peripheral*/ ADCSequenceConfigure(ADC0_BASE, 3, ADC_TRIGGER_PROCESSOR, 0); /*Configure ADC Sequence*/ ADCSequenceStepConfigure(ADC0_BASE, 3, 0, ADC_CTL_CH5 | ADC_CTL_IE | ADC_CTL_END); /*Enable ADC sequence*/ ADCSequenceEnable(ADC0_BASE, 3); /*Clear ADC Interrupt*/ ADCIntClear(ADC0_BASE, 3); IntMasterEnable(); TimerLoadSet(TIMER2_BASE, TIMER_B, 500); TimerLoadSet(TIMER1_BASE, TIMER_A, 500); TimerLoadSet(TIMER0_BASE, TIMER_A, 500); unsigned long i,k,counter=0,i1=0; long num1,y=0,num2,num3,j=0,sum1=0,sum2=0,sum3=0; while(1) { for(i=0;i<15648;i++) { if(i%24 == 0) { ADCProcessorTrigger(ADC0_BASE, 3); while(!ADCIntStatus(ADC0_BASE, 3, false)) { } ADCIntClear(ADC0_BASE, 3); ADCSequenceDataGet(ADC0_BASE, 3, temp); x[i/24]=temp[0]; } } num1=0; num2=0; num3=0; n1=_IQ17(0); n2=_IQ17(0); n3=_IQ17(0); for(k=0;k<652;k++) { l1= _IQ17(b1[k]); l2= _IQ17(b2[k]); l3= _IQ17(b3[k]); m= _IQ17(x[651-k]); n1=n1 + _IQ17mpy(l1,m); n2=n2 + _IQ17mpy(l2,m); n3=n3 + _IQ17mpy(l3,m); } num1=_IQ17int(n1); num2=_IQ17int(n2); num3=_IQ17int(n3); sum1+=num1*num1; sum2+=num2*num2; sum3+=num3*num3; j++; if(j==15) { sum1=sum1/500; sum2=sum2/500; sum3=sum3/500; r1=isqrt(sum1); r2=isqrt(sum2); r3=isqrt(sum3); sum1=sum2=0; j=0; } r01=r1*r1*r1; r02=r2*r2*r2; r03=r3*r3*r3; if(r01>0) { TimerConfigure(TIMER0_BASE, TIMER_CFG_16_BIT_PAIR | TIMER_CFG_A_PWM); pwm1(256-r01); } else { TimerConfigure(TIMER0_BASE, TIMER_CFG_16_BIT_PAIR | TIMER_CFG_A_PERIODIC); } if(r02>0) { TimerConfigure(TIMER1_BASE, TIMER_CFG_16_BIT_PAIR | TIMER_CFG_A_PWM); pwm2(256-r02); } else { TimerConfigure(TIMER1_BASE, TIMER_CFG_16_BIT_PAIR | TIMER_CFG_A_PERIODIC); } if(r03>0) { TimerConfigure(TIMER2_BASE, TIMER_CFG_16_BIT_PAIR | TIMER_CFG_B_PWM); pwm3(256-r03); } else { TimerConfigure(TIMER2_BASE, TIMER_CFG_16_BIT_PAIR | TIMER_CFG_B_PERIODIC); } } }