Plik podprogramu generatora. More...
#include <avr/io.h>#include <util/delay.h>#include <avr/pgmspace.h>#include <avr/eeprom.h>#include "DAC.h"#include "ADC.h"#include "Keyboard.h"#include "lcd132x64.h"#include "Grafika.h"Macros | |
| #define | USE_GENERATOR_MODULE |
| #define | F_clk 3200000000 |
| #define | F_max 50000000 |
Functions | |
| static void | WhiteNoiseGen (uint16_t gain) |
| Funkcja generujaca szum bialy. | |
| static void | PinkNoiseGen3 (uint16_t gain) |
| Funkcja generujaca szum rozowy. | |
| void | EepromTabRead (uint8_t *wsk, uint8_t *e_wsk) |
| Funkcja odczytujaca sygnal z pamieci EEPROM. | |
| void | EepromTabWrite (uint8_t *e_wsk, uint8_t *wsk) |
| Funkcja zapisujaca sygnal do pamieci EEPROM. | |
| void | GenSetParam (uint16_t per, uint16_t tab, uint16_t gain, uint16_t duty, int16_t dc_shift, uint8_t type) |
| Funkcja ustawiajaca parametry generatora sygnalu (synteza) | |
| uint32_t | shiftStep (uint8_t step) |
| Funkcja zwracajaca potege liczby 10. | |
| void | Generator (void) |
| Funkcja glowna podprogramu generatora. | |
Variables | |
| uint16_t | kan_out [512] |
| uint8_t | kan1_lcd [128] |
| EEMEM uint8_t | e_kan_out [768] |
| const char mod_tab[3][3] | PROGMEM = {"FM", "AM", "SW"} |
| Tablice napisow. | |
| uint32_t | Freq = 100806 |
| uint16_t | Gain = 12500 |
| uint8_t | Duty = 50 |
| uint8_t | Type = 0 |
| int16_t | Dc_shift = 0 |
| uint32_t | per_c = 62 |
| uint32_t | tab_c = 512 |
| static uint8_t | Deep = 64 |
Plik podprogramu generatora.
| #define F_clk 3200000000 |
czestotliwosc taktowania timera x100 (rozdzielczosc 1/100Hz)
| #define F_max 50000000 |
maksymalna wyjsciowa czestotliowsc x100 (0.5MHz)
| #define USE_GENERATOR_MODULE |
Uzyj tego podprogramu
| void EepromTabRead | ( | uint8_t * | wsk, |
| uint8_t * | e_wsk | ||
| ) |
Funkcja odczytujaca sygnal z pamieci EEPROM.
| *wsk | : wkaznik adresu bufora docelowego |
| *e_wsk | : wkaznik adresu bufora w pamieci EEPROM |
| void EepromTabWrite | ( | uint8_t * | e_wsk, |
| uint8_t * | wsk | ||
| ) |
Funkcja zapisujaca sygnal do pamieci EEPROM.
| *e_wsk | : wkaznik adresu bufora w pamieci EEPROM |
| *wsk | : wkaznik adresu bufora wejsciowego |
| void Generator | ( | void | ) |
Funkcja glowna podprogramu generatora.
| void GenSetParam | ( | uint16_t | per, |
| uint16_t | tab, | ||
| uint16_t | gain, | ||
| uint16_t | duty, | ||
| int16_t | dc_shift, | ||
| uint8_t | type | ||
| ) |
Funkcja ustawiajaca parametry generatora sygnalu (synteza)
| per | : period - okres probkowania w (1/32M)s (okres timera taktowanego 32MHz) (32 - 65535) |
| tab | : table - dlugosc bufora sygnalu |
| gain | : wzmocnienie sygnalu (0 - 2047, do 10000 z przesterowaniem) |
| duty | : wypelnienie (symetria) sygnalu (prostokat, trojkat) (1 - 99) |
| dc_shift | : przesunienie (skladowa stala) sygnalu (-2000 - 2000) |
| type | : typ sygnalu: 0 - sin, 1 - prost., 2 - trojkat, 3 - szum b., 4 - szum r., 5 - arb., 6 - brak |
|
inlinestatic |
Funkcja generujaca szum rozowy.
Do generacji szumu rozowego (o rozkladzie normalnym) wykorzystano algorytm Vossa-McCartneya. Kod napisany w asemblerze, na podstawie kodu uzytkownika shg http://www.elektroda.pl/rtvforum/topic155498.html W komentarzu funkcjonalnie rownowazny kod w C.
| gain | : wzmocnienie (amplituda) sygnalu |
| uint32_t shiftStep | ( | uint8_t | step | ) |
Funkcja zwracajaca potege liczby 10.
Wartosc zwracana wyraza sie wzorem: 10^(8 - step) dla 0 < step < 9 0 dla pozostalych
| step | : wykladnik potegi |
|
inlinestatic |
Funkcja generujaca szum bialy.
Do generacji szumu bialego (o rozkladzie rownomniernym) wykorzystano algorytm LFSR. Kod napisany w asemblerze, w komentarzu funkcjonalnie rownowazny kod w C.
| gain | : wzmocnienie (amplituda) sygnalu |
| const int16_t sin_tab [640] PROGMEM = {"FM", "AM", "SW"} |
Tablice napisow.
Tablica dzielnikow dla wyboru podstawy czasu.
Tablica funkcji sin [0, 2.5PI].
1.8.1.2