iLLD_TC27xC  1.0
IfxCcu6_PwmBc.h
Go to the documentation of this file.
1 /**
2  * \file IfxCcu6_PwmBc.h
3  * \brief CCU6 PWMBC details
4  * \ingroup IfxLld_Ccu6
5  *
6  * \version iLLD_0_1_0_10
7  * \copyright Copyright (c) 2013 Infineon Technologies AG. All rights reserved.
8  *
9  *
10  * IMPORTANT NOTICE
11  *
12  *
13  * Infineon Technologies AG (Infineon) is supplying this file for use
14  * exclusively with Infineon's microcontroller products. This file can be freely
15  * distributed within development tools that are supporting such microcontroller
16  * products.
17  *
18  * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
19  * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
20  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
21  * INFINEON SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL,
22  * OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
23  *
24  *
25  * \defgroup IfxLld_Ccu6_PwmBc_Usage How to use the CCU6 PWMBC Interface driver?
26  * \ingroup IfxLld_Ccu6
27  *
28  * The PWMBC interface driver provides a default CCU6 configuration specifically for running a Brush Less DC Motor using hall sensor inputs, by utilising both the timers
29  *
30  * After evaluating the hall input pattern at every T13 period match, new out pattern is given to the module after the phase delay at the T13 zero match
31  *
32  * User has to prepare the control table for the respective motor he/she is using,
33  *
34  * In the following sections it will be described, how to integrate the driver into the application framework.
35  *
36  *
37  * \section IfxLld_Ccu6_PwmBc_Preparation Preparation
38  *
39  *
40  * \subsection IfxLld_Ccu6_PwmBc_Include Include Files
41  *
42  * Include following header file into your C code:
43  * \code
44  * #include <Ccu6/PwmBc/IfxCcu6_PwmBc.h>
45  * \endcode
46  *
47  * \subsection IfxLld_Ccu6_PwmBc_Variables Variables
48  *
49  * Declare the PWMBC handle and the motor control table as global variables in your C code:
50  *
51  * \code
52  * // used globally
53  * static IfxCcu6_PwmBc pwmBc;
54  * // prepare the control table
55  * uint8 controlTable[6][3] = {{1, 5, 17} ,
56  * {2, 3, 36} ,
57  * {3, 1, 6} ,
58  * {4, 6, 18} ,
59  * {5, 4, 24} ,
60  * {6, 2, 9}};
61  * // to store value of the speed
62  * uint32 speed = 0;
63  * \endcode
64  *
65  * \subsection IfxLld_Ccu6_PwmBc_Interrupt Interrupt Handler Installation
66  *
67  * See also \ref IfxLld_Cpu_Irq_Usage
68  *
69  * Define priority for the Interrrupt handler. This is normally done in the Ifx_IntPrioDef.h file:
70  * \code
71  * // priorities are normally defined in Ifx_IntPrioDef.h
72  * #define IFX_INTPRIO_CCU6 1
73  * \endcode
74  *
75  * Add the interrupt service routine to your C code.
76  * \code
77  * IFX_INTERRUPT(ccu60ISR_PwmBc, 0, IFX_INTPRIO_CCU6)
78  * {
79  * //user code
80  * }
81  * \endcode
82  *
83  * Finally install the interrupt handlers in your initialisation function:
84  * \code
85  * // install interrupt handlers
86  * IfxCpu_Irq_installInterruptHandler(&ccu60ISR_PwmBc, IFX_INTPRIO_CCU6);
87  * IfxCpu_enableInterrupts();
88  * \endcode
89  *
90  * \subsection IfxLld_Ccu6_PwmBc_Init Module Initialisation
91  *
92  * The module initialisation can be done in the same function. Here an example:
93  *
94  * \code
95  * // create configuration
96  * IfxCcu6_PwmBc_Config pwmBcConfig;
97  * IfxCcu6_PwmBc_initModuleConfig(&pwmBcConfig, &MODULE_CCU60);
98  *
99  * // configure the frequencies of both the timers
100  * pwmBcConfig.base.t12Frequency = 400000;
101  * pwmBcConfig.base.t13Frequency = 400000;
102  *
103  * // configure the periods of both the timers
104  * pwmBcConfig.base.t12Period = 100;
105  * pwmBcConfig.base.t13Period = 100;
106  *
107  * // configure the phase delay and noise filter for hall input
108  * pwmBcConfig.base.phaseDelay = 20;
109  * pwmBcConfig.base.noiseFilter = 10;
110  *
111  * // select the active state of the output
112  * pwmBcConfig.base.activeState = Ifx_ActiveState_high;
113  *
114  * // configure timer12
115  * pwmBcConfig.timer12.countMode = IfxCcu6_T12CountMode_edgeAligned;
116  * pwmBcConfig.timer12.counterValue = 0;
117  *
118  * // configure timer13
119  * pwmBcConfig.timer13.counterValue = 0;
120  * pwmBcConfig.timer13.compareValue = 100;
121  * // configure the syncronisation, in case of sync start with T12
122  * pwmBcConfig.timer13.t12SyncEvent = IfxCcu6_T13TriggerEvent_onCC60RCompare;
123  * pwmBcConfig.timer13.t12SyncDirection = IfxCcu6_T13TriggerDirection_onT12CountingUp;
124  *
125  * // configure hall sync event that starts the hall input pattern evaluation
126  * pwmBcConfig.hallSyncEvent = IfxCcu6_HallSensorTriggerMode_t13PM,
127  *
128  * // configure multi channel control
129  * pwmBcConfig.multiChannelControl.switchingSelect = IfxCcu6_MultiChannelSwitchingSelect_t12Channel1CompareMatch,
130  * pwmBcConfig.multiChannelControl.switchingSync = IfxCcu6_MultiChannelSwitchingSync_t13ZeroMatch,
131  *
132  * // pin configuration
133  * const IfxCcu6_PwmBc_Pins pins = {
134  * IfxCcu60_CC60_P02_0_OUT, // CC60Out pin
135  * IfxCcu60_CC61_P02_2_OUT, // CC61Out pin
136  * IfxCcu60_CC62_P02_4_OUT, // CC62Out pin
137  * IfxCcu60_COUT60_P02_1_OUT, // COUT60 pin
138  * IfxCcu60_COUT60_P02_3_OUT, // COUT61 pin
139  * IfxCcu60_COUT60_P02_5_OUT, // COUT62 pin
140  * NULL, // COUT63 pin not used
141  *
142  * IfxCcu60_COUT60_P02_6_OUT // CCPOS0In pin
143  * IfxCcu60_COUT60_P02_7_OUT // CCPOS1In pin
144  * IfxCcu60_COUT60_P02_8_OUT // CCPOS2In pin
145  *
146  * IfxPort_OutputMode_pushPull,
147  * IfxPort_PadDriver_cmosAutomotiveSpeed1,
148  * IfxPort_InputMode_pullUp
149  * };
150  * pwmBcConfig.pins = &pins;
151  *
152  * // configure the interrupts
153  * pwmBcConfig.interrupt.interruptSource = IfxCcu6_InterruptSource_cc61FallingEdge;
154  * pwmBcConfig.interrupt.serviceRequest = IfxCcu6_ServiceRequest_sR2;
155  * pwmBcConfig.interrupt.priority = IFX_INTRPRIO_CCU6;
156  * pwmBcConfig.interrupt.typeOfService = IfxSrc_Tos_cpu0;
157  *
158  * // configure input and output triggers
159  * pwmBcConfig.trigger.t12ExtInputTrigger = NULL_PTR;
160  * pwmBcConfig.trigger.t12ExtInputTriggerMode = IfxCcu6_ExternalTriggerMode_risingEdge;
161  * pwmBcConfig.trigger.t13ExtInputTrigger = NULL_PTR;
162  * pwmBcConfig.trigger.t13ExtInputTriggerMode = IfxCcu6_ExternalTriggerMode_risingEdge;
163  * pwmBcConfig.trigger.t13InSyncWithT12 = FALSE;
164  *
165  * pwmBcConfig.trigger.outputTriggerEnabled = TRUE;
166  * pwmBcConfig.trigger.outputLine = IfxCcu6_TrigOut_0;
167  * pwmBcConfig.trigger.outputTrigger = IfxCcu6_TrigSel_cout63;
168  *
169  *
170  * // initialize the module
171  * IfxCcu6_PwmBc_initModule(&pwmBc, &pwmBcConfig);
172  * \endcode
173  *
174  *
175  * The PwmBc is ready for use now!
176  *
177  *
178  * \section IfxLld_Ccu6_PwmBc_ModulationControl Modulation Control
179  *
180  *
181  * The PWMBC driver provides simple to use Motor Control functions
182  *
183  * This means: you can start, stop, the BLDC motor once the module is initialised with the appropriate configuration
184  * You can optionally get the speed of the motor at any point of time
185  *
186  * Start the motor
187  *
188  * \code
189  * IfxCcu6_PwmBc_start(&pwmBc);
190  * \endcode
191  *
192  * Stop the motor
193  *
194  * \code
195  * IfxCcu6_PwmBc_stop(&pwmBc);
196  * \endcode
197  *
198  * Update the output pattern
199  *
200  * \code
201  * // prepare the control table
202  * // assumed to be declared globally
203  * uint8 controlTable[6][3] = {{1, 5, 17} ,
204  * {2, 3, 36} ,
205  * {3, 1, 6} ,
206  * {4, 6, 18} ,
207  * {5, 4, 24} ,
208  * {6, 2, 9}};
209  *
210  * // update the output pattern
211  * IfxCcu6_PwmBc_updateHallPattern(&pwmBc, controlTable[6][3]);
212  * \endcode
213  *
214  * Get the current motor speed
215  * (can also be called in ISR)
216  *
217  * \code
218  * // assumed to be declared globally
219  * uint32 speed = 0;
220  *
221  * // get the current motor speed
222  * speed = IfxCcu6_PwmBc_getMotorSpeed(&pwmBc);
223  * \endcode
224  *
225  * \defgroup IfxLld_Ccu6_PwmBc PwmBc
226  * \ingroup IfxLld_Ccu6
227  * \defgroup IfxLld_Ccu6_PwmBc_DataStructures Data Structures
228  * \ingroup IfxLld_Ccu6_PwmBc
229  * \defgroup IfxLld_Ccu6_PwmBc_Module_Initialize_Functions Module Initialize Functions
230  * \ingroup IfxLld_Ccu6_PwmBc
231  * \defgroup IfxLld_Ccu6_PwmBc_Modulation_Control_Functions Modulation Control Functions
232  * \ingroup IfxLld_Ccu6_PwmBc
233  * \defgroup IfxLld_Ccu6_PwmBc_Hall_Pattern_Functions Hall Pattern Functions
234  * \ingroup IfxLld_Ccu6_PwmBc
235  */
236 
237 #ifndef IFXCCU6_PWMBC_H
238 #define IFXCCU6_PWMBC_H 1
239 
240 /******************************************************************************/
241 /*----------------------------------Includes----------------------------------*/
242 /******************************************************************************/
243 
244 #include "Ccu6/Std/IfxCcu6.h"
245 #include "If/Ccu6If/PwmHl.h"
246 
247 /******************************************************************************/
248 /*-----------------------------Data Structures--------------------------------*/
249 /******************************************************************************/
250 
251 /** \addtogroup IfxLld_Ccu6_PwmBc_DataStructures
252  * \{ */
253 /** \brief Structure for interrupt configuration
254  */
255 typedef struct
256 {
257  IfxCcu6_InterruptSource interruptSource; /**< \brief Interrupt source selection */
258  IfxCcu6_ServiceRequest serviceRequest; /**< \brief Selection of service request outputs */
259  uint16 priority; /**< \brief Interrupt priority */
260  IfxSrc_Tos typeOfService; /**< \brief type of interrupt service */
262 
263 /** \brief Structure for multichannel mode control
264  */
265 typedef struct
266 {
267  IfxCcu6_MultiChannelSwitchingSelect switchingSelect; /**< \brief Trigger request source (next multi-channel event) for the shadow transfer MCM_ST from MCMPS to MCMP */
268  IfxCcu6_MultiChannelSwitchingSync switchingSync; /**< \brief Synchronization selection for the shadow transfer event MCM_ST */
270 
271 /** \brief Structure for CCU6 output pin configuration
272  */
273 typedef struct
274 {
275  const IfxCcu6_Cc60_Out *cc60Out; /**< \brief CC60 compare output CC0 */
276  const IfxCcu6_Cc61_Out *cc61Out; /**< \brief CC61 compare output CC1 */
277  const IfxCcu6_Cc62_Out *cc62Out; /**< \brief CC62 compare output CC2 */
278  const IfxCcu6_Cout60_Out *cout60; /**< \brief CC60 compare output COUT0 */
279  const IfxCcu6_Cout61_Out *cout61; /**< \brief CC61 compare output COUT1 */
280  const IfxCcu6_Cout62_Out *cout62; /**< \brief CC62 compare output COUT2 */
281  const IfxCcu6_Cout63_Out *cout63; /**< \brief CC63 compare output COUT3 */
282  const IfxCcu6_Ccpos0_In *ccpos0; /**< \brief CCPOS0 input signal */
283  const IfxCcu6_Ccpos1_In *ccpos1; /**< \brief CCPOS2 input signal */
284  const IfxCcu6_Ccpos2_In *ccpos2; /**< \brief CCPOS2 input signal */
285  IfxPort_OutputMode outputMode; /**< \brief The pin output mode which should be configured */
286  IfxPort_PadDriver pinDriver; /**< \brief pad driver */
287  IfxPort_InputMode inputMode; /**< \brief The CCPOSx pin input mode which should be configured */
288  const IfxCcu6_T12hr_In *t12hr; /**< \brief T12HR input signal */
289  const IfxCcu6_T13hr_In *t13hr; /**< \brief T13HR input signal */
290  IfxPort_InputMode t1xhrInputMode; /**< \brief The T1xHR pin input mode which should be configured */
292 
293 /** \brief Structure for Timer 12
294  */
295 typedef struct
296 {
297  IfxCcu6_T12CountMode countMode; /**< \brief Operating mode of Timer 12 */
298  uint16 counterValue; /**< \brief 16-bit counter value of Timer12 */
300 
301 /** \brief Structure for Timer 13
302  */
303 typedef struct
304 {
305  uint16 counterValue; /**< \brief 16-bit counter value of Timer13 */
306  uint16 compareValue; /**< \brief 16-bit comapre value of Timer12 */
307  IfxCcu6_T13TriggerEvent t12SyncEvent; /**< \brief T12 sync trigger event to start T13 */
308  IfxCcu6_T13TriggerDirection t12SyncDirection; /**< \brief Additional information to control trigger event selection */
310 
311 /** \brief Configuration structure for external triggers
312  */
313 typedef struct
314 {
315  IfxCcu6_T12hr_In *t12ExtInputTrigger; /**< \brief External input signal selection for timer 12 */
316  IfxCcu6_ExternalTriggerMode t12ExtInputTriggerMode; /**< \brief Event of signal T12HR that can set the run bit T12R by HW */
317  IfxCcu6_T13hr_In *t13ExtInputTrigger; /**< \brief External input signal selection for timer 13 */
318  IfxCcu6_ExternalTriggerMode t13ExtInputTriggerMode; /**< \brief Event of signal T13HR that can set the run bit T13R by HW */
319  boolean t13InSyncWithT12; /**< \brief Selection of Timer 13 start in sync with T12 */
320  boolean outputTriggerEnabled; /**< \brief Output trigger connection to VADC enable / disable choice */
321  IfxCcu6_TrigOut outputLine; /**< \brief Trigger out selection */
322  IfxCcu6_TrigSel outputTrigger; /**< \brief Trigger selection */
324 
325 /** \} */
326 
327 /** \addtogroup IfxLld_Ccu6_PwmBc_DataStructures
328  * \{ */
329 /** \brief Module handle
330  */
331 typedef struct
332 {
333  PwmHl base; /**< \brief Base PWMHL object */
334  Ifx_CCU6 *ccu6; /**< \brief Pointer to the base of CCU6 registers */
335  IfxCcu6_PwmBc_TriggerConfig trigger; /**< \brief Structure for trigger configuration */
336  uint8 hallPatternIndex; /**< \brief Hall pattern index of motor control table */
337 } IfxCcu6_PwmBc;
338 
339 /** \brief Configuration structure of the module
340  */
341 typedef struct
342 {
343  PwmHl_Config base; /**< \brief Base configuration */
344  Ifx_CCU6 *ccu6; /**< \brief Pointer to the base of CCU6 registers */
345  IfxCcu6_PwmBc_Timer12 timer12; /**< \brief Structure for Timer 12 */
346  IfxCcu6_PwmBc_Timer13 timer13; /**< \brief Structure for Timer 13 */
347  uint8 hallPatternIndex; /**< \brief Hall pattern index of motor control table */
348  IfxCcu6_HallSensorTriggerMode hallSyncEvent; /**< \brief Hall pattern evaluation trigger selection (HSYNC) */
349  IfxCcu6_PwmBc_MultiChannelControl multiChannelControl; /**< \brief Structure for multichannel mode control */
350  IfxCcu6_PwmBc_Pins *pins; /**< \brief Structure for CCU6 output pin configuration */
351  IfxCcu6_PwmBc_InterruptConfig interrupt; /**< \brief Structure for interrupt configuration */
352  IfxCcu6_PwmBc_TriggerConfig trigger; /**< \brief Structure for trigger configuration */
354 
355 /** \} */
356 
357 /** \addtogroup IfxLld_Ccu6_PwmBc_Module_Initialize_Functions
358  * \{ */
359 
360 /******************************************************************************/
361 /*-------------------------Global Function Prototypes-------------------------*/
362 /******************************************************************************/
363 
364 /** \brief Initialises the module with default configuration
365  * \param pwmBc Module handle
366  * \param config Configuration structure of the module
367  * \return None
368  *
369  * \code
370  * // create configuration
371  * IfxCcu6_PwmBc_Config pwmBcConfig;
372  * IfxCcu6_PwmBc_initModuleConfig(&pwmBcConfig, &MODULE_CCU60);
373  *
374  * // configure the frequencies of both the timers
375  * pwmBcConfig.base.t12Frequency = 400000;
376  * pwmBcConfig.base.t13Frequency = 400000;
377  *
378  * // configure the periods of both the timers
379  * pwmBcConfig.base.t12Period = 100;
380  * pwmBcConfig.base.t13Period = 100;
381  *
382  * // configure the phase delay and noise filter for hall input
383  * pwmBcConfig.base.phaseDelay = 20;
384  * pwmBcConfig.base.noiseFilter = 10;
385  *
386  * // select the active state of the output
387  * pwmBcConfig.base.activeState = Ifx_ActiveState_high;
388  *
389  * // configure timer12
390  * pwmBcConfig.timer12.countMode = IfxCcu6_T12CountMode_edgeAligned;
391  * pwmBcConfig.timer12.counterValue = 0;
392  *
393  * // configure timer13
394  * pwmBcConfig.timer13.counterValue = 0;
395  * pwmBcConfig.timer13.compareValue = 100;
396  * // configure the syncronisation, in case of sync start with T12
397  * pwmBcConfig.timer13.t12SyncEvent = IfxCcu6_T13TriggerEvent_onCC60RCompare;
398  * pwmBcConfig.timer13.t12SyncDirection = IfxCcu6_T13TriggerDirection_onT12CountingUp;
399  *
400  * // configure hall sync event that starts the hall input pattern evaluation
401  * pwmBcConfig.hallSyncEvent = IfxCcu6_HallSensorTriggerMode_t13PM,
402  *
403  * // configure multi channel control
404  * pwmBcConfig.multiChannelControl.switchingSelect = IfxCcu6_MultiChannelSwitchingSelect_t12Channel1CompareMatch,
405  * pwmBcConfig.multiChannelControl.switchingSync = IfxCcu6_MultiChannelSwitchingSync_t13ZeroMatch,
406  *
407  * // pin configuration
408  * const IfxCcu6_PwmBc_Pins pins = {
409  * IfxCcu60_CC60_P02_0_OUT, // CC60Out pin
410  * IfxCcu60_CC61_P02_2_OUT, // CC61Out pin
411  * IfxCcu60_CC62_P02_4_OUT, // CC62Out pin
412  * IfxCcu60_COUT60_P02_1_OUT, // COUT60 pin
413  * IfxCcu60_COUT60_P02_3_OUT, // COUT61 pin
414  * IfxCcu60_COUT60_P02_5_OUT, // COUT62 pin
415  * NULL, // COUT63 pin not used
416  *
417  * IfxCcu60_COUT60_P02_6_OUT // CCPOS0In pin
418  * IfxCcu60_COUT60_P02_7_OUT // CCPOS1In pin
419  * IfxCcu60_COUT60_P02_8_OUT // CCPOS2In pin
420  *
421  * IfxPort_OutputMode_pushPull,
422  * IfxPort_PadDriver_cmosAutomotiveSpeed1,
423  * IfxPort_InputMode_pullUp
424  * };
425  * pwmBcConfig.pins = &pins;
426  *
427  * // configure the interrupts
428  * pwmBcConfig.interrupt.interruptSource = IfxCcu6_InterruptSource_cc61FallingEdge;
429  * pwmBcConfig.interrupt.serviceRequest = IfxCcu6_ServiceRequest_sR2;
430  * pwmBcConfig.interrupt.priority = IFX_INTRPRIO_CCU6;
431  * pwmBcConfig.interrupt.typeOfService = IfxSrc_Tos_cpu0;
432  *
433  * // configure input and output triggers
434  * pwmBcConfig.trigger.t12ExtInputTrigger = NULL_PTR;
435  * pwmBcConfig.trigger.t12ExtInputTriggerMode = IfxCcu6_ExternalTriggerMode_risingEdge;
436  * pwmBcConfig.trigger.t13ExtInputTrigger = NULL_PTR;
437  * pwmBcConfig.trigger.t13ExtInputTriggerMode = IfxCcu6_ExternalTriggerMode_risingEdge;
438  * pwmBcConfig.trigger.t13InSyncWithT12 = FALSE;
439  *
440  * pwmBcConfig.trigger.outputTriggerEnabled = TRUE;
441  * pwmBcConfig.trigger.outputLine = IfxCcu6_TrigOut_0;
442  * pwmBcConfig.trigger.outputTrigger = IfxCcu6_TrigSel_cout63;
443  *
444  *
445  * // initialize the module
446  * IfxCcu6_PwmBc_initModule(&pwmBc, &pwmBcConfig);
447  * \endcode
448  *
449  */
451 
452 /** \brief Fills the config structure with default values
453  * \param config Configuration structure of the module
454  * \param ccu6 Pointer to the base of CCU6 registers
455  * \return None
456  *
457  * A coding example can be found in \ref IfxCcu6_PwmBc_initModule
458  *
459  */
461 
462 /** \} */
463 
464 /** \addtogroup IfxLld_Ccu6_PwmBc_Modulation_Control_Functions
465  * \{ */
466 
467 /******************************************************************************/
468 /*-------------------------Global Function Prototypes-------------------------*/
469 /******************************************************************************/
470 
471 /** \brief Starts the Hall sensored based PWM
472  * \param pwmBc Module handle
473  * \return None
474  *
475  * \code
476  * IfxCcu6_PwmBc_start(&pwmBc);
477  * \endcode
478  *
479  */
481 
482 /** \brief Stops the Hall sensored based PWM
483  * \param pwmBc Module handle
484  * \return None
485  *
486  * \code
487  * IfxCcu6_PwmBc_stop(&pwmBc);
488  * \endcode
489  *
490  */
492 
493 /** \} */
494 
495 /** \addtogroup IfxLld_Ccu6_PwmBc_Hall_Pattern_Functions
496  * \{ */
497 
498 /******************************************************************************/
499 /*-------------------------Global Function Prototypes-------------------------*/
500 /******************************************************************************/
501 
502 /** \brief returns the current motor speed
503  * \param pwmBc Module handle
504  * \return speed
505  *
506  * \code
507  * // assumed to be declared globally
508  * uint32 speed = 0;
509  *
510  * // get the current motor speed
511  * speed = IfxCcu6_PwmBc_getMotorSpeed(&pwmBc);
512  * \endcode
513  *
514  */
516 
517 /** \brief Updates the Hall pattern
518  * \param pwmBc Module handle
519  * \param controlTable[6][3] Motor Control table
520  * \return None
521  *
522  * \code
523  * // prepare the control table
524  * // assumed to be declared globally
525  * uint8 controlTable[6][3] = {{1, 5, 17} ,
526  * {2, 3, 36} ,
527  * {3, 1, 6} ,
528  * {4, 6, 18} ,
529  * {5, 4, 24} ,
530  * {6, 2, 9}};
531  *
532  * // update the output pattern
533  * IfxCcu6_PwmBc_updateHallPattern(&pwmBc, controlTable[6][3]);
534  * \endcode
535  *
536  */
537 IFX_EXTERN void IfxCcu6_PwmBc_updateHallPattern(IfxCcu6_PwmBc * pwmBc, uint8 controlTable[6][3]);
538 
539 /** \} */
540 
541 #endif /* IFXCCU6_PWMBC_H */