Minikombajn Pomiarowy  20
 All Files Functions Variables Macros
Macros | Functions | Variables
Generator.c File Reference

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

Detailed Description

Plik podprogramu generatora.

Author
Arkadiusz Hudzikowski
Version
1.5
Date
16.01.2013

Macro Definition Documentation

#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

Function Documentation

void EepromTabRead ( uint8_t *  wsk,
uint8_t *  e_wsk 
)

Funkcja odczytujaca sygnal z pamieci EEPROM.

Parameters
*wsk: wkaznik adresu bufora docelowego
*e_wsk: wkaznik adresu bufora w pamieci EEPROM
Returns
none
void EepromTabWrite ( uint8_t *  e_wsk,
uint8_t *  wsk 
)

Funkcja zapisujaca sygnal do pamieci EEPROM.

Parameters
*e_wsk: wkaznik adresu bufora w pamieci EEPROM
*wsk: wkaznik adresu bufora wejsciowego
Returns
none
void Generator ( void  )

Funkcja glowna podprogramu generatora.

Returns
none
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)

Parameters
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
Returns
none
static void PinkNoiseGen3 ( uint16_t  gain)
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.

Parameters
gain: wzmocnienie (amplituda) sygnalu
Returns
none
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

Parameters
step: wykladnik potegi
Returns
potega liczby 10
static void WhiteNoiseGen ( uint16_t  gain)
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.

Parameters
gain: wzmocnienie (amplituda) sygnalu
Returns
none

Variable Documentation

const int16_t sin_tab [640] PROGMEM = {"FM", "AM", "SW"}

Tablice napisow.

Tablica dzielnikow dla wyboru podstawy czasu.

Tablica funkcji sin [0, 2.5PI].