+ uint8_t ClockSourceMask = 0;\r
+ \r
+ switch (Source)\r
+ {\r
+ case CLOCK_SRC_INT_RC2MHZ:\r
+ ClockSourceMask = CLK_SCLKSEL_RC2M_gc;\r
+ break;\r
+ case CLOCK_SRC_INT_RC32MHZ:\r
+ ClockSourceMask = CLK_SCLKSEL_RC32M_gc;\r
+ break;\r
+ case CLOCK_SRC_INT_RC32KHZ:\r
+ ClockSourceMask = CLK_SCLKSEL_RC32K_gc;\r
+ break;\r
+ case CLOCK_SRC_XOSC:\r
+ ClockSourceMask = CLK_SCLKSEL_XOSC_gc;\r
+ break;\r
+ case CLOCK_SRC_PLL:\r
+ ClockSourceMask = CLK_SCLKSEL_PLL_gc;\r
+ break;\r
+ default:\r
+ return false;\r
+ }\r
+ \r
+ uint_reg_t CurrentGlobalInt = GetGlobalInterruptMask();\r
+ GlobalInterruptDisable();\r
+\r
+ CCP = CCP_IOREG_gc;\r
+ CLK.CTRL = ClockSourceMask;\r
+ \r
+ SetGlobalInterruptMask(CurrentGlobalInt);\r
+ \r
+ Delay_MS(1); \r
+ return (CLK.CTRL == ClockSourceMask);\r