/* * File: fixed01.c * Author: kubalik * * Created on 21. unora 2023 * * * POYOR !!! File se NESMI jsenovat stejne !!!!!! * */ #include "p33EV32GM002.h" #pragma config FNOSC = FRC // pracujeme s FRC oscilatorem 7.37MHz #pragma config OSCIOFNC = ON //OSC2 is general purpose digital I/O pin #pragma config IOL1WAY = ON //Allow Only One reconfiguration pro PPS #pragma config FWDTEN = OFF // WDT and SWDTEN Disabled Watchdog vypnut // tohle chci pouzit take v assemblerovske casti // proto je to globalni #define KONECFILTR 5 const unsigned int konfilt = KONECFILTR ; // abych dostal tuhle konstantu do asm podprogramu const signed _Fract filter[KONECFILTR+1] = { -0.125, 0.250, 0.125, -0.5, -0.75, 0.125 } ; unsigned int delkafiltru = KONECFILTR ; // o 1 mene nez je skutecna delka, ale pro pouyiti pomoci repeat se to tak hodi signed _Fract hodnoty[KONECFILTR+1] __attribute__ ((space(ymemory))) ; // tohle bude ulozeno v Y space memory void pokus(void) ; signed int filtrujeme(void) ; int filt( _Fract vstup) ; void main() { signed _Fract a , b ; unsigned _Fract c ; float d, e, f; int g,h,i; for (i=0;i<=KONECFILTR;i++) hodnoty[i] = 0 ; d = 0.25 ; // sem si dejte breakpoint CORCONbits.SATA = 1 ; // zapiname saturaci pro akumulator A CORCONbits.US = 0 ; // nasobeni je signed CORCONbits.IF = 0 ; // format fractional CORCONbits.SATDW = 1 ; // automaticka saturace při zapisu z akumulatoru do pameti nebo registru pokus() ; // sufix r znamena, ye cislo je fractional ur unsigned fractional hodnoty[0] = -0.12r ; hodnoty[1] = 0.25r ; hodnoty[2] = 0.5r ; hodnoty[3] = 0.125r ; hodnoty[4] = 0.2r ; hodnoty[5] = 0.1r ; i = filtrujeme() ; for (i=0;i<=KONECFILTR;i++) hodnoty[i] = 0 ; i++ ; i = filt( 0.1r ); i = filt( 0.2r ); i = filt( 0.125r ); i = filt( 0.5r ); i = filt( 0.25r ); i = filt( -0.12r ); // a tady do pole hodnoty postupne nalezla vsechna cisla jako nahore, takze to musi dodat stejny vysledek jako filtrujeme predtim // no a pokracujeme i = filt( 0.5r ); i = filt( 0.25r ); i = filt( 0.125r ); i = filt( 0.0r ); while(1) { // sem napiseme to, co se v programu dela porad dokolecka h++ ; } }