0,0 → 1,89 |
#include "main.h" |
|
#define REV "$Rev$" |
|
unsigned int32 time; // pocitadlo preteceni casovace |
|
#define BUFLEN 100 |
|
#int_RTCC |
void RTCC_isr(void) // preruseni od pretekleho casovace |
{ |
time++; |
} |
|
// Includes all USB code and interrupts, as well as the CDC API |
#include <usb_cdc.h> |
#include <math.h> |
|
float quadraticerror(float average, float buf[], int16 size) // compute average quadratic error |
{ |
int16 i; |
float err=0; |
|
for(i=0; i<size; i++) err += (buf[i]-average)*(buf[i]-average); // sum quadratic errors |
err = sqrt((1/(float)size)*err); |
return err; |
} |
|
void main() |
{ |
|
float x[BUFLEN], y[BUFLEN], z[BUFLEN]; |
float xavg, yavg, zavg; |
int i; |
port_b_pullups(FALSE); |
setup_psp(PSP_DISABLED); |
setup_spi(SPI_SS_DISABLED); |
setup_wdt(WDT_OFF); |
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); |
setup_timer_1(T1_DISABLED); |
setup_timer_2(T2_DISABLED,0,1); |
setup_timer_3(T3_DISABLED|T3_DIV_BY_1); |
setup_comparator(NC_NC_NC_NC); |
setup_vref(FALSE); |
enable_interrupts(INT_TIMER0); |
enable_interrupts(GLOBAL); |
|
setup_adc_ports(AN0_TO_AN2|VSS_VREF); |
setup_adc(ADC_CLOCK_DIV_64); |
|
usb_init(); // initialise USB module |
|
while (TRUE) |
{ |
|
while(!usb_cdc_connected()); |
time=0; |
set_timer0(0); |
printf(usb_cdc_putc,"time[s] X Xerr Y Yerr Z Zerr \n\r"); |
|
while(usb_cdc_connected()) // pockej nez se pripoji seriovy port PC |
{ |
for(i=0; i <BUFLEN; i++) |
{ |
set_adc_channel(0); |
delay_us(10); |
x[i]=read_adc(); |
xavg+=x[i]; |
|
set_adc_channel(1); |
delay_us(10); |
y[i]=read_adc(); |
yavg+=y[i]; |
|
set_adc_channel(2); |
delay_us(10); |
z[i]=read_adc(); |
zavg+=z[i]; |
} |
|
xavg=xavg/BUFLEN; |
yavg=yavg/BUFLEN; |
zavg=zavg/BUFLEN; |
|
// odesli namerene hodnoty |
printf(usb_cdc_putc, "%7.3f %4.3f %4.3f %4.3f %4.3f %4.3f %4.3f \n\r",((time << 16) + get_timer0())/15625.0, xavg, quadraticerror(xavg,x,BUFLEN), yavg, quadraticerror(yavg,y,BUFLEN), zavg, quadraticerror(zavg,z,BUFLEN)); //konstanta k je kvuli prevodu do rozzumnych jednotek [s] |
} |
} |
} |