Plik podprogramu analizatora. More...
#include <avr/io.h>#include <avr/pgmspace.h>#include <avr/interrupt.h>#include "ADC.h"#include "Keyboard.h"#include "lcd132x64.h"#include "Grafika.h"Macros | |
| #define | USE_ANALIZATOR_MODULE |
| #define | Np 1024 |
Functions | |
| static uint16_t | reverse (uint16_t n, uint8_t v) |
| Funkcja odwracajaca lewo-prawostronnie bity. | |
| uint8_t | log2_u32 (uint32_t n) |
| Funkcja liczaca logarytm o podstawie 2 dla liczb 32-bitowych. | |
| uint8_t | log2_u16 (uint16_t n) |
| Funkcja liczaca logarytm o podstawie 2 dla liczb 16-bitowych. | |
| void | FFT2N (int16_t *xwsk, int16_t *tmp_w) |
| Funkcja liczaca 512-punktowe Real-FFT. | |
| void | Analizator (void) |
| Funkcja liczaca 128-punktowe Real-FFT. | |
Variables | |
| int16_t | kan1_in [512] |
| int16_t | kan2_in [512] |
| uint8_t | kan1_lcd [128] |
| Bufor przechowujacy probki danych kanalu 1 do wyswietlenia na lcd. | |
| const uint8_t Gain_tab[10] | PROGMEM |
| Tablica dzielnikow dla wyboru podstawy czasu. | |
| static uint8_t | Vdiv = 0 |
| static uint8_t | Sdiv = 7 |
| uint16_t | Xpos = 0 |
| uint8_t | Ypos = 0 |
| uint8_t | Zoom = 1 |
| uint16_t | Cursor = 70 |
Plik podprogramu analizatora.
| #define Np 1024 |
liczba probek wejsciowych FFT
| #define USE_ANALIZATOR_MODULE |
Uzyj tego podprogramu
| void Analizator | ( | void | ) |
Funkcja liczaca 128-punktowe Real-FFT.
Rzeczywista szybka transformata Fouriera. Sygnal zostaje rozdzielony na probki parzyste, ktore traktowane sa jako rzeczywiste i nieparzyste, ktore zostaja zapisane do czesci urojonej. Nastepnie zostaje obliczona zespolona transformata Fouriera oraz zostaja rozdzielone widma wejsciowych probek parzystych i nieparzystych. Na koncu nastepuje synteza tych widm tworzac jedno 128 punktowe.
| *xwsk | inout: wskaznik do bufora 256 wejsciowych probek 16-bitowych, 128 probek wyjsciowych bufor wykorzystuje dodatkowo 128 probek pomocniczych, calkowita dlugosc bufora wynosi 384 probki 16-bitowe |
| void FFT2N | ( | int16_t * | xwsk, |
| int16_t * | tmp_w | ||
| ) |
Funkcja liczaca 512-punktowe Real-FFT.
Rzeczywista szybka transformata Fouriera. Sygnal zostaje rozdzielony na probki parzyste, ktore traktowane sa jako rzeczywiste i nieparzyste, ktore zostaja zapisane do czesci urojonej. Nastepnie zostaje obliczona zespolona transformata Fouriera oraz zostaja rozdzielone widma wejsciowych probek parzystych i nieparzystych. Na koncu nastepuje synteza tych widm tworzac jedno 512 punktowe.
| *xwsk | inout: wskaznik do bufora 1024 wejsciowych probek 16-bitowych, 512 probek wyjsciowych |
| *tmp_w | : adres bufora pomocniczego 64 probek 16-bitowych |
| uint8_t log2_u16 | ( | uint16_t | n | ) |
Funkcja liczaca logarytm o podstawie 2 dla liczb 16-bitowych.
Wartosc wyjsciowa wyrazona jest wzorem: 4*log2(n). Wartosci wynikowe pomiedzy wielokrotnosciami 4 sa podawane z przyblizeniem.
| n | : zmienna wejsciowa |
| uint8_t log2_u32 | ( | uint32_t | n | ) |
Funkcja liczaca logarytm o podstawie 2 dla liczb 32-bitowych.
Wartosc wyjsciowa wyrazona jest wzorem: 4*log2(n). Wartosci wynikowe pomiedzy wielokrotnosciami 4 sa podawane z przyblizeniem.
| n | : zmienna wejsciowa |
|
inlinestatic |
Funkcja odwracajaca lewo-prawostronnie bity.
| n | : zmienna wejsciowa |
| v | : liczba bitow do odwrocenia z zakresu 1-15 |
| uint16_t Cursor = 70 |
kursor czestotliwosci
| int16_t kan1_in[512] |
Bufor kanalu 1
| uint8_t kan1_lcd | ( | ) |
Bufor przechowujacy probki danych kanalu 1 do wyswietlenia na lcd.
Bufor oscylogramu 1
| int16_t kan2_in[512] |
Bufor kanalu 2
| const int16_t sin_tab [640] PROGMEM |
Tablica dzielnikow dla wyboru podstawy czasu.
Tablica dzielnikow dla wyboru podstawy czasu.
Tablica funkcji sin [0, 2.5PI].
Napisy menu ustawień
Napisy z predkosciami UART hektoPredkosci UART (Wojciech Meler)
|
static |
podstawa czasu
|
static |
wzmocnienie
| uint16_t Xpos = 0 |
przesuwanie w poziomie
| uint8_t Ypos = 0 |
przesuwanie w pionie
| uint8_t Zoom = 1 |
zoom sygnalu (do implementacji)
1.8.1.2