int main (void) { char *cp; uint16_t m, n, s; uint16_t t1,t2,t3; DDRE = 0b00000010; /* PE1:<conout>, PE0:<conin> in N81 38.4kbps */ TCCR1B = 3; /* clk/64 */ xmitstr(PSTR("\r\nFFT sample program\r\n")); for(;;) { xmitstr(PSTR("\r\n>")); /* Prompt */ rcvrstr(pool, sizeof(pool)); /* Console input */ cp = pool; switch (*cp++) { /* Pick a header char (command) */ case '\0' : /* Blank line */ break; case 'w' : /* w: show waveform */ capture_wave(capture, FFT_N); for (n = 0; n < FFT_N; n++) { s = capture[n]; xmitf(PSTR("\r\n%4u:%6d "), n, s); s = (s + 32768) / 1024; for (m = 0; m < s; m++) xmit(' '); xmit('*'); } break; case 's' : /* s: show spectrum */ capture_wave(capture, FFT_N); TCNT1 = 0; /* performance counter */ fft_input(capture, bfly_buff); t1 = TCNT1; TCNT1 = 0; fft_execute(bfly_buff); t2 = TCNT1; TCNT1 = 0; fft_output(bfly_buff, spektrum); t3 = TCNT1; for (n = 0; n < FFT_N / 2; n++) { s = spektrum[n]; xmitf(PSTR("\r\n%4u:%5u "), n, s); s /= 512; for (m = 0; m < s; m++) xmit('*'); } xmitf(PSTR("\r\ninput=%u, execute=%u, output=%u (x64clk)"), t1,t2,t3); break; default : /* Unknown command */ xmitstr(PSTR("\n???")); } } }
int main (void) { initTimer(); initLeds(); loggerInit(); loggerWriteToMarker((LogMesT)"\r\nFFT sample program\r\n*", '*'); loggerWriteToMarker((LogMesT)"\r\n>*", '*'); /* Prompt */ for(;;) { capture_wave(capture, FFT_N); fft_input(capture, bfly_buff); fft_execute(bfly_buff); fft_output(bfly_buff, spektrum); _delay_ms(50); } }