void USART_Init( unsigned int baud );
void USART_Transmit( unsigned char data );
void TransmitStr(const char *data );
void TransmitStrP(PGM_P p );
void TransmitNm(uint8_t* p,uint8_t bytes);
void VypnoutVse_Init(void);
void ZMustek_Init(void);   //na vyzkouseni mustku
void PWM_InA_B_Init();     //inicializace mustku typu: PWM InA InB
void ADC_Init10b();

volatile uint16_t cas_tmr=0;//,cas_tmr2=0;		//ISR TIMER0 pocet preruseni
uint16_t cpu;
uint8_t toc,tic;
#define TIC tic=TCNT0
#define TOC toc=TCNT0-tic

uint8_t maxvykon=50;
uint16_t prescRegulace=0,prescOdesilat=0;
uint16_t tmrRegulace=0,tmrOdesilat=0;
uint8_t Vstop=1;

#define ADVSTUPU 6
uint16_t AD[ADVSTUPU];
volatile int16_t enkoder=5;

struct{
	uint8_t merit;
	uint8_t filtr;
	uint8_t regulovat;
	uint8_t vystup;
	uint8_t odesilat;
	} povoleno={0,0,0,0,0};  //stav pro (ne)spusteni v hlavni smycce


enum {TERMINAL,MATLAB};
uint8_t Vuzivatel=TERMINAL;		//uklada zpusob komunikace
#define VZORKOVANI 100
uint16_t Vvzorkovani=VZORKOVANI;	//vzorkovani nekonecne smycky 1~1ms
//při komunikaci s igorUsb Vvzorkovani 5 jede, mensi uz ne

//stavove promene______________________________________
double y=0,w=0.5,e=0,vvv=1.5,dt=VZORKOVANI/1000;
double akce=0,akce2=0,Vder=0,Vitg=0,Vprp=0,VI=0,maxVI=0,pomerVI=1;
int16_t Vpwm=50;

//kalman
double K1=1,K2=1,r=3;
double y2=2;

	//generování signálu
	double gh=0.7,gd=0.3,gv=0;  //generování signálu: gh=horní mez, gd=dolní mez, gv=vystup
	uint16_t gtmr=0,gp=10;  //generování signálu: gtmr=timer, gp=perioda
	#define DOLU 0
	#define NAHORU 1
	uint8_t gsmer=DOLU;


//_______________________________________________________
#ifdef __AVR_ATmega168__
#include "init168.c"
#else
#include "init.c"
#endif
