I2C object creation in Simulink

5 views (last 30 days)
im trying to create an i2c object in simulink for reading an sensor. In Matlab every thing works fine and i can read the data out of the sensor :
mpu_6050 = i2c('aardvark',0,hex2dec('68'));
y = fread(mpu_6050,1);
When i try to add an Matlab-Function-Block to Simulink:
function y = mpu6050_read()
mpu_6050 = i2c('aardvark',0,hex2dec('68'));
y = fread(mpu_6050,1,'*char');
i will get this error:
The 'i2c' class does not support code generation.
Is it really not possible to use the i2c class in simulink or do i have to use it in another way?
Regards V.Sadiku
Valmir Sadiku
Valmir Sadiku on 10 May 2013
I want only use the Simulink model only for simulation, that's why i don't understand this error message.

Sign in to comment.

Accepted Answer

Kaustubha Govind
Kaustubha Govind on 10 May 2013
The MATLAB Function block always generates C-code from the MATLAB code for faster execution. If you intend to run the block only for simulation, you can continue to use functions unsupported for code-generation by declaring them as extrinsic functions. I don't think fopen, fwrite, fread and fclose are supposed for code-generation either, so please declare all of them as extrinsic. You will also need to pre-allocate the output of fread, 'y', as described in this previously answered question.
Kaustubha Govind
Kaustubha Govind on 13 May 2013
I would recommend creating a new question for this to make sure other experts see this. I would guess that this is not possible, because coder.extrinsic is meant for execution within the MATLAB environment only. Targets like Real-Time Windows Target create a standalone binary that runs outside the MATLAB environment (in this case, a Real-Time Windows kernel, I believe). The only workaround is to create your own C implementation of that functionality and call it using coder.ceval.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by