31static uint8_t DetermineDivRegVal(
clkFrqDiv_t divVal);
36 const uint8_t cfd0FlagMask = (uint8_t)CLKCTRL_CFD0_bm;
37 const bool isCfd0Error = ((regVal & cfd0FlagMask) == cfd0FlagMask);
52 const uint8_t cfd1FlagMask = (uint8_t)CLKCTRL_CFD1_bm;
53 const bool isCfd1Error = ((regVal & cfd1FlagMask) == cfd1FlagMask);
68 const uint8_t cfm0FlagMask = (uint8_t)CLKCTRL_CFM0_bm;
69 const bool isCfm0Error = ((regVal & cfm0FlagMask) == cfm0FlagMask);
84 const uint8_t cfm1FlagMask = (uint8_t)CLKCTRL_CFM1_bm;
85 const bool isCfm1Error = ((regVal & cfm1FlagMask) == cfm1FlagMask);
99 const uint8_t cfmd0FlagMask = (uint8_t)CLKCTRL_CFMD0_bm;
100 const uint8_t cfmd1FlagMask = (uint8_t)CLKCTRL_CFMD1_bm;
111 if (invalidDiv || invalidFrq || outOfRange)
118 const uint8_t frequencySelMask = (uint8_t)CLKCTRL_FRQSEL_gm;
119 const uint8_t frequencyConfig = ((uint8_t)frequency << CLKCTRL_FRQSEL_gp);
123 const uint8_t clockSelMask = (uint8_t)CLKCTRL_CLKSEL_gm;
124 const uint8_t clockSelConfig = ((uint8_t)CLKCTRL_CLKSEL_OSCHF_gc);
128 const uint8_t regVal = DetermineDivRegVal(divider);
146 const uint8_t clockSource = (uint8_t)src << (uint8_t)CLKCTRL_CFDSRC_gp;
147 const uint8_t clockReference = (uint8_t)ref << (uint8_t)CLKCTRL_CFDREF_gp;
148 const uint8_t cfdEnable = (uint8_t)CLKCTRL_CFDEN_bm;
149 const uint8_t regVal = (clockSource | clockReference | cfdEnable);
169 const uint8_t clockSource = (uint8_t)src << (uint8_t)CLKCTRL_CFDSRC_gp;
170 const uint8_t clockReference = (uint8_t)ref << (uint8_t)CLKCTRL_CFDREF_gp;
171 const uint8_t cfdEnable = (uint8_t)CLKCTRL_CFDEN_bm;
172 const uint8_t regVal = (clockSource | clockReference | cfdEnable);
192 uint8_t type = (uint8_t)CLKCTRL_TYPE_ONESHOT_gc;
195 type = (uint8_t)CLKCTRL_TYPE_CONTINUOUS_gc;
203 const uint8_t refEnableMask = (uint8_t)CLKCTRL_REFCEN_bm;
204 const uint8_t referenceConfig = (uint8_t)ref << CLKCTRL_CFMREF_gp;
205 const uint8_t regValRef = (referenceConfig | refEnableMask);
208 const uint8_t cfmEnableMask = (uint8_t)CLKCTRL_MEN_bm;
209 const uint8_t sourceConfig = (uint8_t)src << CLKCTRL_CFMSRC_gp;
210 const uint8_t regValSrc = (type | sourceConfig | cfmEnableMask);
228 uint8_t type = (uint8_t)CLKCTRL_TYPE_ONESHOT_gc;
231 type = (uint8_t)CLKCTRL_TYPE_CONTINUOUS_gc;
239 const uint8_t refEnableMask = (uint8_t)CLKCTRL_REFCEN_bm;
240 const uint8_t referenceConfig = (uint8_t)ref << CLKCTRL_CFMREF_gp;
241 const uint8_t regValRef = (referenceConfig | refEnableMask);
244 const uint8_t cfmEnableMask = (uint8_t)CLKCTRL_MEN_bm;
245 const uint8_t sourceConfig = (uint8_t)src << CLKCTRL_CFMSRC_gp;
246 const uint8_t regValSrc = (type | sourceConfig | cfmEnableMask);
254 const uint8_t cfdErrorMask = (uint8_t)CLKCTRL_CFD0_bm | (uint8_t)CLKCTRL_CFD1_bm;
255 const uint8_t cfmErrorMask = (uint8_t)CLKCTRL_CFM0_bm | (uint8_t)CLKCTRL_CFM1_bm;
260static uint8_t DetermineDivRegVal(
clkFrqDiv_t divVal)
263 const uint8_t divDisableMask = 0U << CLKCTRL_PEN_bp;
264 const uint8_t defaultDivConfig = (uint8_t)CLKCTRL_PDIV_DIV2_gc;
265 uint8_t regVal = defaultDivConfig | divDisableMask;
269 const uint8_t divConfig = ((uint8_t)divVal << CLKCTRL_PDIV_gp);
270 const uint8_t divEnableMask = (uint8_t)CLKCTRL_PEN_bm;
271 regVal = divConfig | divEnableMask;
errFlag_t
Defines the error flag used by Middleware services to indicate error detection.
void CLKCTRL_WriteCfm1ControlA(uint8_t value)
Overwrites the MCLKCFM1CTRLA register value.
void CLKCTRL_WriteCfd0ControlA(uint8_t value)
Overwrites the MCLKCFD0CTRLA register value.
void CLKCTRL_WriteIntControl(uint8_t value)
Overwrites the MCLKINTCTRL register value.
void CLKCTRL_WriteCfm1WindowHigh(uint16_t value)
Overwrites the MCLKCFM1WINHT register value.
void CLKCTRL_WriteCfm0ControlB(uint8_t value)
Overwrites the MCLKCFM0CTRLB register value.
void CLKCTRL_WriteCfm1WindowLow(uint16_t value)
Overwrites the MCLKCFM1WINLT register value.
void CLKCTRL_WriteCfm1RefNum(uint16_t value)
Overwrites the MCLKCFM1REFNUM register value.
void CLKCTRL_WriteMainControlB(uint8_t value)
Overwrites the MCLKCTRLB register value.
void CLKCTRL_ModifyOscHfControlA(uint8_t groupMask, uint8_t groupConfig)
Modifies specific bit field(s) in the OSCHFCTRLA register.
void CLKCTRL_WriteCfd1ControlA(uint8_t value)
Overwrites the MCLKCFD1CTRLA register value.
void CLKCTRL_WriteCfm0RefNum(uint16_t value)
Overwrites the MCLKCFM0REFNUM register value.
void CLKCTRL_WriteCfm0WindowHigh(uint16_t value)
Overwrites the MCLKCFM0WINHT register value.
void CLKCTRL_WriteCfm1ControlB(uint8_t value)
Overwrites the MCLKCFM1CTRLB register value.
uint8_t CLKCTRL_ReadIntFlags(void)
Reads the MCLKINTFLAGS register value.
void CLKCTRL_ModifyMainControlA(uint8_t groupMask, uint8_t groupConfig)
Modifies specific bit field(s) in the MCLKCTRLA register.
void CLKCTRL_WriteCfm0WindowLow(uint16_t value)
Overwrites the MCLKCFM0WINLT register value.
void CLKCTRL_WriteCfm0ControlA(uint8_t value)
Overwrites the MCLKCFM0CTRLA register value.
void CLKCTRL_WriteIntFlags(uint8_t value)
Overwrites the MCLKINTFLAGS register value.
cfmReference_t
Type definitions for available Clock Frequency Measure (CFM) references used for configuring the CFMs...
errFlag_t MW_GetClearClockCfd0Error(void)
Reads and clears the flag indicating a clock failure detected by CFD0.
cfdSource_t
Type definitions for available Clock Failure Detection (CFD) sources used for configuring the CFDs.
void MW_EnableClockInterrupts(void)
Enables all Clock Failure Detect (CFD) and Clock Frequency Measure (CFM) interrupts.
clkFrq_t
Type definitions for available High Frequency Oscillator output frequencies used for configuring the ...
cfdReference_t
Type definitions for available Clock Failure Detection (CFD) references used for configuring the CFDs...
errFlag_t MW_StartCfd1(cfdSource_t src, cfdReference_t ref)
Starts Clock Failure Detect 1 (CFD1) to monitor the configured clock source with the configured refer...
clkFrqDiv_t
Type definitions for available pre-scaler division used for configuring the main clock.
cfmSource_t
Type definitions for available Clock Frequency Measure (CFM) sources used for configuring the CFMs.
errFlag_t MW_StartCfm0(cfmSource_t src, cfmReference_t ref, cfmWindow_t window, bool useContinuous)
Starts continuous Clock Frequency Measure 0 (CFM0) to monitor the configured clock source with the co...
errFlag_t MW_GetClearClockCfm1Error(void)
Reads and clears the flag indicating a clock frequency error measured by CFM1.
errFlag_t MW_StartCfm1(cfmSource_t src, cfmReference_t ref, cfmWindow_t window, bool useContinuous)
Starts continuous Clock Frequency Measure 1 (CFM1) to monitor the configured clock source with the co...
errFlag_t MW_StartCfd0(cfdSource_t src, cfdReference_t ref)
Starts Clock Failure Detect 0 (CFD0) to monitor the configured clock source with the configured refer...
errFlag_t MW_SetMainClockFrequency(clkFrq_t frequency, clkFrqDiv_t divider)
Initializes main clock with internal High Frequency Oscillator (OSCHF) as clock source.
void MW_ClearClockCfmDoneFlags(void)
Clears the Clock Frequency Measure Done (CFMDn) flags indicating that a clock frequency measurement i...
errFlag_t MW_GetClearClockCfd1Error(void)
Reads and clears the flag indicating a clock failure detected by CFD1.
errFlag_t MW_GetClearClockCfm0Error(void)
Reads and clears the flag indicating a clock frequency error measured by CFM0.
Struct for configuring the Clock Frequency Measure window.