#include // standard integer types #include #include #include #include #include #include "uart2.h" int servo, drat, vystup, hodnota, rychlost_imp, rychlost,xtalPresc, poloha; // ============================= DEFINE =========================== #define SETBIT(ADDRESS,BIT) ((ADDRESS) |= (1<<(BIT))) // nastaví bit #define CLRBIT(ADDRESS,BIT) ((ADDRESS) &= ~(1<<(BIT))) // nuluje bit //#define NEGBIT(ADDRESS,BIT) ((ADDRESS) ^= (1<<(BIT))) // neguje bit //#define TSTBIT(ADDRESS,BIT) ((ADDRESS) & (1<<(BIT))) // testuje bit int *PUTPT; // Pointer of where to put next int Fifo[20]; // The statically allocated fifo data, vkladam tam 20 hodnot // ========================= INIT FIFO ============================ void init_fifo(void) { PUTPT=&Fifo[0]; } void PutFifo (int data) { int *Ppt; /* Temporary put pointer */ Ppt=PUTPT; /* Copy of put pointer */ *(Ppt++)=data; /* Try to put data into fifo */ if (Ppt == &Fifo[20]) Ppt = &Fifo[0]; /* Wrap */ PUTPT=Ppt; } // ========================== PROG================================ int main(void) //ggg { int prum; init_fifo(); for(int i=0;i<19;i++) { // vkladam do fifo 19 hodnot z prevodniku PutFifo(read_ADC1()); _delay_ms(50); } while(1) // nekonecna smycka aby tam neukladal pokazde 20 a vyhodil jeden prumer, ale po tech prvnich 20 uz vyjde s kazdou dalsi vstupni hodnotou novy prumer { PutFifo(read_ADC1()); // nacteni dvacate (posledni) hodnoty for(int i=0;i<20;i++) sumna=+Fifo[i]; //vypocteni prumeru prum=suma/20; PWM1(prum); // odeslani vysledku na pwm _delay_ms(250); } }