Choco OS  V.0.16.9.0
Join to the chocolate world
oc_timer_lld.h
Go to the documentation of this file.
1 
82 #ifndef INC_LLD_OC_TIMER_LLD_H_
83 #define INC_LLD_OC_TIMER_LLD_H_
84 
85 #include <oc_machine.h>
86 #include <oc_errors.h>
87 #include <oc_frequency.h>
88 
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
95 #else
96 
102 #define _________________________________________TYPES_SECTION______________________________________________________________________________
103 #define MODULE_NAME TIMER
106 
107 //==========================================================================================================================================
114 //==========================================================================================================================================
116 
117 //==========================================================================================================================================
125 //==========================================================================================================================================
126 oC_ModulePinFunction_DefineType;
127 
128 //==========================================================================================================================================
136 //==========================================================================================================================================
137 oC_ModulePin_DefineType;
138 
139 //==========================================================================================================================================
145 //==========================================================================================================================================
146 typedef oC_ChannelIndex_t oC_TIMER_LLD_ChannelIndex_t;
147 
148 //==========================================================================================================================================
154 //==========================================================================================================================================
155 typedef enum
156 {
157  oC_TIMER_LLD_CountDirection_DoesntMatter ,
158  oC_TIMER_LLD_CountDirection_Up ,
159  oC_TIMER_LLD_CountDirection_Down
160 } oC_TIMER_LLD_CountDirection_t;
161 
162 //==========================================================================================================================================
168 //==========================================================================================================================================
169 typedef enum
170 {
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;
179 
180 //==========================================================================================================================================
186 //==========================================================================================================================================
187 typedef enum
188 {
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;
194 
195 //==========================================================================================================================================
201 //==========================================================================================================================================
202 typedef enum
203 {
204  oC_TIMER_LLD_PwmState_Low ,
205  oC_TIMER_LLD_PwmState_High
206 } oC_TIMER_LLD_PwmState_t;
207 
208 //==========================================================================================================================================
214 //==========================================================================================================================================
215 typedef enum
216 {
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;
225 
226 //==========================================================================================================================================
232 //==========================================================================================================================================
233 typedef enum
234 {
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;
240 
241 //==========================================================================================================================================
253 //==========================================================================================================================================
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 );
255 
256 #undef MODULE_NAME
257 #undef _________________________________________TYPES_SECTION______________________________________________________________________________
258 
265 #define _________________________________________MACROS_SECTION_____________________________________________________________________________
266 
269 //==========================================================================================================================================
287 //==========================================================================================================================================
288 #define oC_TIMER_LLD_ForEachChannel( Channel ) oC_Channel_Foreach( TIMER , Channel )
289 
290 
291 #undef _________________________________________MACROS_SECTION_____________________________________________________________________________
292 
299 #define _________________________________________FUNCTIONS_SECTION__________________________________________________________________________
300 //==========================================================================================================================================
311 //==========================================================================================================================================
312 extern oC_ErrorCode_t oC_TIMER_LLD_TurnOnDriver( void );
313 //==========================================================================================================================================
323 //==========================================================================================================================================
324 extern oC_ErrorCode_t oC_TIMER_LLD_TurnOffDriver( void );
325 //==========================================================================================================================================
335 //==========================================================================================================================================
336 extern bool oC_TIMER_LLD_IsChannelCorrect( oC_TIMER_Channel_t Channel );
337 //==========================================================================================================================================
347 //==========================================================================================================================================
348 extern bool oC_TIMER_LLD_IsChannelIndexCorrect( oC_ChannelIndex_t ChannelIndex );
349 //==========================================================================================================================================
359 //==========================================================================================================================================
360 extern bool oC_TIMER_LLD_IsModulePinDefined( oC_TIMER_Pin_t ModulePin );
361 
362 //==========================================================================================================================================
372 //==========================================================================================================================================
373 extern bool oC_TIMER_LLD_IsSubTimerCorrect(oC_TIMER_LLD_SubTimer_t SubTimer);
374 //==========================================================================================================================================
384 //==========================================================================================================================================
385 extern oC_Pin_t oC_TIMER_LLD_GetPinOfModulePin( oC_TIMER_Pin_t ModulePin );
386 //==========================================================================================================================================
397 //==========================================================================================================================================
398 extern const char * oC_TIMER_LLD_GetModulePinName( oC_TIMER_Pin_t ModulePin );
399 //==========================================================================================================================================
409 //==========================================================================================================================================
410 extern const char * oC_TIMER_LLD_GetChannelName( oC_TIMER_Channel_t Channel );
411 //==========================================================================================================================================
421 //==========================================================================================================================================
422 extern oC_TIMER_Channel_t oC_TIMER_LLD_GetChannelOfModulePin( oC_TIMER_Pin_t ModulePin );
423 //==========================================================================================================================================
433 //==========================================================================================================================================
434 extern oC_ChannelIndex_t oC_TIMER_LLD_ChannelToChannelIndex( oC_TIMER_Channel_t Channel );
435 //==========================================================================================================================================
445 //==========================================================================================================================================
446 extern oC_TIMER_Channel_t oC_TIMER_LLD_ChannelIndexToChannel( oC_ChannelIndex_t ChannelIndex );
447 
448 //==========================================================================================================================================
459 //==========================================================================================================================================
460 extern oC_ErrorCode_t oC_TIMER_LLD_SetPower( oC_TIMER_Channel_t Channel , oC_Power_t Power );
461 //==========================================================================================================================================
472 //==========================================================================================================================================
473 extern oC_ErrorCode_t oC_TIMER_LLD_ReadPower( oC_TIMER_Channel_t Channel , oC_Power_t * outPower );
474 //==========================================================================================================================================
485 //==========================================================================================================================================
486 extern bool oC_TIMER_LLD_RestoreDefaultStateOnChannel( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer);
487 //==========================================================================================================================================
498 //==========================================================================================================================================
499 extern oC_ErrorCode_t oC_TIMER_LLD_TimerStart( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer);
500 //==========================================================================================================================================
511 //==========================================================================================================================================
512 extern oC_ErrorCode_t oC_TIMER_LLD_TimerStop( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer);
513 //==========================================================================================================================================
528 //==========================================================================================================================================
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 );
530 //==========================================================================================================================================
544 //==========================================================================================================================================
545 extern oC_ErrorCode_t oC_TIMER_LLD_ReadFrequency( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , oC_Frequency_t * outFrequency );
546 //==========================================================================================================================================
560 //==========================================================================================================================================
561 extern oC_ErrorCode_t oC_TIMER_LLD_ChangeMaximumValue( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , uint64_t Value );
562 //==========================================================================================================================================
576 //==========================================================================================================================================
577 extern oC_ErrorCode_t oC_TIMER_LLD_ReadMaximumValue( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , uint64_t * outValue );
578 //==========================================================================================================================================
590 //==========================================================================================================================================
591 extern oC_ErrorCode_t oC_TIMER_LLD_ChangeCurrentValue( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , uint64_t Value );
592 //==========================================================================================================================================
606 //==========================================================================================================================================
607 extern oC_ErrorCode_t oC_TIMER_LLD_ReadCurrentValue( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , uint64_t * outValue );
608 //==========================================================================================================================================
622 //==========================================================================================================================================
623 extern oC_ErrorCode_t oC_TIMER_LLD_ChangeMatchValue( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , uint64_t Value );
624 //==========================================================================================================================================
638 //==========================================================================================================================================
639 extern oC_ErrorCode_t oC_TIMER_LLD_ReadMatchValue( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer , uint64_t * outValue );
640 //==========================================================================================================================================
654 //==========================================================================================================================================
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 );
656 //==========================================================================================================================================
670 //==========================================================================================================================================
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 );
672 //==========================================================================================================================================
686 //==========================================================================================================================================
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 );
688 //==========================================================================================================================================
702 //==========================================================================================================================================
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 );
704 //==========================================================================================================================================
719 //==========================================================================================================================================
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 );
721 //==========================================================================================================================================
734 //==========================================================================================================================================
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 );
736 //==========================================================================================================================================
768 //==========================================================================================================================================
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 );
770 //==========================================================================================================================================
785 //==========================================================================================================================================
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 );
787 //==========================================================================================================================================
802 //==========================================================================================================================================
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);
804 //==========================================================================================================================================
819 //==========================================================================================================================================
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);
821 //==========================================================================================================================================
832 //==========================================================================================================================================
833 extern oC_ErrorCode_t oC_TIMER_LLD_ConnectModulePin(oC_TIMER_Pin_t PeripheralPin );
834 //==========================================================================================================================================
859 //==========================================================================================================================================
860 extern oC_ErrorCode_t oC_TIMER_LLD_ReadSubTimerOfModulePin(oC_TIMER_Pin_t PeripheralPin , oC_TIMER_LLD_SubTimer_t * outSubTimer );
861 //==========================================================================================================================================
875 //==========================================================================================================================================
876 extern oC_ErrorCode_t oC_TIMER_LLD_SetChannelUsed( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer );
877 //==========================================================================================================================================
891 //==========================================================================================================================================
892 extern oC_ErrorCode_t oC_TIMER_LLD_SetChannelUnused( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer );
893 //==========================================================================================================================================
906 //==========================================================================================================================================
907 extern bool oC_TIMER_LLD_IsChannelUsed( oC_TIMER_Channel_t Channel , oC_TIMER_LLD_SubTimer_t SubTimer );
908 //==========================================================================================================================================
937 //==========================================================================================================================================
938 extern oC_ErrorCode_t oC_TIMER_LLD_ReadModulePinsOfPin( oC_Pin_t Pin , oC_TIMER_Pin_t * outPeripheralPinsArray , uint32_t * ArraySize );
939 
940 #undef _________________________________________FUNCTIONS_SECTION__________________________________________________________________________
941 
943 #endif /* TIMER module defined */
944 #endif /* INC_LLD_OC_TIMER_LLD_H_ */
The file with frequency definitions.
double oC_Frequency_t
type to store frequency
Definition: oc_frequency.h:76
#define oC_ModuleChannel_DefineType
defines module channel type
Definition: oc_channels.h:541
oC_Channel_t
stores machine channel
Definition: oc_channels.h:573
The file with interface for the machine module.
oC_Power_t
stores registers power state
Definition: oc_stdtypes.h:249