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.h File Reference

Fault LED header file. More...

#include <avr/io.h>
#include <util/delay.h>
#include "stdint.h"
#include "config.h"
Include dependency graph for fault.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define __AVR_ATmega32U4__   1
 Define macro for ATmega32U4 micro controller.
 

Functions

void EnableOverCurrentLED (void)
 Enables the over current fault LED.
 
void EnableMotorStoppedLED (void)
 Enables the motor stopped fault LED.
 
void EnableReverseRotationLED (void)
 Enables the reverse rotation fault LED.
 
void EnableU3 (void)
 Enables the user function 3 LED.
 
void EnableU2 (void)
 Enables the user function 2 LED.
 
void EnableU1 (void)
 Enables the user function 1 LED.
 
void EnableNoHallConnectionsLED (void)
 Enables the no hall connection fault LED.
 
void DisableFaultLEDs (void)
 Disables all LEDs.
 
void SweepLEDsBlocking (void)
 Sweeps through all LEDs individually with a delay.
 
void faultSequentialStateMachine (volatile faultflags_t *faultFlags, volatile motorflags_t *motorFlags)
 Sequential State Machine for Handling Fault Flags.
 

Detailed Description

Fault LED header file.

This file contains the function prototypes related to managing and displaying faults through the LED multiplexer.

Author
Nexperia: http://www.nexperia.com
Support Page
For additional support, visit: https://www.nexperia.com/support
Author
Aanas Sayed
Date
2024/03/08


Definition in file fault.h.

Macro Definition Documentation

◆ __AVR_ATmega32U4__

#define __AVR_ATmega32U4__   1

Define macro for ATmega32U4 micro controller.

Definition at line 26 of file fault.h.

Function Documentation

◆ DisableFaultLEDs()

void DisableFaultLEDs ( void )

Disables all LEDs.

Sets: FAULT_BIT3 = 0 FAULT_BIT2 = 0 FAULT_BIT1 = 0

Definition at line 132 of file fault.cpp.

133{
134 PORTB &= ~((1 << FAULT_PIN_3) | (1 << FAULT_PIN_2));
135 PORTD &= ~(1 << FAULT_PIN_1);
136}
#define FAULT_PIN_2
Fault Pin 2.
Definition config.h:706
#define FAULT_PIN_3
Fault Pin 3.
Definition config.h:708
#define FAULT_PIN_1
Fault Pin 1.
Definition config.h:704
Here is the caller graph for this function:

◆ EnableMotorStoppedLED()

void EnableMotorStoppedLED ( void )

Enables the motor stopped fault LED.

Note
As this feeds to a multiplexer, other LEDs are disabled.

Sets: FAULT_BIT3 = 0 FAULT_BIT2 = 1 FAULT_BIT1 = 0

Definition at line 46 of file fault.cpp.

47{
48 PORTB &= ~(1 << FAULT_PIN_3);
49 PORTB |= (1 << FAULT_PIN_2);
50 PORTD &= ~(1 << FAULT_PIN_1);
51}
Here is the caller graph for this function:

◆ EnableNoHallConnectionsLED()

void EnableNoHallConnectionsLED ( void )

Enables the no hall connection fault LED.

Note
As this feeds to a multiplexer, other LEDs are disabled.

Sets: FAULT_BIT3 = 1 FAULT_BIT2 = 1 FAULT_BIT1 = 1

Definition at line 120 of file fault.cpp.

121{
122 PORTB |= (1 << FAULT_PIN_3) | (1 << FAULT_PIN_2);
123 PORTD |= (1 << FAULT_PIN_1);
124}
Here is the caller graph for this function:

◆ EnableOverCurrentLED()

void EnableOverCurrentLED ( void )

Enables the over current fault LED.

Note
As this feeds to a multiplexer, other LEDs are disabled.

Sets: FAULT_BIT3 = 0 FAULT_BIT2 = 0 FAULT_BIT1 = 1

Definition at line 32 of file fault.cpp.

33{
34 PORTB &= ~((1 << FAULT_PIN_3) | (1 << FAULT_PIN_2));
35 PORTD |= (1 << FAULT_PIN_1);
36}
Here is the caller graph for this function:

◆ EnableReverseRotationLED()

void EnableReverseRotationLED ( void )

Enables the reverse rotation fault LED.

Note
As this feeds to a multiplexer, other LEDs are disabled.

Sets: FAULT_BIT3 = 0 FAULT_BIT2 = 1 FAULT_BIT1 = 1

Definition at line 61 of file fault.cpp.

62{
63 PORTB &= ~(1 << FAULT_PIN_3);
64 PORTB |= (1 << FAULT_PIN_2);
65 PORTD |= (1 << FAULT_PIN_1);
66}
Here is the caller graph for this function:

◆ EnableU1()

void EnableU1 ( void )

Enables the user function 1 LED.

Note
As this feeds to a multiplexer, other LEDs are disabled.

Sets: FAULT_BIT3 = 1 FAULT_BIT2 = 1 FAULT_BIT1 = 0

Definition at line 106 of file fault.cpp.

107{
108 PORTB |= (1 << FAULT_PIN_3) | (1 << FAULT_PIN_2);
109 PORTD &= ~(1 << FAULT_PIN_1);
110}
Here is the caller graph for this function:

◆ EnableU2()

void EnableU2 ( void )

Enables the user function 2 LED.

Note
As this feeds to a multiplexer, other LEDs are disabled.

Sets: FAULT_BIT3 = 1 FAULT_BIT2 = 0 FAULT_BIT1 = 1

Definition at line 91 of file fault.cpp.

92{
93 PORTB |= (1 << FAULT_PIN_3);
94 PORTB &= ~(1 << FAULT_PIN_2);
95 PORTD |= (1 << FAULT_PIN_1);
96}
Here is the caller graph for this function:

◆ EnableU3()

void EnableU3 ( void )

Enables the user function 3 LED.

Note
As this feeds to a multiplexer, other LEDs are disabled.

Sets: FAULT_BIT3 = 1 FAULT_BIT2 = 0 FAULT_BIT1 = 0

Definition at line 76 of file fault.cpp.

77{
78 PORTB |= (1 << FAULT_PIN_3);
79 PORTB &= ~(1 << FAULT_PIN_2);
80 PORTD &= ~(1 << FAULT_PIN_1);
81}
Here is the caller graph for this function:

◆ faultSequentialStateMachine()

void faultSequentialStateMachine ( volatile faultflags_t * faultFlags,
volatile motorflags_t * motorFlags )

Sequential State Machine for Handling Fault Flags.

This function implements a sequential state machine for handling fault flags and controlling corresponding LEDs or indicators. It sequentially checks the various fault flags and enables/disables LEDs or indicators based on the current fault flag conditions.

Parameters
faultFlagsA pointer to the volatile faultflags_t structure containing the fault flags to be checked.
motorFlagsA pointer to the volatile motorflags_t structure containing motor control flags (e.g., motor enable status).

Definition at line 182 of file fault.cpp.

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 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 EnableReverseRotationLED(void)
Enables the reverse rotation fault LED.
Definition fault.cpp:61
#define TRUE
TRUE constant value, defined to be compatible with comparisons.
Definition config.h:598
#define FALSE
FALSE constant value.
Definition config.h:596
Here is the call graph for this function:

◆ SweepLEDsBlocking()

void SweepLEDsBlocking ( void )

Sweeps through all LEDs individually with a delay.

Note
This is a blocking function. Do not use while motor is operational.

Definition at line 144 of file fault.cpp.

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}
Here is the call graph for this function:
Here is the caller graph for this function: