82 #ifndef INC_LLD_OC_TIMER_LLD_H_ 83 #define INC_LLD_OC_TIMER_LLD_H_ 86 #include <oc_errors.h> 89 #if oC_Channel_IsModuleDefined(TIMER) == false 90 #error TIMER module channels are not defined 91 #elif oC_ModulePinFunctions_IsModuleDefined(TIMER) == false 92 #error TIMER module pin functions are not defined 93 #elif oC_ModulePin_IsModuleDefined(TIMER) == false 94 #error TIMER module pins are not defined 102 #define _________________________________________TYPES_SECTION______________________________________________________________________________ 103 #define MODULE_NAME TIMER 126 oC_ModulePinFunction_DefineType;
137 oC_ModulePin_DefineType;
157 oC_TIMER_LLD_CountDirection_DoesntMatter ,
158 oC_TIMER_LLD_CountDirection_Up ,
159 oC_TIMER_LLD_CountDirection_Down
160 } oC_TIMER_LLD_CountDirection_t;
171 oC_TIMER_LLD_Mode_NotSelected ,
172 oC_TIMER_LLD_Mode_Reserved ,
173 oC_TIMER_LLD_Mode_PeriodicTimer ,
174 oC_TIMER_LLD_Mode_InputEdgeCount ,
175 oC_TIMER_LLD_Mode_InputEdgeTime ,
176 oC_TIMER_LLD_Mode_RealTimeClock ,
177 oC_TIMER_LLD_Mode_PWM
178 } oC_TIMER_LLD_Mode_t;
189 oC_TIMER_LLD_Trigger_None ,
190 oC_TIMER_LLD_Trigger_RisingEdge ,
191 oC_TIMER_LLD_Trigger_FallingEdge ,
192 oC_TIMER_LLD_Trigger_Both
193 } oC_TIMER_LLD_Trigger_t;
204 oC_TIMER_LLD_PwmState_Low ,
205 oC_TIMER_LLD_PwmState_High
206 } oC_TIMER_LLD_PwmState_t;
217 oC_TIMER_LLD_EventFlags_MatchValueInterrupt = (1<<0) ,
218 oC_TIMER_LLD_EventFlags_TimeoutInterrupt = (1<<1) ,
219 oC_TIMER_LLD_EventFlags_MaximumCountOfEdgesOccurs = (1<<2) ,
220 oC_TIMER_LLD_EventFlags_EdgeDetect = (1<<3) ,
221 oC_TIMER_LLD_EventFlags_PwmPinInHighState = (1<<4) ,
222 oC_TIMER_LLD_EventFlags_PwmPinInLowState = (1<<5) ,
223 oC_TIMER_LLD_EventFlags_All = 0xFFFFFFFFUL ,
224 } oC_TIMER_LLD_EventFlags_t;
235 oC_TIMER_LLD_SubTimer_None = 0 ,
236 oC_TIMER_LLD_SubTimer_TimerA = (1<<0) ,
237 oC_TIMER_LLD_SubTimer_TimerB = (1<<1) ,
238 oC_TIMER_LLD_SubTimer_Both = oC_TIMER_LLD_SubTimer_TimerA | oC_TIMER_LLD_SubTimer_TimerB
239 } oC_TIMER_LLD_SubTimer_t;
254 typedef void (*oC_TIMER_LLD_EventHandler_t)(oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , oC_TIMER_LLD_EventFlags_t EventFlags );
257 #undef _________________________________________TYPES_SECTION______________________________________________________________________________ 265 #define _________________________________________MACROS_SECTION_____________________________________________________________________________ 288 #define oC_TIMER_LLD_ForEachChannel( Channel ) oC_Channel_Foreach( TIMER , Channel ) 291 #undef _________________________________________MACROS_SECTION_____________________________________________________________________________ 299 #define _________________________________________FUNCTIONS_SECTION__________________________________________________________________________ 312 extern oC_ErrorCode_t oC_TIMER_LLD_TurnOnDriver(
void );
324 extern oC_ErrorCode_t oC_TIMER_LLD_TurnOffDriver(
void );
336 extern bool oC_TIMER_LLD_IsChannelCorrect( oC_TIMER_Channel_t Channel );
348 extern bool oC_TIMER_LLD_IsChannelIndexCorrect(
oC_ChannelIndex_t ChannelIndex );
360 extern bool oC_TIMER_LLD_IsModulePinDefined( oC_TIMER_Pin_t ModulePin );
373 extern bool oC_TIMER_LLD_IsSubTimerCorrect(oC_TIMER_LLD_SubTimer_t SubTimer);
385 extern oC_Pin_t oC_TIMER_LLD_GetPinOfModulePin( oC_TIMER_Pin_t ModulePin );
398 extern const char * oC_TIMER_LLD_GetModulePinName( oC_TIMER_Pin_t ModulePin );
410 extern const char * oC_TIMER_LLD_GetChannelName( oC_TIMER_Channel_t Channel );
422 extern oC_TIMER_Channel_t oC_TIMER_LLD_GetChannelOfModulePin( oC_TIMER_Pin_t ModulePin );
434 extern oC_ChannelIndex_t oC_TIMER_LLD_ChannelToChannelIndex( oC_TIMER_Channel_t Channel );
446 extern oC_TIMER_Channel_t oC_TIMER_LLD_ChannelIndexToChannel(
oC_ChannelIndex_t ChannelIndex );
460 extern oC_ErrorCode_t oC_TIMER_LLD_SetPower( oC_TIMER_Channel_t Channel ,
oC_Power_t Power );
473 extern oC_ErrorCode_t oC_TIMER_LLD_ReadPower( oC_TIMER_Channel_t Channel ,
oC_Power_t * outPower );
486 extern bool oC_TIMER_LLD_RestoreDefaultStateOnChannel( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer);
499 extern oC_ErrorCode_t oC_TIMER_LLD_TimerStart( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer);
512 extern oC_ErrorCode_t oC_TIMER_LLD_TimerStop( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer);
529 extern oC_ErrorCode_t oC_TIMER_LLD_ChangeFrequency( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer ,
oC_Frequency_t Frequency ,
oC_Frequency_t PermissibleDifference );
545 extern oC_ErrorCode_t oC_TIMER_LLD_ReadFrequency( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer ,
oC_Frequency_t * outFrequency );
561 extern oC_ErrorCode_t oC_TIMER_LLD_ChangeMaximumValue( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , uint64_t Value );
577 extern oC_ErrorCode_t oC_TIMER_LLD_ReadMaximumValue( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , uint64_t * outValue );
591 extern oC_ErrorCode_t oC_TIMER_LLD_ChangeCurrentValue( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , uint64_t Value );
607 extern oC_ErrorCode_t oC_TIMER_LLD_ReadCurrentValue( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , uint64_t * outValue );
623 extern oC_ErrorCode_t oC_TIMER_LLD_ChangeMatchValue( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , uint64_t Value );
639 extern oC_ErrorCode_t oC_TIMER_LLD_ReadMatchValue( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , uint64_t * outValue );
655 extern oC_ErrorCode_t oC_TIMER_LLD_ChangeMode( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , oC_TIMER_LLD_Mode_t Mode );
671 extern oC_ErrorCode_t oC_TIMER_LLD_ReadMode( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , oC_TIMER_LLD_Mode_t * outMode );
687 extern oC_ErrorCode_t oC_TIMER_LLD_ChangeCountDirection( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , oC_TIMER_LLD_CountDirection_t CountDirection );
703 extern oC_ErrorCode_t oC_TIMER_LLD_ReadCountDirection( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer, oC_TIMER_LLD_CountDirection_t * outCountDirection );
720 extern oC_ErrorCode_t oC_TIMER_LLD_ChangeTrigger( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , oC_TIMER_LLD_Trigger_t Trigger );
735 extern oC_ErrorCode_t oC_TIMER_LLD_ReadTrigger( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , oC_TIMER_LLD_Trigger_t * outTrigger );
769 extern oC_ErrorCode_t oC_TIMER_LLD_ChangeEventHandler( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , oC_TIMER_LLD_EventHandler_t EventHandler , oC_TIMER_LLD_EventFlags_t EventFlags );
786 extern oC_ErrorCode_t oC_TIMER_LLD_ReadEventHandler(oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , oC_TIMER_LLD_EventHandler_t * outEventHandler , oC_TIMER_LLD_EventFlags_t * outEventFlags );
803 extern oC_ErrorCode_t oC_TIMER_LLD_ChangeStartPwmState( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer, oC_TIMER_LLD_PwmState_t State);
820 extern oC_ErrorCode_t oC_TIMER_LLD_ReadStartPwmState( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , oC_TIMER_LLD_PwmState_t * outState);
833 extern oC_ErrorCode_t oC_TIMER_LLD_ConnectModulePin(oC_TIMER_Pin_t PeripheralPin );
860 extern oC_ErrorCode_t oC_TIMER_LLD_ReadSubTimerOfModulePin(oC_TIMER_Pin_t PeripheralPin , oC_TIMER_LLD_SubTimer_t * outSubTimer );
876 extern oC_ErrorCode_t oC_TIMER_LLD_SetChannelUsed( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer );
892 extern oC_ErrorCode_t oC_TIMER_LLD_SetChannelUnused( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer );
907 extern bool oC_TIMER_LLD_IsChannelUsed( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer );
938 extern oC_ErrorCode_t oC_TIMER_LLD_ReadModulePinsOfPin( oC_Pin_t Pin , oC_TIMER_Pin_t * outPeripheralPinsArray , uint32_t * ArraySize );
940 #undef _________________________________________FUNCTIONS_SECTION__________________________________________________________________________ The file with frequency definitions.
double oC_Frequency_t
type to store frequency
#define oC_ModuleChannel_DefineType
defines module channel type
oC_Channel_t
stores machine channel
The file with interface for the machine module.
oC_Power_t
stores registers power state