Motor Driver Evaluation Kit NEVB-MTR1-t01-1.0.0
Firmware for NEVB-MTR1-KIT1 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.*/
21
22// Include fault header
23#include "fault.h"
24
33{
34 PORTB &= ~((1 << FAULT_PIN_3) | (1 << FAULT_PIN_2));
35 PORTD |= (1 << FAULT_PIN_1);
36}
37
47{
48 PORTB &= ~(1 << FAULT_PIN_3);
49 PORTB |= (1 << FAULT_PIN_2);
50 PORTD &= ~(1 << FAULT_PIN_1);
51}
52
62{
63 PORTB &= ~(1 << FAULT_PIN_3);
64 PORTB |= (1 << FAULT_PIN_2);
65 PORTD |= (1 << FAULT_PIN_1);
66}
67
76void EnableU3(void)
77{
78 PORTB |= (1 << FAULT_PIN_3);
79 PORTB &= ~(1 << FAULT_PIN_2);
80 PORTD &= ~(1 << FAULT_PIN_1);
81}
82
91void EnableU2(void)
92{
93 PORTB |= (1 << FAULT_PIN_3);
94 PORTB &= ~(1 << FAULT_PIN_2);
95 PORTD |= (1 << FAULT_PIN_1);
96}
97
106void EnableU1(void)
107{
108 PORTB |= (1 << FAULT_PIN_3) | (1 << FAULT_PIN_2);
109 PORTD &= ~(1 << FAULT_PIN_1);
110}
111
121{
122 PORTB |= (1 << FAULT_PIN_3) | (1 << FAULT_PIN_2);
123 PORTD |= (1 << FAULT_PIN_1);
124}
125
133{
134 PORTB &= ~((1 << FAULT_PIN_3) | (1 << FAULT_PIN_2));
135 PORTD &= ~(1 << FAULT_PIN_1);
136}
137
145{
146 EnableU3();
147 _delay_ms(100);
148
149 EnableU2();
150 _delay_ms(100);
151
152 EnableU1();
153 _delay_ms(100);
154
156 _delay_ms(100);
157
159 _delay_ms(100);
160
162 _delay_ms(100);
163
165 _delay_ms(100);
166}
167
182void faultSequentialStateMachine(volatile faultflags_t *faultFlags, volatile motorflags_t *motorFlags)
183{
184 static uint8_t state = 1;
185
186 switch (state)
187 {
188 case 1:
189 if (faultFlags->motorStopped == TRUE && motorFlags->enable == TRUE)
190 {
192 }
193 else
194 {
196 }
197 state = 2;
198 break;
199 case 2:
200 if (faultFlags->reverseDirection == TRUE && faultFlags->motorStopped == FALSE)
201 {
203 }
204 else
205 {
207 }
208 state = 3;
209 break;
210 case 3:
211 if (faultFlags->noHallConnections == TRUE)
212 {
214 }
215 else
216 {
218 }
219 state = 4;
220 break;
221 case 4:
222 if (faultFlags->overCurrent == TRUE)
223 {
225 }
226 else
227 {
229 }
230 state = 5;
231 break;
232 case 5:
233 if (faultFlags->userFlag1 == TRUE)
234 {
235 EnableU1();
236 }
237 else
238 {
240 }
241 state = 6;
242 break;
243 case 6:
244 if (faultFlags->userFlag2 == TRUE)
245 {
246 EnableU2();
247 }
248 else
249 {
251 }
252 state = 7;
253 break;
254 case 7:
255 if (faultFlags->userFlag3 == TRUE)
256 {
257 EnableU3();
258 }
259 else
260 {
262 }
263 state = 8;
264 break;
265 default:
266 // No active fault flags; disable all LEDs or indicators.
268 state = 1;
269 }
270}
void EnableU2(void)
Enables the user function 2 LED.
Definition fault.cpp:91
void EnableU3(void)
Enables the user function 3 LED.
Definition fault.cpp:76
void EnableU1(void)
Enables the user function 1 LED.
Definition fault.cpp:106
void DisableFaultLEDs(void)
Disables all LEDs.
Definition fault.cpp:132
void EnableOverCurrentLED(void)
Enables the over current fault LED.
Definition fault.cpp:32
void SweepLEDsBlocking(void)
Sweeps through all LEDs individually with a delay.
Definition fault.cpp:144
void EnableNoHallConnectionsLED(void)
Enables the no hall connection fault LED.
Definition fault.cpp:120
void EnableMotorStoppedLED(void)
Enables the motor stopped fault LED.
Definition fault.cpp:46
void faultSequentialStateMachine(volatile faultflags_t *faultFlags, volatile motorflags_t *motorFlags)
Sequential State Machine for Handling Fault Flags.
Definition fault.cpp:182
void EnableReverseRotationLED(void)
Enables the reverse rotation fault LED.
Definition fault.cpp:61
Fault LED header file.
#define FAULT_PIN_2
Fault Pin 2.
Definition config.h:706
struct motorflags motorflags_t
Collection of all motor control flags.
#define TRUE
TRUE constant value, defined to be compatible with comparisons.
Definition config.h:598
#define FALSE
FALSE constant value.
Definition config.h:596
#define FAULT_PIN_3
Fault Pin 3.
Definition config.h:708
struct faultflags faultflags_t
Collection of all fault flags.
#define FAULT_PIN_1
Fault Pin 1.
Definition config.h:704
uint8_t userFlag2
Is user flag 2 set?
Definition config.h:1083
uint8_t motorStopped
Is motor stopped?
Definition config.h:1075
uint8_t userFlag3
Is user flag 3 set?
Definition config.h:1085
uint8_t noHallConnections
Is there no hall connections?
Definition config.h:1079
uint8_t overCurrent
Has it tripped the over current limit?
Definition config.h:1077
uint8_t reverseDirection
Is motor spinning in an unexpected direction?
Definition config.h:1073
uint8_t userFlag1
Is user flag 1 set?
Definition config.h:1081
uint8_t enable
Is the motor enabled?
Definition config.h:1053