/* * File: fixed01.c * Author: kubalik * * Created on 23. brezna 2019, 19:43 */ #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 const int pole[6] = { 100,101,102,103,104,105 } ; int __attribute__(( space(ymemory) )) jinepole[5] ; int modulo01(void); void uvod (void) ; /* * */ void main() { int i ; for(i=0;i<5;i++) jinepole[i] = i + 20 ; CORCONbits.SATA = 1 ; // zapinam aritmetiku se saturaci pro ACC. A CORCONbits.SATB = 1 ; CORCONbits.IF = 1 ; // format cisel integer CORCONbits.US = 0 ; // operace budou signed CORCONbits.ACCSAT = 0 ; // supersaturace CORCONbits.SATDW = 1 ; // automaticka saturace pri zapisu do registru // nastavujeme kruhovy buffer /* ; registr MODCON - nastaveni modu adresovani pro prefetches ; 10xx 1111 1111 1000 ; || | | X space reg. - W8 ; || | Y space reg. 0xf disabled ; || bit reverse mode register 0xf disabled ; | Y space modulo enabled ; X space modulo enabled mov #0x8ff8 , W0 mov W0, MODCON ; modulo addressing zapnuto */ XMODSRT = pole ; // zacatek pole zacatek buffru pto modulo adresovani X space XMODEND = &pole[5] ; // konec pole konec bufferu pro modulo adresovani X space YMODSRT = jinepole ; // zacatek pole zacatek buffru pto modulo adresovani Y space YMODEND = &jinepole[4] ; // konec pole konec bufferu pro modulo adresovani Y space MODCONbits.XMODEN = 1 ; // modulo addr pro X space enabled MODCONbits.YMODEN = 1 ; // modulo addr pro Y space enabled MODCONbits.XWM = 8 ; // cislo registru pro X space W8 nebo W9 a zadne jine MODCONbits.YWM = 10 ; // cislo registru pro Y space W10 nebo W11 a zadne jine MODCONbits.BWM = 15 ; // Bit-Reversed Addressing mode is disabled je doufam jasne, ze 15 je 1111 uvod() ; // sem si dejte breakpoint a vlezte pomoci F7 do podprogramu while(1) { // a stale mackame F7 a diname se, co dema modulo01 i = modulo01(); } }