X-Git-Url: https://rtime.felk.cvut.cz/gitweb/mf624-simulink.git/blobdiff_plain/ec8724249fe0534577a38c2ae001adcdbcea3bb7..bf9c74d741d78bacd3feb2db975a59e8cf14d2a0:/mf624_SIMULINK.h diff --git a/mf624_SIMULINK.h b/mf624_SIMULINK.h index 55e5f34..5c57b1d 100644 --- a/mf624_SIMULINK.h +++ b/mf624_SIMULINK.h @@ -5,6 +5,7 @@ #include // uintX_t #include +#include "simstruc.h" /* Hardware specific */ /* BAR0 */ @@ -46,6 +47,67 @@ #define CTR4 0x44 #define CTRXCTRL 0x60 +#define IRCSTATUS_reg 0x6C +#define IRCCTRL_reg 0x6C +#define IRC0_reg 0x70 +#define IRC1_reg 0x74 +#define IRC2_reg 0x78 +#define IRC3_reg 0x7C + +#define IRCCTRL_IRC0MODE_mask 0x00000003 +#define IRCCTRL_IRC0COUNT_mask 0x0000000C +#define IRCCTRL_IRC0RESET_mask 0x00000070 +#define IRCCTRL_IRC0FILTER_mask 0x00000080 + +#define IRCCTRL_IRC1MODE_mask 0x00000300 +#define IRCCTRL_IRC1COUNT_mask 0x00000C00 +#define IRCCTRL_IRC1RESET_mask 0x00007000 +#define IRCCTRL_IRC1FILTER_mask 0x00008000 + +#define IRCCTRL_IRC2MODE_mask 0x00030000 +#define IRCCTRL_IRC2COUNT_mask 0x000C0000 +#define IRCCTRL_IRC2RESET_mask 0x00700000 +#define IRCCTRL_IRC2FILTER_mask 0x00800000 + +#define IRCCTRL_IRC3MODE_mask 0x03000000 +#define IRCCTRL_IRC3COUNT_mask 0x0C000000 +#define IRCCTRL_IRC3RESET_mask 0x70000000 +#define IRCCTRL_IRC3FILTER_mask 0x80000000 + +#define IRCCTRL_CHANNEL_SHIFT 8 + +#define IRCCTRL_MODE_mask(ch) (0x03<<((ch)*IRCCTRL_CHANNEL_SHIFT)) +#define IRCCTRL_COUNT_mask(ch) (0x0C<<((ch)*IRCCTRL_CHANNEL_SHIFT)) +#define IRCCTRL_RESET_mask(ch) (0x70<<((ch)*IRCCTRL_CHANNEL_SHIFT)) +#define IRCCTRL_FILTER_mask(ch) (0x80<<((ch)*IRCCTRL_CHANNEL_SHIFT)) + +#define IRCCTRL_MODE_IRC 0 +#define IRCCTRL_MODE_BIDIR_RE 1 +#define IRCCTRL_MODE_BIDIR_FE 2 +#define IRCCTRL_MODE_BIDIR_BOTH 3 + +#define IRCCTRL_COUNT_ENABLED 0 +#define IRCCTRL_COUNT_DISABLED 1 +#define IRCCTRL_COUNT_IF_IDX_LO 2 +#define IRCCTRL_COUNT_IF_IDX_HI 3 + +#define IRCCTRL_RESET_DISABLED 0 +#define IRCCTRL_RESET_ALWAYS 1 +#define IRCCTRL_RESET_IF_IDX_LO 2 +#define IRCCTRL_RESET_IF_IDX_HI 3 +#define IRCCTRL_RESET_IF_IDX_RE 4 +#define IRCCTRL_RESET_IF_IDX_FE 5 +#define IRCCTRL_RESET_IF_IDX_BOTH 6 + +#define IRCSTATUS_IRC0INDEX_mask 0x00000001 +#define IRCSTATUS_IRC1INDEX_mask 0x00000100 +#define IRCSTATUS_IRC2INDEX_mask 0x00000100 +#define IRCSTATUS_IRC3INDEX_mask 0x00000100 + +#define IRCSTATUS_CHANNEL_SHIFT 8 + +#define IRCSTATUS_INDEX_mask(ch) (0x01<<((ch)*IRCSTATUS_CHANNEL_SHIFT)) + #define GPIOC_DACEN_mask (1 << 26) #define GPIOC_LDAC_mask (1 << 23) #define GPIOC_EOLC_mask (1 << 17) @@ -103,8 +165,6 @@ static uint32_t adc_channel2reg[] = { [AD7] = ADDATA7_reg, }; -extern void print_8bin(int nr); - static inline int16_t mf624_read16(void *ptr) { return *(volatile uint16_t*)ptr; @@ -137,18 +197,8 @@ extern int ADC_enable(mf624_state_t* mfst, adc_channel_t channel); extern double ADC_read(mf624_state_t* mfst, adc_channel_t channel); -extern int open_device(char* path); - -extern void wait_for_interrupts(int device_fd); - -extern int disable_interrupts(int device_fd); - -extern int enable_interrupts(int device_fd); - -extern void list_available_mem_regions(char* device); - -extern void list_available_io_ports(char *device); - -extern int mmap_regions(mf624_state_t* mfst); +int mf624_init(SimStruct *S); +int mf624_check(SimStruct *S); +int mf624_done(); #endif