1 | /* |
2 | * File: untitled.c |
3 | * |
4 | * Code generated for Simulink model 'untitled'. |
5 | * |
6 | * Model version : 1.0 |
7 | * Simulink Coder version : 8.12 (R2017a) 16-Feb-2017 |
8 | * C/C++ source code generated on : Thu Mar 14 11:23:20 2019 |
9 | * |
10 | * Target selection: ert.tlc |
11 | * Embedded hardware selection: Atmel->AVR |
12 | * Code generation objectives: Unspecified |
13 | * Validation result: Not run |
14 | */ |
15 | |
16 | #include "untitled.h" |
17 | #include "untitled_private.h" |
18 | #include "untitled_dt.h" |
19 | |
20 | /* Block signals (auto storage) */ |
21 | B_untitled_T untitled_B; |
22 | |
23 | /* Block states (auto storage) */ |
24 | DW_untitled_T untitled_DW; |
25 | |
26 | /* Real-time model */ |
27 | RT_MODEL_untitled_T untitled_M_; |
28 | RT_MODEL_untitled_T *const untitled_M = &untitled_M_; |
29 | real_T rt_powd_snf(real_T u0, real_T u1) |
30 | { |
31 | real_T y; |
32 | real_T tmp; |
33 | real_T tmp_0; |
34 | if (rtIsNaN(u0) || rtIsNaN(u1)) { |
35 | y = (rtNaN); |
36 | } else { |
37 | tmp = fabs(u0); |
38 | tmp_0 = fabs(u1); |
39 | if (rtIsInf(u1)) { |
40 | if (tmp == 1.0) { |
41 | y = 1.0; |
42 | } else if (tmp > 1.0) { |
43 | if (u1 > 0.0) { |
44 | y = (rtInf); |
45 | } else { |
46 | y = 0.0; |
47 | } |
48 | } else if (u1 > 0.0) { |
49 | y = 0.0; |
50 | } else { |
51 | y = (rtInf); |
52 | } |
53 | } else if (tmp_0 == 0.0) { |
54 | y = 1.0; |
55 | } else if (tmp_0 == 1.0) { |
56 | if (u1 > 0.0) { |
57 | y = u0; |
58 | } else { |
59 | y = 1.0 / u0; |
60 | } |
61 | } else if (u1 == 2.0) { |
62 | y = u0 * u0; |
63 | } else if ((u1 == 0.5) && (u0 >= 0.0)) { |
64 | y = sqrt(u0); |
65 | } else if ((u0 < 0.0) && (u1 > floor(u1))) { |
66 | y = (rtNaN); |
67 | } else { |
68 | y = pow(u0, u1); |
69 | } |
70 | } |
71 | |
72 | return y; |
73 | } |
74 | |
75 | /* Model step function */ |
76 | void untitled_step(void) |
77 | { |
78 | uint16_T rtb_AnalogInput_0; |
79 | |
80 | /* S-Function (arduinoanaloginput_sfcn): '<Root>/Analog Input' */ |
81 | rtb_AnalogInput_0 = MW_analogRead(untitled_P.AnalogInput_p1); |
82 | |
83 | /* MATLAB Function: '<Root>/MATLAB Function' incorporates: |
84 | * DataTypeConversion: '<Root>/Data Type Conversion' |
85 | * S-Function (arduinoanaloginput_sfcn): '<Root>/Analog Input' |
86 | */ |
87 | /* MATLAB Function 'MATLAB Function': '<S1>:1' */ |
88 | /* '<S1>:1:3' u=(12343.73*u^(-1.15)) */ |
89 | /* '<S1>:1:5' y = u; */ |
90 | untitled_B.y = 12343.73 * rt_powd_snf((real_T)rtb_AnalogInput_0, -1.15); |
91 | |
92 | /* External mode */ |
93 | rtExtModeUploadCheckTrigger(1); |
94 | |
95 | { /* Sample time: [0.1s, 0.0s] */ |
96 | rtExtModeUpload(0, untitled_M->Timing.taskTime0); |
97 | } |
98 | |
99 | /* signal main to stop simulation */ |
100 | { /* Sample time: [0.1s, 0.0s] */ |
101 | if ((rtmGetTFinal(untitled_M)!=-1) && |
102 | !((rtmGetTFinal(untitled_M)-untitled_M->Timing.taskTime0) > |
103 | untitled_M->Timing.taskTime0 * (DBL_EPSILON))) { |
104 | rtmSetErrorStatus(untitled_M, "Simulation finished"); |
105 | } |
106 | |
107 | if (rtmGetStopRequested(untitled_M)) { |
108 | rtmSetErrorStatus(untitled_M, "Simulation finished"); |
109 | } |
110 | } |
111 | |
112 | /* Update absolute time for base rate */ |
113 | /* The "clockTick0" counts the number of times the code of this task has |
114 | * been executed. The absolute time is the multiplication of "clockTick0" |
115 | * and "Timing.stepSize0". Size of "clockTick0" ensures timer will not |
116 | * overflow during the application lifespan selected. |
117 | */ |
118 | untitled_M->Timing.taskTime0 = |
119 | (++untitled_M->Timing.clockTick0) * untitled_M->Timing.stepSize0; |
120 | } |
121 | |
122 | /* Model initialize function */ |
123 | void untitled_initialize(void) |
124 | { |
125 | /* Registration code */ |
126 | |
127 | /* initialize non-finites */ |
128 | rt_InitInfAndNaN(sizeof(real_T)); |
129 | |
130 | /* initialize real-time model */ |
131 | (void) memset((void *)untitled_M, 0, |
132 | sizeof(RT_MODEL_untitled_T)); |
133 | rtmSetTFinal(untitled_M, -1); |
134 | untitled_M->Timing.stepSize0 = 0.1; |
135 | |
136 | /* External mode info */ |
137 | untitled_M->Sizes.checksums[0] = (2889579142U); |
138 | untitled_M->Sizes.checksums[1] = (568558653U); |
139 | untitled_M->Sizes.checksums[2] = (608470079U); |
140 | untitled_M->Sizes.checksums[3] = (3481721468U); |
141 | |
142 | { |
143 | static const sysRanDType rtAlwaysEnabled = SUBSYS_RAN_BC_ENABLE; |
144 | static RTWExtModeInfo rt_ExtModeInfo; |
145 | static const sysRanDType *systemRan[2]; |
146 | untitled_M->extModeInfo = (&rt_ExtModeInfo); |
147 | rteiSetSubSystemActiveVectorAddresses(&rt_ExtModeInfo, systemRan); |
148 | systemRan[0] = &rtAlwaysEnabled; |
149 | systemRan[1] = &rtAlwaysEnabled; |
150 | rteiSetModelMappingInfoPtr(untitled_M->extModeInfo, |
151 | &untitled_M->SpecialInfo.mappingInfo); |
152 | rteiSetChecksumsPtr(untitled_M->extModeInfo, untitled_M->Sizes.checksums); |
153 | rteiSetTPtr(untitled_M->extModeInfo, rtmGetTPtr(untitled_M)); |
154 | } |
155 | |
156 | /* block I/O */ |
157 | (void) memset(((void *) &untitled_B), 0, |
158 | sizeof(B_untitled_T)); |
159 | |
160 | /* states (dwork) */ |
161 | (void) memset((void *)&untitled_DW, 0, |
162 | sizeof(DW_untitled_T)); |
163 | |
164 | /* data type transition information */ |
165 | { |
166 | static DataTypeTransInfo dtInfo; |
167 | (void) memset((char_T *) &dtInfo, 0, |
168 | sizeof(dtInfo)); |
169 | untitled_M->SpecialInfo.mappingInfo = (&dtInfo); |
170 | dtInfo.numDataTypes = 14; |
171 | dtInfo.dataTypeSizes = &rtDataTypeSizes[0]; |
172 | dtInfo.dataTypeNames = &rtDataTypeNames[0]; |
173 | |
174 | /* Block I/O transition table */ |
175 | dtInfo.BTransTable = &rtBTransTable; |
176 | |
177 | /* Parameters transition table */ |
178 | dtInfo.PTransTable = &rtPTransTable; |
179 | } |
180 | |
181 | /* Start for S-Function (arduinoanaloginput_sfcn): '<Root>/Analog Input' */ |
182 | MW_pinModeAnalogInput(untitled_P.AnalogInput_p1); |
183 | } |
184 | |
185 | /* Model terminate function */ |
186 | void untitled_terminate(void) |
187 | { |
188 | /* (no terminate code required) */ |
189 | } |
190 | |
191 | /* |
192 | * File trailer for generated code. |
193 | * |
194 | * [EOF] |
195 | */ |
196 | |