CCU8PWMLIBApp
CCU8PWMLIB.h
Go to the documentation of this file.
00001 /******************************************************************************
00002  *
00003  * Copyright (C) 2011 Infineon Technologies AG. All rights reserved.
00004  *
00005  * Infineon Technologies AG (Infineon) is supplying this software for use with
00006  * Infineon's microcontrollers.
00007  * This file can be freely distributed within development tools that are
00008  * supporting such microcontrollers.
00009  *
00010  * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED
00011  * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
00012  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
00013  * INFINEON SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL,
00014  * OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
00015  *
00016 ********************************************************************************
00017 **                                                                            **
00018 **                                                                            **
00019 ** PLATFORM : Infineon XMC4000 Series                                         **
00020 **                                                                            **
00021 ** COMPILER : Compiler Independent                                            **
00022 **                                                                            **
00023 ** AUTHOR   : App Developer                                                   **
00024 **                                                                            **
00025 ** MAY BE CHANGED BY USER [yes/no]: Yes                                       **
00026 **                                                                            **
00027 ** MODIFICATION DATE : Nov 01, 2012                                           **
00028 **                                                                            **
00029 *******************************************************************************/
00030 
00031 /*******************************************************************************
00032 **                       Author(s) Identity                                   **
00033 ********************************************************************************
00034 **                                                                            **
00035 ** Initials     Name                                                          **
00036 ** ---------------------------------------------------------------------------**
00037 ** KS           App Developer                                                 **
00038 *******************************************************************************/
00039 
00050 #ifndef CCU8PWMLIB_H_
00051 #define CCU8PWMLIB_H_
00052 /*******************************************************************************
00053 **                      Include Files                                         **
00054 *******************************************************************************/
00055 #include <DAVE3.h>
00056 
00057 
00062 /*******************************************************************************
00063 **                      Global Macro Definitions                              **
00064 *******************************************************************************/
00065 
00066 /*<<<DD_CCU8PWMLIB_MACRO_1>>>*/
00068 #define CCU8PWMLIB_EVENT_0  0x01U
00069 
00070 /*<<<DD_CCU8PWMLIB_MACRO_2>>>*/
00072 #define CCU8PWMLIB_EVENT_1  0x02U
00073 
00074 /*<<<DD_CCU8PWMLIB_MACRO_3>>>*/
00076 #define CCU8PWMLIB_EVENT_2  0x03U
00077 
00078 /*<<<DD_CCU8PWMLIB_MACRO_4>>>*/
00080 #define CCU8PWMLIB_ACTIVE_LOW  0x00U
00081 
00082 /*<<<DD_CCU8PWMLIB_MACRO_5>>>*/
00084 #define CCU8PWMLIB_ACTIVE_HIGH  0x01U
00085 
00086 /*<<<DD_CCU8PWMLIB_MACRO_6>>>*/
00088 #define CCU8PWMLIB_ALL_CCU8_INTR_CLEAR  0x00000F3FU
00089 
00090 /*<<<DD_CCU8PWMLIB_MACRO_7>>>*/
00092 #define CCU8PWMLIB_SLICE_CLEAR  0x07U
00093 
00094 /*<<<DD_CCU8PWMLIB_MACRO_8>>>*/
00096 #define CCU8PWMLIB_LPF  0x0U
00097 
00098 /*<<<DD_CCU8PWMLIBD_MACRO_9>>>*/
00101 #define CCU8PWMLIB_COUNT(PwmTime, Res)  (uint32_t)(PwmTime/Res)
00102 
00103 /*<<<DD_CCU8PWMLIB_MACRO_10>>>*/
00105 #define CCU8PWMLIB_EDGE_PERIOD_VAL(count)  (uint32_t)(count -1U)
00106 
00107 /*<<<DD_CCU8PWMLIB_MACRO_11>>>*/
00109 #define  CCU8PWMLIB_CENTER_PERIOD_VAL(count)  (uint32_t)((count <<1U) -1U )
00110 
00112 #define CCU8PWMLIB_COMPARE_MODE 0x00U
00113 
00114 #define CCU8PWMLIB_EVENT2_INTERRUPT 0xAU
00115 
00116 #define CCU8PWMLIB_TRAP_FLAG_CLEAR 0xBU
00117 
00118 #define CCU8PWMLIB_MAX_VALUE 65535UL
00119 
00120 #define CCU8PWMLIB_TC_MAX_VALUE 0xFFFFFFFFUL
00121 
00122 typedef status_t (*CCU8PWMLIB_SetCompareFuncionPtr)(const void*, uint32_t, uint32_t);
00123 typedef status_t (*CCU8PWMLIB_SetDutyFunctionPtr)(const void*, float, uint32_t, uint8_t);
00124 
00125 
00126 /*******************************************************************************
00127  *                                ENUMERATIONS                                **
00128  ******************************************************************************/
00133 typedef enum CCU8PWMLIB_StateType
00134 {
00138   CCU8PWMLIB_UNINITIALIZED,
00143   CCU8PWMLIB_INITIALIZED,
00147   CCU8PWMLIB_RUNNING,
00151   CCU8PWMLIB_STOPPED,
00152 
00153 } CCU8PWMLIB_StateType;
00154 
00159 typedef enum CCU8PWMLIB_CCUInUseType
00160 {
00164   CCU8PWMLIB_SLICE0,
00168   CCU8PWMLIB_SLICE1,
00172   CCU8PWMLIB_SLICE2,
00176   CCU8PWMLIB_SLICE3
00177 } CCU8PWMLIB_CCUInUseType;
00178 
00183 typedef enum CCU8PWMLIB_ErrorCodesType
00184 {
00189   CCU8PWMLIB_OPER_NOT_ALLOWED_ERROR = 1,
00193   CCU8PWMLIB_INVALID_PARAM_ERROR,
00197   CCU8PWMLIB_IN_TRAP_ERROR,
00198   /* Debug Log Codes starts here*/
00202   CCU8PWMLIB_FUNCTION_ENTRY,
00206   CCU8PWMLIB_FUNCTION_EXIT
00207 
00208 } CCU8PWMLIB_ErrorCodesType;
00209 
00213 typedef enum CCU8PWMLIB_DeadTimeConfType
00214 {
00218   CCU8PWMLIB_DISABLE,
00222   CCU8PWMLIB_ENABLE,
00226   CCU8PWMLIB_ENABLEDIRECTOUTPUT,
00230   CCU8PWMLIB_ENABLEINVERTEDOUTPUT
00231 } CCU8PWMLIB_DeadTimeConfType;
00232 
00237 typedef enum CCU8PWMLIB_CompareModeType
00238 {
00244   CCU8PWMLIB_SYMMETRIC,
00250   CCU8PWMLIB_ASYMMETRIC
00251 } CCU8PWMLIB_CompareModeType;
00252 
00253 typedef enum CCU8PWMLIB_EdgeTriggerType{
00257   CCU8PWMLIB_NOTRIGGER,
00261   CCU8PWMLIB_RISINGEDGE,
00265   CCU8PWMLIB_FALLINGEDGE,
00269   CCU8PWMLIB_BOTHEDGES
00270 }CCU8PWMLIB_EdgeTriggerType;
00271 
00276 typedef enum CCU8PWMLIB_CountingModeType
00277 {
00284   CCU8PWMLIB_EDGE_ALIGNED,
00291   CCU8PWMLIB_CENTER_ALIGNED
00292 }CCU8PWMLIB_CountingModeType;
00293 
00297 typedef enum CCU8PWMLIB_ExtStartConfigType
00298 {
00302   CCU8PWMLIB_START_TIMER,
00306   CCU8PWMLIB_CLEAR_START_TIMER
00307 } CCU8PWMLIB_ExtStartConfigType;
00308 
00312 typedef enum CCU8PWMLIB_ExtStopConfigType
00313 {
00317   CCU8PWMLIB_STOP_TIMER,
00321   CCU8PWMLIB_CLEAR_TIMER,
00326   CCU8PWMLIB_CLEAR_STOP_TIMER
00327 } CCU8PWMLIB_ExtStopConfigType;
00328 
00332 typedef enum CCU8PWMLIB_EventNameType
00333 {
00337   CCU8PWMLIB_PERIODMATCHEVENT = 0,
00341   CCU8PWMLIB_COMPAREMATCHEVENT = 2,
00345   CCU8PWMLIB_EXTSTARTEVENT = 8,
00349   CCU8PWMLIB_EXTSTOPEVENT = 9,
00353   CCU8PWMLIB_TRAPEVENT = 10,
00354 }CCU8PWMLIB_EventNameType;
00355 /*******************************************************************************
00356  *                             STRUCTURES                                     **
00357  ******************************************************************************/
00361 typedef struct CCU8PWMLIB_TimerRegsType
00362 {
00366   uint32_t CompReg1;
00370   uint32_t CompReg2;
00374   uint32_t PeriodReg;
00378   uint32_t TimerReg;
00379 } CCU8PWMLIB_TimerRegsType;
00380 
00381 
00382 
00387 typedef struct CCU8PWMLIB_DynamicHandleType
00388 {
00389 
00393   CCU8PWMLIB_StateType State;
00394 } CCU8PWMLIB_DynamicHandleType;
00395 
00401 typedef struct CCU8PWMLIB_HandleType
00402 {
00407     const uint8_t kExtStartTrig;
00412     const uint8_t kExtStopTrig;
00417     const uint8_t kPassiveState0;
00422     const uint8_t kPassiveState1;
00427     const uint8_t kPassiveLevel0;
00432     const uint8_t kPassiveLevel1;
00437     const uint8_t kTimerMode;
00441     const uint8_t kTimerConcatenation;
00445     const uint8_t kTrapEnable;
00450     const uint8_t kTrapSync;
00454     const uint8_t kTrapLevel;  
00459     const uint8_t kTrapExitControl;
00463     const uint8_t kDitherCompare; 
00467     const uint8_t kDeadTimePrescalar;
00471     const uint8_t kDitherSetting;
00476     const uint8_t ShadowTransfer;
00481     const uint8_t Start;    
00485     const uint8_t StartControl;       
00489    const uint16_t kFallingDeadTime;
00493    const uint16_t kRisingDeadTime;    
00494     
00498   const float kResolution;
00499 
00504   const uint32_t kCompareValue1;
00509   const uint32_t kCompareValue2;
00513   const uint32_t kCCUPrescalar;
00517   const CCU8PWMLIB_EdgeTriggerType kStartEdge;
00521   const CCU8PWMLIB_EdgeTriggerType kStopEdge;
00525   const uint32_t kPeriodVal;
00529   CCU8_GLOBAL_TypeDef* const CC8yKernRegsPtr;
00533   CCU8_CC8_TypeDef* const CC8yRegsPtr;
00537   CCU8_CC8_TypeDef* const CC8yRegs1Ptr;
00541   CCU8PWMLIB_DynamicHandleType* const DynamicHandleType;
00545   const CCU8PWMLIB_CountingModeType CountingMode;
00549   const CCU8PWMLIB_ExtStopConfigType ExtStopConfig;
00553   const CCU8PWMLIB_DeadTimeConfType DeadTimeConf;
00557   const CCU8PWMLIB_CompareModeType CompareMode;
00561   const CCU8PWMLIB_ExtStartConfigType ExtStartConfig;
00565   const CCU8PWMLIB_CCUInUseType FirstSlice;
00569   const CCU8PWMLIB_CCUInUseType SecondSlice;
00573   const uint32_t ShadowTransferMask;
00577   const uint32_t StartMask;
00582   const uint32_t InterruptControl;
00586   CCU8PWMLIB_SetCompareFuncionPtr SetCompareFuncPtr;
00590   CCU8PWMLIB_SetDutyFunctionPtr SetDutyFuncPtr;
00591 } CCU8PWMLIB_HandleType;
00592 
00601 /*******************************************************************************
00602  **FUNCTION PROTOTYPES                                                        **
00603 *******************************************************************************/
00615 status_t CCU8PWMLIB_Init(const CCU8PWMLIB_HandleType* HandlePtr);
00616 
00628 status_t CCU8PWMLIB_Deinit(const CCU8PWMLIB_HandleType* HandlePtr);
00629 
00641 status_t CCU8PWMLIB_EnableExtStart(const CCU8PWMLIB_HandleType* HandlePtr);
00642 
00656 status_t CCU8PWMLIB_DisableExtStart(const CCU8PWMLIB_HandleType* HandlePtr);
00657 
00672 status_t CCU8PWMLIB_Start(const CCU8PWMLIB_HandleType* HandlePtr);
00673 
00688 status_t CCU8PWMLIB_Stop(const CCU8PWMLIB_HandleType* HandlePtr);
00689 
00706 status_t CCU8PWMLIB_SetCompare
00707 (
00708   const CCU8PWMLIB_HandleType* HandlePtr,
00709   uint32_t Compare1,
00710   uint32_t Compare2
00711   
00712 );
00713 
00732 status_t CCU8PWMLIB_SetDutyCycle
00733 (
00734   const CCU8PWMLIB_HandleType* HandlePtr,
00735   float DutyCycle,
00736   uint32_t Shift,
00737   uint8_t Sign
00738 );
00739 
00759 status_t CCU8PWMLIB_SetPeriod
00760 (
00761   const CCU8PWMLIB_HandleType* HandlePtr,
00762   uint32_t PwmFreq
00763 );
00764 
00786 status_t CCU8PWMLIB_SetPeriodAndCompare
00787 (
00788   const CCU8PWMLIB_HandleType* HandlePtr,
00789   uint32_t PwmFreq,
00790   uint32_t Compare1,
00791   uint32_t Compare2
00792 );
00793 
00807 status_t CCU8PWMLIB_SetPwmFreq
00808 (
00809   const CCU8PWMLIB_HandleType* HandlePtr,
00810   float PwmFreq
00811 );
00829 status_t CCU8PWMLIB_SetPwmFreqAndDutyCycle
00830 (
00831   const CCU8PWMLIB_HandleType* HandlePtr,
00832   float PwmFreq,
00833   float DutyCycle,
00834   uint32_t Shift,
00835   uint8_t Sign
00836 );
00837 
00852 status_t CCU8PWMLIB_SetTimerVal
00853 (
00854   const CCU8PWMLIB_HandleType* HandlePtr,
00855   uint32_t TimerVal
00856 );
00857 
00876 status_t CCU8PWMLIB_SWRequestShadowTransfer
00877 (
00878   const CCU8PWMLIB_HandleType* HandlePtr
00879 );
00880 
00894 status_t CCU8PWMLIB_GetPeriodReg
00895 (
00896   const CCU8PWMLIB_HandleType* HandlePtr,
00897   uint32_t* PeriodRegPtr
00898 );
00899 
00912 status_t CCU8PWMLIB_ResetTrapFlag(const CCU8PWMLIB_HandleType* HandlePtr);
00913 
00928 status_t CCU8PWMLIB_GetTimerRegsVal
00929 (
00930   const CCU8PWMLIB_HandleType* HandlePtr,
00931   CCU8PWMLIB_TimerRegsType* TimerRegsPtr
00932 );
00933 
00947 status_t CCU8PWMLIB_GetTimerStatus
00948 (
00949  const CCU8PWMLIB_HandleType* HandlePtr,
00950  uint32_t* TimerStatusPtr
00951 );
00952 
00967 status_t CCU8PWMLIB_EnableEvent
00968 (
00969      const CCU8PWMLIB_HandleType * HandlePtr,
00970      const CCU8PWMLIB_EventNameType Event
00971 );
00972 
00986 status_t CCU8PWMLIB_DisableEvent
00987 (
00988     const CCU8PWMLIB_HandleType * HandlePtr,
00989     const CCU8PWMLIB_EventNameType Event
00990 );
00991 
01005 status_t CCU8PWMLIB_ClearPendingEvent
01006 (
01007     const CCU8PWMLIB_HandleType * HandlePtr,
01008     const CCU8PWMLIB_EventNameType Event
01009 );
01010 
01025 status_t CCU8PWMLIB_SetPendingEvent
01026 (
01027     const CCU8PWMLIB_HandleType * HandlePtr,
01028     const CCU8PWMLIB_EventNameType Event
01029 );
01030 
01045 status_t CCU8PWMLIB_GetPendingEvent
01046 (
01047     const CCU8PWMLIB_HandleType * HandlePtr,
01048     const CCU8PWMLIB_EventNameType Event,
01049     uint8_t* EvtStatus
01050 );
01051 
01061 status_t CCU8PWMLIB_SetDutyEdgeAlignAsymmetric
01062 (
01063   const void* HdlPtr,
01064   float DutyCycle,
01065   uint32_t Shift,
01066   uint8_t Sign
01067 );
01068 
01078 status_t CCU8PWMLIB_SetDutyEdgeAlignSymmetric
01079 (
01080   const void* HdlPtr,
01081   float DutyCycle,
01082   uint32_t Shift,
01083   uint8_t Sign
01084 );
01085 
01095 status_t CCU8PWMLIB_SetDutyEdgeAlignSymmetricTimerConcat
01096 (
01097   const void* HdlPtr,
01098   float DutyCycle,
01099   uint32_t Shift,
01100   uint8_t Sign
01101 );
01102 
01112 status_t CCU8PWMLIB_SetDutyCenterAlignSymmetric
01113 (
01114   const void*  HandlePtr,
01115   float DutyCycle,
01116   uint32_t Shift,
01117   uint8_t Sign
01118 );
01119 
01129 status_t CCU8PWMLIB_SetDutyCenterAlignAsymmetric
01130 (
01131   const void*  HandlePtr,
01132   float DutyCycle,
01133   uint32_t Shift,
01134   uint8_t Sign
01135 );
01136 
01145 status_t CCU8PWMLIB_SetCompareAsymmetric
01146 (
01147     const void* HdlPtr,
01148     uint32_t Compare1,
01149     uint32_t Compare2
01150 );
01151 
01160 status_t CCU8PWMLIB_SetCompareSymmetric
01161 (
01162     const void* HdlPtr,
01163     uint32_t Compare1,
01164     uint32_t Compare2
01165 );
01166 
01175 status_t CCU8PWMLIB_SetCompareEdgeAlignSymmetricTimerConcat
01176 (
01177     const void* HdlPtr,
01178     uint32_t Compare1,
01179     uint32_t Compare2
01180 );
01181 
01187 #endif /* CCU8PWMLIB_H_ */
01188