X-Git-Url: http://rtime.felk.cvut.cz/gitweb/mf624-simulink.git/blobdiff_plain/3b288601fc048d2410d695f795ac552eab000406..3b0cccde90050d9900f39265b02de90d45f4942d:/sfAnalogOutput.c diff --git a/sfAnalogOutput.c b/sfAnalogOutput.c index 249919f..d6d89a8 100644 --- a/sfAnalogOutput.c +++ b/sfAnalogOutput.c @@ -166,7 +166,7 @@ static void mdlOutputs(SimStruct *S, int_T tid) //mf624_state_t* mfst = ssGetPWorkValue(S,0); int out; - if (mf624_init(S) != 0) + if (mf624_check(S) != 0) return; if(u[0] > 9.9988){ @@ -222,39 +222,15 @@ static void mdlOutputs(SimStruct *S, int_T tid) static void mdlTerminate(SimStruct *S) { //mf624_state_t* mfst = ssGetPWorkValue(S,0); + if (mf624_check(NULL) != 0) + return; + /*At the end of simulation disable D/A outputs*/ - if(mfst != NULL){ - mf624_write32((mf624_read32(MFST2REG(mfst, 0, GPIOC_reg)) - & ~GPIOC_DACEN_mask), // disable output, - MFST2REG(mfst, 0, GPIOC_reg)); - free(mfst); - mfst=NULL; - } else { - mfst = malloc(sizeof(mf624_state_t)); - #define BUFF_SMALL 32 - char buff[BUFF_SMALL]; - memset(buff, '\0', BUFF_SMALL); - mfst->uio_dev = "uio0"; - - strncat(buff, "/dev/", 5); - strncat(buff, mfst->uio_dev, sizeof(buff) - 6); - - mfst->device_fd = open_device(buff); - if (mfst->device_fd < 0) { - ssSetErrorStatus(S,"open failed"); - return; - } - if (mmap_regions(mfst) < 0) { - ssSetErrorStatus(S,"mmap_regions failed"); - return; - } - mf624_write32((mf624_read32(MFST2REG(mfst, 0, GPIOC_reg)) - & ~GPIOC_DACEN_mask), // disable output, - MFST2REG(mfst, 0, GPIOC_reg)); - free(mfst); - mfst=NULL; - } - + mf624_write32((mf624_read32(MFST2REG(mfst, 0, GPIOC_reg)) + & ~GPIOC_DACEN_mask), // disable output, + MFST2REG(mfst, 0, GPIOC_reg)); + + mf624_done(); }