X-Git-Url: http://rtime.felk.cvut.cz/gitweb/mf624-simulink.git/blobdiff_plain/12afa81e332227d6f6f559bbed90ac5e1e03b83b..aae090ddcb04104f83e9c2a1a6f2bd1e7acdd7ee:/mf624_SIMULINK.c diff --git a/mf624_SIMULINK.c b/mf624_SIMULINK.c index ab41f7d..ebd2276 100644 --- a/mf624_SIMULINK.c +++ b/mf624_SIMULINK.c @@ -216,6 +216,16 @@ double ADC_read(mf624_state_t* mfst, adc_channel_t channel) return 10.0 * ((int16_t) (result << 2)) / (double) 0x8000; } +extern uint32_t IRC_mode_change(mf624_state_t* mfst, uint32_t change_mask, uint32_t change_val) +{ + /* This sequence should be protected by mutex to protect changes in multirate systems */ + mfst->IRC_mode = (mfst->IRC_mode & ~change_mask) | (change_val & change_mask); + mf624_write32(mfst->IRC_mode, MFST2REG(mfst, 4, IRCCTRL_reg)); + /*printf("change_mask 0x%08x, change_val 0x%08x\n", change_mask, change_val);*/ + /*printf("IRC mode set to %08lx\n", mfst->IRC_mode);*/ + return mfst->IRC_mode; +} + static int open_device(char* path) { int device_fd; @@ -473,6 +483,8 @@ int mf624_done() mfst = NULL; } } + + return 0; }