Motor Evaluation Kit
NEVC-MCTRL-100-t01-1.0.0
Firmware for NEVB-MCTRL-100-01 for trapezoidal control of BLDC motors using Hall-effect sensors
Loading...
Searching...
No Matches
fault.cpp
Go to the documentation of this file.
1
/* This file has been prepared for Doxygen automatic documentation generation.*/
22
// Include fault header
23
#include "
fault.h
"
24
32
void
EnableOverCurrentLED
(
void
)
33
{
34
PORTB &= ~((1 <<
FAULT_PIN_3
) | (1 <<
FAULT_PIN_2
));
35
PORTD |= (1 <<
FAULT_PIN_1
);
36
}
37
46
void
EnableMotorStoppedLED
(
void
)
47
{
48
PORTB &= ~(1 <<
FAULT_PIN_3
);
49
PORTB |= (1 <<
FAULT_PIN_2
);
50
PORTD &= ~(1 <<
FAULT_PIN_1
);
51
}
52
61
void
EnableReverseRotationLED
(
void
)
62
{
63
PORTB &= ~(1 <<
FAULT_PIN_3
);
64
PORTB |= (1 <<
FAULT_PIN_2
);
65
PORTD |= (1 <<
FAULT_PIN_1
);
66
}
67
76
void
EnableU3
(
void
)
77
{
78
PORTB |= (1 <<
FAULT_PIN_3
);
79
PORTB &= ~(1 <<
FAULT_PIN_2
);
80
PORTD &= ~(1 <<
FAULT_PIN_1
);
81
}
82
91
void
EnableU2
(
void
)
92
{
93
PORTB |= (1 <<
FAULT_PIN_3
);
94
PORTB &= ~(1 <<
FAULT_PIN_2
);
95
PORTD |= (1 <<
FAULT_PIN_1
);
96
}
97
106
void
EnableU1
(
void
)
107
{
108
PORTB |= (1 <<
FAULT_PIN_3
) | (1 <<
FAULT_PIN_2
);
109
PORTD &= ~(1 <<
FAULT_PIN_1
);
110
}
111
120
void
EnableNoHallConnectionsLED
(
void
)
121
{
122
PORTB |= (1 <<
FAULT_PIN_3
) | (1 <<
FAULT_PIN_2
);
123
PORTD |= (1 <<
FAULT_PIN_1
);
124
}
125
132
void
DisableFaultLEDs
(
void
)
133
{
134
PORTB &= ~((1 <<
FAULT_PIN_3
) | (1 <<
FAULT_PIN_2
));
135
PORTD &= ~(1 <<
FAULT_PIN_1
);
136
}
137
144
void
SweepLEDsBlocking
(
void
)
145
{
146
EnableU3
();
147
_delay_ms(100);
148
149
EnableU2
();
150
_delay_ms(100);
151
152
EnableU1
();
153
_delay_ms(100);
154
155
EnableNoHallConnectionsLED
();
156
_delay_ms(100);
157
158
EnableOverCurrentLED
();
159
_delay_ms(100);
160
161
EnableMotorStoppedLED
();
162
_delay_ms(100);
163
164
EnableReverseRotationLED
();
165
_delay_ms(100);
166
}
167
181
void
faultSequentialStateMachine
(
volatile
faultflags_t
*
faultFlags
,
volatile
motorflags_t
*
motorFlags
)
182
{
183
static
uint8_t state = 1;
184
185
switch
(state)
186
{
187
case
1:
188
if
(
faultFlags
->
motorStopped
==
TRUE
&&
motorFlags
->
enable
==
TRUE
)
189
{
190
EnableMotorStoppedLED
();
191
}
192
else
193
{
194
DisableFaultLEDs
();
195
}
196
state = 2;
197
break
;
198
case
2:
199
if
(
faultFlags
->
reverseDirection
==
TRUE
&&
faultFlags
->
motorStopped
==
FALSE
)
200
{
201
EnableReverseRotationLED
();
202
}
203
else
204
{
205
DisableFaultLEDs
();
206
}
207
state = 3;
208
break
;
209
case
3:
210
if
(
faultFlags
->
noHallConnections
==
TRUE
)
211
{
212
EnableNoHallConnectionsLED
();
213
}
214
else
215
{
216
DisableFaultLEDs
();
217
}
218
state = 4;
219
break
;
220
case
4:
221
if
(
faultFlags
->
overCurrent
==
TRUE
)
222
{
223
EnableOverCurrentLED
();
224
}
225
else
226
{
227
DisableFaultLEDs
();
228
}
229
state = 5;
230
break
;
231
case
5:
232
if
(
faultFlags
->
userFlag1
==
TRUE
)
233
{
234
EnableU1
();
235
}
236
else
237
{
238
DisableFaultLEDs
();
239
}
240
state = 6;
241
break
;
242
case
6:
243
if
(
faultFlags
->
userFlag2
==
TRUE
)
244
{
245
EnableU2
();
246
}
247
else
248
{
249
DisableFaultLEDs
();
250
}
251
state = 7;
252
break
;
253
case
7:
254
if
(
faultFlags
->
userFlag3
==
TRUE
)
255
{
256
EnableU3
();
257
}
258
else
259
{
260
DisableFaultLEDs
();
261
}
262
state = 8;
263
break
;
264
default
:
265
// No active fault flags; disable all LEDs or indicators.
266
DisableFaultLEDs
();
267
state = 1;
268
}
269
}
EnableU2
void EnableU2(void)
Enables the user function 2 LED.
Definition
fault.cpp:91
EnableU3
void EnableU3(void)
Enables the user function 3 LED.
Definition
fault.cpp:76
EnableU1
void EnableU1(void)
Enables the user function 1 LED.
Definition
fault.cpp:106
DisableFaultLEDs
void DisableFaultLEDs(void)
Disables all LEDs.
Definition
fault.cpp:132
EnableOverCurrentLED
void EnableOverCurrentLED(void)
Enables the over current fault LED.
Definition
fault.cpp:32
SweepLEDsBlocking
void SweepLEDsBlocking(void)
Sweeps through all LEDs individually with a delay.
Definition
fault.cpp:144
EnableNoHallConnectionsLED
void EnableNoHallConnectionsLED(void)
Enables the no hall connection fault LED.
Definition
fault.cpp:120
EnableMotorStoppedLED
void EnableMotorStoppedLED(void)
Enables the motor stopped fault LED.
Definition
fault.cpp:46
faultSequentialStateMachine
void faultSequentialStateMachine(volatile faultflags_t *faultFlags, volatile motorflags_t *motorFlags)
Sequential State Machine for Handling Fault Flags.
Definition
fault.cpp:181
EnableReverseRotationLED
void EnableReverseRotationLED(void)
Enables the reverse rotation fault LED.
Definition
fault.cpp:61
fault.h
Fault LED header file.
FAULT_PIN_2
#define FAULT_PIN_2
Fault Pin 2.
Definition
main.h:637
TRUE
#define TRUE
TRUE constant value, defined to be compatible with comparisons.
Definition
main.h:537
FALSE
#define FALSE
FALSE constant value.
Definition
main.h:535
FAULT_PIN_3
#define FAULT_PIN_3
Fault Pin 3.
Definition
main.h:639
FAULT_PIN_1
#define FAULT_PIN_1
Fault Pin 1.
Definition
main.h:635
motorFlags
volatile motorflags_t motorFlags
Motor control flags placed in I/O space for fast access.
Definition
main.ino:76
faultFlags
volatile faultflags_t faultFlags
Fault flags placed in I/O space for fast access.
Definition
main.ino:84
faultflags
Collection of all fault flags.
Definition
main.h:999
faultflags::userFlag2
uint8_t userFlag2
Is user flag 2 set?
Definition
main.h:1013
faultflags::motorStopped
uint8_t motorStopped
Is motor stopped?
Definition
main.h:1005
faultflags::userFlag3
uint8_t userFlag3
Is user flag 3 set?
Definition
main.h:1015
faultflags::noHallConnections
uint8_t noHallConnections
Is there no hall connections?
Definition
main.h:1009
faultflags::overCurrent
uint8_t overCurrent
Has it tripped the over current limit?
Definition
main.h:1007
faultflags::reverseDirection
uint8_t reverseDirection
Is motor spinning in an unexpected direction?
Definition
main.h:1003
faultflags::userFlag1
uint8_t userFlag1
Is user flag 1 set?
Definition
main.h:1011
motorflags
Collection of all motor control flags.
Definition
main.h:979
motorflags::enable
uint8_t enable
Is the motor enabled?
Definition
main.h:985
fault.cpp
Generated by
1.10.0