diff --git a/ARM/gcc_clang/cmake/sam/atsam_d21_da1.cmake b/ARM/gcc_clang/cmake/sam/atsam_d21_da1.cmake new file mode 100644 index 000000000..bd8fb15fe --- /dev/null +++ b/ARM/gcc_clang/cmake/sam/atsam_d21_da1.cmake @@ -0,0 +1,7 @@ +if(${MCU_NAME} MATCHES "^ATSAMD21E15$|^ATSAMD21E15L$|^ATSAMD21E16$|^ATSAMD21E16L$|^ATSAMD21E17$|^ATSAMD21E17L$|^ATSAMD21E18$|^ATSAMD21G15$|^ATSAMD21G16$|^ATSAMD21G16L$|^ATSAMD21G17$|^ATSAMD21G17L$|^ATSAMD21G18$|^ATSAMD21J15$|^ATSAMD21J16$|^ATSAMD21J17$|^ATSAMD21J18$|^ATSAMDA1E15B$|^ATSAMDA1E16B$|^ATSAMDA1G14B$|^ATSAMDA1G16B$|^ATSAMDA1J14B$|^ATSAMDA1J15B") + set(${linkerScript} linker_scripts/${vendor}/${mcu_match}.ld PARENT_SCOPE) + set(${startupFile} startup/${vendor}/${mcu_match}.c PARENT_SCOPE) + list(APPEND local_list_include system/src/sam/system_sam_d21_da1.c) + list(APPEND local_list_include common/syscalls.c) +endif() + diff --git a/ARM/gcc_clang/cmake/sam/delays/atsam_d21_da1.cmake b/ARM/gcc_clang/cmake/sam/delays/atsam_d21_da1.cmake new file mode 100644 index 000000000..ead6284be --- /dev/null +++ b/ARM/gcc_clang/cmake/sam/delays/atsam_d21_da1.cmake @@ -0,0 +1,3 @@ +if(${MCU_NAME} MATCHES "^ATSAMD21E15$|^ATSAMD21E15L$|^ATSAMD21E16$|^ATSAMD21E16L$|^ATSAMD21E17$|^ATSAMD21E17L$|^ATSAMD21E18$|^ATSAMD21G15$|^ATSAMD21G16$|^ATSAMD21G16L$|^ATSAMD21G17$|^ATSAMD21G17L$|^ATSAMD21G18$|^ATSAMD21J15$|^ATSAMD21J16$|^ATSAMD21J17$|^ATSAMD21J18$|^ATSAMDA1E15B$|^ATSAMDA1E16B$|^ATSAMDA1G14B$|^ATSAMDA1G16B$|^ATSAMDA1J14B$|^ATSAMDA1J15B$") + list(APPEND local_list_macros "getClockValue(_clock) (_clock/1000UL/4)") +endif() diff --git a/ARM/gcc_clang/def/ATSAMD21E15A.json b/ARM/gcc_clang/def/ATSAMD21E15A.json new file mode 100644 index 000000000..18c8d929c --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21E15A.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21E15A", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21E15B.json b/ARM/gcc_clang/def/ATSAMD21E15B.json new file mode 100644 index 000000000..1ad907ab3 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21E15B.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21E15B", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21E15C.json b/ARM/gcc_clang/def/ATSAMD21E15C.json new file mode 100644 index 000000000..d03ad6cd8 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21E15C.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21E15C", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21E15L.json b/ARM/gcc_clang/def/ATSAMD21E15L.json new file mode 100644 index 000000000..6f49a3fc3 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21E15L.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21E15L", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21E16A.json b/ARM/gcc_clang/def/ATSAMD21E16A.json new file mode 100644 index 000000000..cdc136235 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21E16A.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21E16A", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21E16B.json b/ARM/gcc_clang/def/ATSAMD21E16B.json new file mode 100644 index 000000000..3a191423c --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21E16B.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21E16B", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21E16C.json b/ARM/gcc_clang/def/ATSAMD21E16C.json new file mode 100644 index 000000000..c2e7678f4 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21E16C.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21E16C", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21E16L.json b/ARM/gcc_clang/def/ATSAMD21E16L.json new file mode 100644 index 000000000..a4f548b2c --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21E16L.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21E16L", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21E17A.json b/ARM/gcc_clang/def/ATSAMD21E17A.json new file mode 100644 index 000000000..cc3f2b236 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21E17A.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21E17A", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21E17D.json b/ARM/gcc_clang/def/ATSAMD21E17D.json new file mode 100644 index 000000000..74d80d588 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21E17D.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21E17D", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21E17L.json b/ARM/gcc_clang/def/ATSAMD21E17L.json new file mode 100644 index 000000000..9c6c03c91 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21E17L.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21E17L", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21E18A.json b/ARM/gcc_clang/def/ATSAMD21E18A.json new file mode 100644 index 000000000..062bacb5f --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21E18A.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21E18A", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21G15A.json b/ARM/gcc_clang/def/ATSAMD21G15A.json new file mode 100644 index 000000000..5404518f3 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21G15A.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21G15A", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21G15B.json b/ARM/gcc_clang/def/ATSAMD21G15B.json new file mode 100644 index 000000000..81d1a1692 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21G15B.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21G15B", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21G16A.json b/ARM/gcc_clang/def/ATSAMD21G16A.json new file mode 100644 index 000000000..5d7027464 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21G16A.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21G16A", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21G16B.json b/ARM/gcc_clang/def/ATSAMD21G16B.json new file mode 100644 index 000000000..687f26799 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21G16B.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21G16B", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21G16L.json b/ARM/gcc_clang/def/ATSAMD21G16L.json new file mode 100644 index 000000000..6cae9825c --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21G16L.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21G16L", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21G17A.json b/ARM/gcc_clang/def/ATSAMD21G17A.json new file mode 100644 index 000000000..82a0d00e8 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21G17A.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21G17A", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21G17D.json b/ARM/gcc_clang/def/ATSAMD21G17D.json new file mode 100644 index 000000000..a225abf49 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21G17D.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21G17D", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21G17L.json b/ARM/gcc_clang/def/ATSAMD21G17L.json new file mode 100644 index 000000000..44f384559 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21G17L.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21G17L", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21G18A.json b/ARM/gcc_clang/def/ATSAMD21G18A.json new file mode 100644 index 000000000..012b94634 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21G18A.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21G18A", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21J15A.json b/ARM/gcc_clang/def/ATSAMD21J15A.json new file mode 100644 index 000000000..e5a802ba2 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21J15A.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21J15A", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21J15B.json b/ARM/gcc_clang/def/ATSAMD21J15B.json new file mode 100644 index 000000000..24502f950 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21J15B.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21J15B", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21J16A.json b/ARM/gcc_clang/def/ATSAMD21J16A.json new file mode 100644 index 000000000..e501725ab --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21J16A.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21J16A", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21J16B.json b/ARM/gcc_clang/def/ATSAMD21J16B.json new file mode 100644 index 000000000..68cf8e85d --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21J16B.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21J16B", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21J17A.json b/ARM/gcc_clang/def/ATSAMD21J17A.json new file mode 100644 index 000000000..42a244971 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21J17A.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21J17A", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21J17D.json b/ARM/gcc_clang/def/ATSAMD21J17D.json new file mode 100644 index 000000000..3adeec6a4 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21J17D.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21J18A", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMD21J18A.json b/ARM/gcc_clang/def/ATSAMD21J18A.json new file mode 100644 index 000000000..3adeec6a4 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMD21J18A.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMD21J18A", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMDA1E14B.json b/ARM/gcc_clang/def/ATSAMDA1E14B.json new file mode 100644 index 000000000..b33e2d516 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMDA1E14B.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMDA1E14B", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMDA1E15B.json b/ARM/gcc_clang/def/ATSAMDA1E15B.json new file mode 100644 index 000000000..fd4345c68 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMDA1E15B.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMDA1E15B", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMDA1E16B.json b/ARM/gcc_clang/def/ATSAMDA1E16B.json new file mode 100644 index 000000000..d22c5e010 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMDA1E16B.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMDA1E16B", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMDA1G14B.json b/ARM/gcc_clang/def/ATSAMDA1G14B.json new file mode 100644 index 000000000..157d80c80 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMDA1G14B.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMDA1G14B", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMDA1G15B.json b/ARM/gcc_clang/def/ATSAMDA1G15B.json new file mode 100644 index 000000000..f4b439954 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMDA1G15B.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMDA1G15B", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMDA1G16B.json b/ARM/gcc_clang/def/ATSAMDA1G16B.json new file mode 100644 index 000000000..251a03e7c --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMDA1G16B.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMDA1G16B", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMDA1J14B.json b/ARM/gcc_clang/def/ATSAMDA1J14B.json new file mode 100644 index 000000000..61379b400 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMDA1J14B.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMDA1J14B", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMDA1J15B.json b/ARM/gcc_clang/def/ATSAMDA1J15B.json new file mode 100644 index 000000000..f86c4b717 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMDA1J15B.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMDA1J15B", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/def/ATSAMDA1J16B.json b/ARM/gcc_clang/def/ATSAMDA1J16B.json new file mode 100644 index 000000000..38bfa3009 --- /dev/null +++ b/ARM/gcc_clang/def/ATSAMDA1J16B.json @@ -0,0 +1,2778 @@ +{ + "core": "M0+", + "delay_src_path": "delays/m0+/__lib_delays.c", + "mcu": "ATSAMDA1J16B", + "clock": 8, + "config_registers": [ + { + "address": "40000408", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "CPUDIV", + "label": "CPU Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "CPUSEL", + "unused": "00000000" + }, + { + "address": "40000409", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBADIV", + "label": "APBA Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBASEL", + "unused": "00000000" + }, + { + "address": "4000040A", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBBDIV", + "label": "APBB Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBBSEL", + "unused": "00000000" + }, + { + "address": "4000040B", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "APBCDIV", + "label": "APBC Prescaler Selection", + "mask": "00000007", + "settings": [ + { + "label": "Divide by 1", + "value": "00000000" + }, + { + "label": "Divide by 2", + "value": "00000001" + }, + { + "label": "Divide by 4", + "value": "00000002" + }, + { + "label": "Divide by 8", + "value": "00000003" + }, + { + "label": "Divide by 16", + "value": "00000004" + }, + { + "label": "Divide by 32", + "value": "00000005" + }, + { + "label": "Divide by 64", + "value": "00000006" + }, + { + "label": "Divide by 128", + "value": "00000007" + } + ] + } + ], + "key": "APBCSEL", + "unused": "00000000" + }, + { + "address": "41004004", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "RWS", + "label": "NVM Read Wait States", + "mask": "0000001E", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + } + ], + "key": "NVMCTRL_CTRLB", + "unused": "00000000" + }, + { + "address": "40000820", + "default": "87070382", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "OSC8M oscillator enable", + "mask": "00000002", + "settings": [ + { + "label": "OSC8M oscillator disable", + "value": "00000000" + }, + { + "label": "OSC8M oscillator enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "OSC8M On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "OSC8M Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "PRESC", + "label": "OSC8M Oscillator prescaler", + "mask": "00000300", + "settings": [ + { + "label": "1", + "value": "00000000" + }, + { + "label": "2", + "value": "00000100" + }, + { + "label": "4", + "value": "00000200" + }, + { + "label": "8", + "value": "00000300" + } + ] + } + ], + "key": "OSC8M", + "unused": "00000000" + }, + { + "address": "40000818", + "default": "003F0080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "OSC32K 32kHz Output Enable", + "mask": "00000004", + "settings": [ + { + "label": "32kHz Output Disable", + "value": "00000000" + }, + { + "label": "32kHz Output Enable", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz Internal Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz Internal Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz Internal Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The OSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The OSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz Internal Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "3 Clock Cycles (92us)", + "value": "00000000" + }, + { + "label": "4 Clock Cycles (122us)", + "value": "00000100" + }, + { + "label": "6 Clock Cycles (183us)", + "value": "00000200" + }, + { + "label": "10 Clock Cycles (305us)", + "value": "00000300" + }, + { + "label": "18 Clock Cycles (549us)", + "value": "00000400" + }, + { + "label": "34 Clock Cycles (1038us)", + "value": "00000500" + }, + { + "label": "66 Clock Cycles (2014us)", + "value": "00000600" + }, + { + "label": "130 Clock Cycles (3967us)", + "value": "00000700" + } + ] + } + ], + "key": "OSC32K", + "unused": "00000000" + }, + { + "address": "40000814", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz External Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz External Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "32kHz External Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "EN32K", + "label": "32kHz External Oscillator Output Enable", + "mask": "00000008", + "settings": [ + { + "label": "32kHz External Oscillator Output Disable", + "value": "00000000" + }, + { + "label": "32kHz External Oscillator Output Enable", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "32kHz External Oscillator On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "32kHz External Oscillator Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WRTLOCK", + "label": "32kHz External Oscillator Write Lock", + "mask": "00001000", + "settings": [ + { + "label": "The XOSC32K configuration is not locked", + "value": "00000000" + }, + { + "label": "The XOSC32K configuration is locked", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "32kHz External Oscillator Start-Up Time", + "mask": "00000700", + "settings": [ + { + "label": "1 OSCULP32K clock cycle (122us)", + "value": "00000000" + }, + { + "label": "32 OSCULP32K clock cycles (1068us)", + "value": "00000100" + }, + { + "label": "2048 OSCULP32K clock cycles (62592us)", + "value": "00000200" + }, + { + "label": "4096 OSCULP32K clock cycles (1125092us)", + "value": "00000300" + }, + { + "label": "16384 OSCULP32K clock cycles (500092us)", + "value": "00000400" + }, + { + "label": "32768 OSCULP32K clock cycles (1000092us)", + "value": "00000500" + }, + { + "label": "65536 OSCULP32K clock cycles (2000092us)", + "value": "00000600" + }, + { + "label": "131072 OSCULP32K clock cycles (4000092us)", + "value": "00000700" + } + ] + } + ], + "key": "XOSC32K", + "unused": "00000000" + }, + { + "address": "4000081C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "32kHz Ultra Low Power Internal Oscillator Disable", + "value": "00000000" + }, + { + "label": "32kHz Ultra Low Power Internal Oscillator Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "WRTLOCK", + "label": "OSCULP32K Write Lock", + "mask": "00000080", + "settings": [ + { + "label": "OSCULP32K configuration is not locked.", + "value": "00000000" + }, + { + "label": "OSCULP32K configuration is locked.", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000080", + "key": "CALIB", + "label": "OSCULP32K Oscillator Calibration", + "mask": "0000001F", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "255", + "min_value": "0" + } + } + ], + "key": "OSCULP32K", + "unused": "00000000" + }, + { + "address": "40000810", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000002", + "key": "ENABLE", + "label": "XOSC Oscillator Enable", + "mask": "00000002", + "settings": [ + { + "label": "XOSC Disable", + "value": "00000000" + }, + { + "label": "XOSC Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "XTALEN", + "label": "XOSC Crystal Oscillator Enable", + "mask": "00000004", + "settings": [ + { + "label": "External clock connected on XIN32", + "value": "00000000" + }, + { + "label": "Crystal connected to XIN32/XOUT32", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "XOSC On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "XOSC Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "AAMPEN", + "label": "XOSC Automatic Amplitude Control Enable", + "mask": "00000020", + "settings": [ + { + "label": "The automatic amplitude control for the crystal oscillator is disabled.", + "value": "00000000" + }, + { + "label": "The automatic amplitude control for the crystal oscillator is enabled.", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GAIN", + "label": "XOSC Oscillator Gain", + "mask": "00000700", + "settings": [ + { + "label": "2Mhz", + "value": "00000000" + }, + { + "label": "4Mhz", + "value": "00000100" + }, + { + "label": "8Mhz", + "value": "00000200" + }, + { + "label": "16Mhz", + "value": "00000300" + }, + { + "label": "30Mhz", + "value": "00000400" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "STARTUP", + "label": "XOSC Start-Up Time", + "mask": "0000F000", + "settings": [ + { + "label": "1 OSCULP32K Clock Cycles (31us)", + "value": "00000000" + }, + { + "label": "2 OSCULP32K Clock Cycles (61us)", + "value": "00001000" + }, + { + "label": "4 OSCULP32K Clock Cycles (122us)", + "value": "00002000" + }, + { + "label": "8 OSCULP32K Clock Cycles (244us)", + "value": "00003000" + }, + { + "label": "16 OSCULP32K Clock Cycles (488us)", + "value": "00004000" + }, + { + "label": "32 OSCULP32K Clock Cycles (977us)", + "value": "00005000" + }, + { + "label": "64 OSCULP32K Clock Cycles (1953us)", + "value": "00006000" + }, + { + "label": "128 OSCULP32K Clock Cycles (3906us)", + "value": "00007000" + }, + { + "label": "256 OSCULP32K Clock Cycles (7813us)", + "value": "00008000" + }, + { + "label": "512 OSCULP32K Clock Cycles (15625us)", + "value": "00009000" + }, + { + "label": "1024 OSCULP32K Clock Cycles (31250us)", + "value": "0000A000" + }, + { + "label": "2048 OSCULP32K Clock Cycles (62500us)", + "value": "0000B000" + }, + { + "label": "4096 OSCULP32K Clock Cycles (125000us)", + "value": "0000C000" + }, + { + "label": "8192 OSCULP32K Clock Cycles (250000us)", + "value": "0000D000" + }, + { + "label": "16384 OSCULP32K Clock Cycles (500000us)", + "value": "0000E000" + }, + { + "label": "32768 OSCULP32K Clock Cycles (1000000us)", + "value": "0000F000" + } + ] + } + ], + "key": "XOSC", + "unused": "00000000" + }, + { + "address": "40000824", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DFLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DFLL Disable", + "value": "00000000" + }, + { + "label": "DFLL Enable", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DFLL On Demand Control", + "mask": "00000080", + "settings": [ + { + "label": "Oscillator is always on, if enabled", + "value": "00000000" + }, + { + "label": "Oscillator is enabled when a peripheral is requesting the oscillator to be used as a clock source", + "value": "00000080" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DFLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "Oscillator is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "Oscillator is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "MODE", + "label": "DFLL Operating Mode Selection", + "mask": "00000004", + "settings": [ + { + "label": "DFLL operates in open-loop operation", + "value": "00000000" + }, + { + "label": "DFLL operates in closed-loop operation", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WAITLOCK", + "label": "DFLL Wait Lock", + "mask": "00000800", + "settings": [ + { + "label": "Output clock before the DFLL is locked.", + "value": "00000000" + }, + { + "label": "Output clock when DFLL is locked.", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "USBCRM", + "label": "DFLL USB Clock Recovery Mode", + "mask": "00000020", + "settings": [ + { + "label": "USB Clock Recovery Mode is disabled.", + "value": "00000000" + }, + { + "label": "USB Clock Recovery Mode is enabled.", + "value": "00000020" + } + ] + } + ], + "key": "DFLLCTRL", + "unused": "00000000" + }, + { + "address": "40000844", + "default": "00000080", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "ENABLE", + "label": "DPLL Enable", + "mask": "00000002", + "settings": [ + { + "label": "DPLL is disabled", + "value": "00000000" + }, + { + "label": "DPLL is enabled", + "value": "00000002" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "DPLL Run in Standby", + "mask": "00000040", + "settings": [ + { + "label": "DPLL is disabled in standby sleep mode", + "value": "00000000" + }, + { + "label": "DPLL is not stopped in standby sleep mode", + "value": "00000040" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "ONDEMAND", + "label": "DPLL On Demand Clock Activation", + "mask": "00000080", + "settings": [ + { + "label": "DPLL is always on when enabled", + "value": "00000000" + }, + { + "label": "DPLL is activated only when a peripheral request the DPLL as a source clock", + "value": "00000080" + } + ] + } + ], + "key": "DPLLCTRLA", + "unused": "00000000" + }, + { + "address": "4000082C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "MUL", + "label": "DFLL Multiply Factor", + "mask": "0000FFFF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "65535", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FSTEP", + "label": "DFLL Fine Maximum Step", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "CSTEP", + "label": "DFLL Coarse Maximum Step", + "mask": "FC000000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + } + ], + "key": "DFLLMUL", + "unused": "00000000" + }, + { + "address": "40000848", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "LDRFRAC", + "label": "DPLL Loop Divider Ratio Fractional Part", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "15", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "LDR", + "label": "DPLL Loop Divider Ratio", + "mask": "03FF0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "4095", + "min_value": "0" + } + } + ], + "key": "DPLLRATIO", + "unused": "00000000" + }, + { + "address": "4000084C", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "DIV", + "label": "DPLL Clock Divider", + "mask": "000F0000", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "2047", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "00000000", + "key": "LBYPASS", + "label": "DPLL Lock Bypass", + "mask": "00001000", + "settings": [ + { + "label": "Normal Mode", + "value": "00000000" + }, + { + "label": "Lock Bypass Mode", + "value": "00001000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LTIME", + "label": "DPLL Lock Time", + "mask": "00000700", + "settings": [ + { + "label": "No time-out", + "value": "00000000" + }, + { + "label": "Time-out if no lock within 8 ms", + "value": "00000400" + }, + { + "label": "Time-out if no lock within 9 ms", + "value": "00000500" + }, + { + "label": "Time-out if no lock within 10 ms", + "value": "00000600" + }, + { + "label": "Time-out if no lock within 11 ms", + "value": "00000700" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "REFCLK", + "label": "DPLL Reference Clock Selection", + "mask": "00000030", + "settings": [ + { + "label": "XOSC32 clock reference", + "value": "00000000" + }, + { + "label": "XOSC clock reference", + "value": "00000010" + }, + { + "label": "GCLK_DPLL clock reference", + "value": "00000020" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "WUF", + "label": "DPLL Wake Up Fast", + "mask": "00000008", + "settings": [ + { + "label": "DPLL CK output is gated until complete startup time and lock time.", + "value": "00000000" + }, + { + "label": "DPLL CK output is gated until startup time only.", + "value": "00000008" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "LPEN", + "label": "DPLL Low-Power Enable", + "mask": "00000004", + "settings": [ + { + "label": "The time to digital converter is selected", + "value": "00000000" + }, + { + "label": "The time to digital converter is not selected.", + "value": "00000004" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "FILTER", + "label": "DPLL Proportional Integral Filter Selection", + "mask": "00000003", + "settings": [ + { + "label": "Default filter mode", + "value": "00000000" + }, + { + "label": "Low bandwidth filter", + "value": "00000001" + }, + { + "label": "High bandwidth filter", + "value": "00000002" + }, + { + "label": "High damping filter", + "value": "00000003" + } + ] + } + ], + "key": "DPLLCTRLB", + "unused": "00000000" + }, + { + "address": "40000828", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "0", + "key": "COARSE", + "label": "DFLL Coarse Value", + "mask": "0000FC00", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "63", + "min_value": "0" + } + }, + { + "hidden": false, + "init": "0", + "key": "FINE", + "label": "DFLL Fine Value", + "mask": "000003FF", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1023", + "min_value": "0" + } + } + ], + "key": "DFLLVAL", + "unused": "00000000" + }, + { + "address": "40000C04", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK0 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00010000", + "key": "GENEN", + "label": "Generic Clock Generator 0 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 0 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 0 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 0 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 0 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 0 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL0", + "unused": "00000000" + }, + { + "address": "11111111", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK1 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 1 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 1 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 1 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 1 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 1 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 1 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL1", + "unused": "00000000" + }, + { + "address": "22222222", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK2 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 2 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 2 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 2 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 2 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 2 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 2 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL2", + "unused": "00000000" + }, + { + "address": "33333333", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK3 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 3 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 3 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 3 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 3 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 3 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 3 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL3", + "unused": "00000000" + }, + { + "address": "44444444", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK4 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 4 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 4 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 4 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 4 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 4 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 4 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL4", + "unused": "00000000" + }, + { + "address": "55555555", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK5 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 5 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 5 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 5 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 5 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 5 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 5 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL5", + "unused": "00000000" + }, + { + "address": "66666666", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK6 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 6 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 6 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 6 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 6 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 6 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 6 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL6", + "unused": "00000000" + }, + { + "address": "77777777", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK7 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 7 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 7 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 7 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 7 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 7 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 7 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL7", + "unused": "00000000" + }, + { + "address": "88888888", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "SRC", + "label": "GCLK8 Source Oscillator Select", + "mask": "00001F00", + "settings": [ + { + "label": "XOSC", + "value": "00000000" + }, + { + "label": "GCLKIN", + "value": "00000100" + }, + { + "label": "GCLKGEN1", + "value": "00000200" + }, + { + "label": "OSCULP32K", + "value": "00000300" + }, + { + "label": "OSC32K", + "value": "00000400" + }, + { + "label": "XOSC32K", + "value": "00000500" + }, + { + "label": "OSC8M", + "value": "00000600" + }, + { + "label": "DFLL48M", + "value": "00000700" + }, + { + "label": "FDPLL96M", + "value": "00000800" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "GENEN", + "label": "Generic Clock Generator 8 Enable", + "mask": "00010000", + "settings": [ + { + "label": "Generic Clock Disable", + "value": "00000000" + }, + { + "label": "Generic Clock Enable", + "value": "00010000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "IDC", + "label": "Generic Clock Generator 8 Improve Duty Cycle", + "mask": "00020000", + "settings": [ + { + "label": "The generic clock generator duty cycle is not 50/50 for odd division factors.", + "value": "00000000" + }, + { + "label": "The generic clock generator duty cycle is 50/50.", + "value": "00020000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OOV", + "label": "Generic Clock Generator 8 Output Off Value", + "mask": "00040000", + "settings": [ + { + "label": "GCLK_IO will be zero when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00000000" + }, + { + "label": "GCLK_IO will be one when the generic clock generator is turned off or when the OE bit is zero.", + "value": "00040000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "OE", + "label": "Generic Clock Generator 8 Output Enable", + "mask": "00080000", + "settings": [ + { + "label": "The generic clock generator is not output.", + "value": "00000000" + }, + { + "label": "The generic clock generator is output to the corresponding GCLK_IO.", + "value": "00080000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "DIVSEL", + "label": "Generic Clock Generator 8 Divide Selection", + "mask": "00100000", + "settings": [ + { + "label": "The generic clock generator equals the clock source divided by GENDIV.DIV", + "value": "00000000" + }, + { + "label": "The generic clock generator equals the clock source divided by 2^(GENDIV.DIV+1).", + "value": "00100000" + } + ] + }, + { + "hidden": false, + "init": "00000000", + "key": "RUNSTDBY", + "label": "Generic Clock Generator 8 Run in Standby", + "mask": "00200000", + "settings": [ + { + "label": "The generic clock generator is stopped in standby.", + "value": "00000000" + }, + { + "label": "The generic clock generator is kept running and output to its dedicated GCLK_IO pin during standby mode.", + "value": "00200000" + } + ] + } + ], + "key": "GENCTRL8", + "unused": "00000000" + }, + { + "address": "40000C08", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "DIV", + "label": "GCLK Division Factor", + "mask": "00FFFF00", + "comment": "max_should_be_65535", + "comment2": "there_should_be_8_of_these", + "settings_array": { + "decrease": false, + "disabled_when_zero": false, + "inverted": false, + "max_value": "1", + "min_value": "0" + } + } + ], + "key": "GENDIV", + "unused": "00000000" + }, + { + "address": "40000C02", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "GEN", + "label": "DPLL/DFLL Generic Clock Generator", + "mask": "00000F00", + "settings": [ + { + "label": "GCLKGEN0", + "value": "00000000" + }, + { + "label": "GCLKGEN1", + "value": "00000100" + }, + { + "label": "GCLKGEN2", + "value": "00000200" + }, + { + "label": "GCLKGEN3", + "value": "00000300" + }, + { + "label": "GCLKGEN4", + "value": "00000400" + }, + { + "label": "GCLKGEN5", + "value": "00000500" + }, + { + "label": "GCLKGEN6", + "value": "00000600" + }, + { + "label": "GCLKGEN7", + "value": "00000700" + }, + { + "label": "GCLKGEN8", + "value": "00000800" + } + ] + } + ], + "key": "CLKCTRL", + "unused": "00000000" + }, + { + "address": "00000000", + "default": "00000000", + "fields": [ + { + "hidden": false, + "init": "00000000", + "key": "TEMPLATE", + "label": "TEMPLATE", + "mask": "00000000", + "settings": [ + { + "label": "TEMPLATE", + "value": "00000000" + }, + { + "label": "TEMPLATE", + "value": "00000000" + } + ] + } + ], + "key": "TEMPLATE", + "unused": "00000000" + } + ] +} diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e15a/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e15a/interrupts_mcu.h new file mode 100644 index 000000000..e790efd9b --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e15a/interrupts_mcu.h @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21E15A MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 44; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21E15A. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21E15A. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e15b/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e15b/interrupts_mcu.h new file mode 100644 index 000000000..30fdb6589 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e15b/interrupts_mcu.h @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21E15B MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 45; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21E15B. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21E15B. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e15c/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e15c/interrupts_mcu.h new file mode 100644 index 000000000..e9381bc38 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e15c/interrupts_mcu.h @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21E15C MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 45; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21E15C. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21E15C. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e15l/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e15l/interrupts_mcu.h new file mode 100644 index 000000000..bca73cbc6 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e15l/interrupts_mcu.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21E15L MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_AC1 = 44; +static const int INTERRUPTS_PERIPH_COUNT = 45; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21E15L. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21E15L. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e16a/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e16a/interrupts_mcu.h new file mode 100644 index 000000000..846489b06 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e16a/interrupts_mcu.h @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21E16A MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 44; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21E16A. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21E16A. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e16b/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e16b/interrupts_mcu.h new file mode 100644 index 000000000..745a03b4d --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e16b/interrupts_mcu.h @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21E16B MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 45; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21E16B. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21E16B. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e16c/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e16c/interrupts_mcu.h new file mode 100644 index 000000000..e533dc885 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e16c/interrupts_mcu.h @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21E16C MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 45; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21E16C. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21E16C. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e16l/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e16l/interrupts_mcu.h new file mode 100644 index 000000000..b444093ed --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e16l/interrupts_mcu.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21E16L MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_AC1 = 44; +static const int INTERRUPTS_PERIPH_COUNT = 45; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21E16L. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21E16L. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e17a/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e17a/interrupts_mcu.h new file mode 100644 index 000000000..64db163c1 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e17a/interrupts_mcu.h @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21E17A MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 44; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21E17A. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21E17A. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e17d/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e17d/interrupts_mcu.h new file mode 100644 index 000000000..5342c78bb --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e17d/interrupts_mcu.h @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21E17D MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_TCC3 = 45; +static const int INTERRUPTS_PERIPH_COUNT = 46; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21E17D. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21E17D. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e17l/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e17l/interrupts_mcu.h new file mode 100644 index 000000000..2a2222c7f --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e17l/interrupts_mcu.h @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21E17L MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_AC1 = 44; +static const int INTERRUPTS_TCC3 = 45; +static const int INTERRUPTS_PERIPH_COUNT = 46; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21E17L. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21E17L. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e18a/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e18a/interrupts_mcu.h new file mode 100644 index 000000000..5dc055614 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21e18a/interrupts_mcu.h @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21E18A MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 44; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21E18A. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21E18A. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g15a/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g15a/interrupts_mcu.h new file mode 100644 index 000000000..00c828824 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g15a/interrupts_mcu.h @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21G15A MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 44; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21G15A. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21G15A. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g15b/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g15b/interrupts_mcu.h new file mode 100644 index 000000000..b9b3808db --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g15b/interrupts_mcu.h @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21G15B MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 45; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21G15B. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21G15B. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g16a/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g16a/interrupts_mcu.h new file mode 100644 index 000000000..e8a2f982c --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g16a/interrupts_mcu.h @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21G16A MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 44; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21G16A. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21G16A. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g16b/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g16b/interrupts_mcu.h new file mode 100644 index 000000000..0853fd71c --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g16b/interrupts_mcu.h @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21G16B MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 45; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21G16B. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21G16B. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g16l/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g16l/interrupts_mcu.h new file mode 100644 index 000000000..ead11bb67 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g16l/interrupts_mcu.h @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21G16L MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_TC6 = 37; +static const int INTERRUPTS_TC7 = 38; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_AC1 = 44; +static const int INTERRUPTS_PERIPH_COUNT = 45; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21G16L. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21G16L. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g17a/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g17a/interrupts_mcu.h new file mode 100644 index 000000000..574de1a6b --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g17a/interrupts_mcu.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21G17A MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_TC6 = 37; +static const int INTERRUPTS_TC7 = 38; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 44; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21G17A. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21G17A. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g17d/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g17d/interrupts_mcu.h new file mode 100644 index 000000000..f099a9a3a --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g17d/interrupts_mcu.h @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21G17D MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_TCC3 = 45; +static const int INTERRUPTS_PERIPH_COUNT = 46; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21G17D. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21G17D. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g17l/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g17l/interrupts_mcu.h new file mode 100644 index 000000000..a36745a34 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g17l/interrupts_mcu.h @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21G17L MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_TC6 = 37; +static const int INTERRUPTS_TC7 = 38; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_AC1 = 44; +static const int INTERRUPTS_TCC3 = 45; +static const int INTERRUPTS_PERIPH_COUNT = 46; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21G17L. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21G17L. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g18a/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g18a/interrupts_mcu.h new file mode 100644 index 000000000..18180e5f7 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21g18a/interrupts_mcu.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21G18A MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_TC6 = 37; +static const int INTERRUPTS_TC7 = 38; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 44; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21G18A. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21G18A. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j15a/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j15a/interrupts_mcu.h new file mode 100644 index 000000000..dfd75d7b7 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j15a/interrupts_mcu.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21J15A MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_TC6 = 37; +static const int INTERRUPTS_TC7 = 38; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 44; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21J15A. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21J15A. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j15b/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j15b/interrupts_mcu.h new file mode 100644 index 000000000..388d3659c --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j15b/interrupts_mcu.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21J15B MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_TC6 = 37; +static const int INTERRUPTS_TC7 = 38; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 45; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21J15B. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21J15B. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j16a/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j16a/interrupts_mcu.h new file mode 100644 index 000000000..d83f6b31d --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j16a/interrupts_mcu.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21J16A MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_TC6 = 37; +static const int INTERRUPTS_TC7 = 38; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 44; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21J16A. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21J16A. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j16b/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j16b/interrupts_mcu.h new file mode 100644 index 000000000..06b8de719 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j16b/interrupts_mcu.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21J16B MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_TC6 = 37; +static const int INTERRUPTS_TC7 = 38; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 45; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21J16B. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21J16B. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j17a/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j17a/interrupts_mcu.h new file mode 100644 index 000000000..5cafd0902 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j17a/interrupts_mcu.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21J17A MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_TC6 = 37; +static const int INTERRUPTS_TC7 = 38; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 44; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21J17A. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21J17A. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j17d/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j17d/interrupts_mcu.h new file mode 100644 index 000000000..f9a81a158 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j17d/interrupts_mcu.h @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMD21J17D MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_TC6 = 37; +static const int INTERRUPTS_TC7 = 38; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_TCC3 = 45; +static const int INTERRUPTS_PERIPH_COUNT = 46; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21J17D. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21J17D. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j18a/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j18a/interrupts_mcu.h new file mode 100644 index 000000000..92651e363 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamd21j18a/interrupts_mcu.h @@ -0,0 +1,123 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +<<<<<<< HEAD +* @brief ATSAM3X8E MCU specific interrupt per module definitions. +======= +* @brief ATSAMD21J18A MCU specific interrupt per module definitions. +>>>>>>> remotes/origin/wip/necto-sdk-test +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +<<<<<<< HEAD +static const int INTERRUPTS_NMI = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_MEMMANAGE = 4; +static const int INTERRUPTS_BUSFAULT = 5; +static const int INTERRUPTS_USAGEFAULT = 6; +static const int INTERRUPTS_RESERVED1 = 7; +static const int INTERRUPTS_RESERVED2 = 8; +static const int INTERRUPTS_RESERVED3 = 9; +static const int INTERRUPTS_RESERVED4 = 10; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_DEBUGMON = 12; +static const int INTERRUPTS_RESERVED5 = 13; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +// TODO - Rest of APIs +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for cec1302. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for cec1302. +======= +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_TC6 = 37; +static const int INTERRUPTS_TC7 = 38; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 44; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMD21J18A. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMD21J18A. +>>>>>>> remotes/origin/wip/necto-sdk-test +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1e14b/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1e14b/interrupts_mcu.h new file mode 100644 index 000000000..c07ebbdd7 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1e14b/interrupts_mcu.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMDA1E14B MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_TC6 = 37; +static const int INTERRUPTS_TC7 = 38; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 45; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMDA1E14B. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMDA1E14B. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1e15b/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1e15b/interrupts_mcu.h new file mode 100644 index 000000000..1a3cb5ff6 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1e15b/interrupts_mcu.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMDA1E15B MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_TC6 = 37; +static const int INTERRUPTS_TC7 = 38; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 45; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMDA1E15B. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMDA1E15B. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1e16b/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1e16b/interrupts_mcu.h new file mode 100644 index 000000000..9f829ec62 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1e16b/interrupts_mcu.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMDA1E16B MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_TC6 = 37; +static const int INTERRUPTS_TC7 = 38; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 45; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMDA1E16B. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMDA1E16B. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1g14b/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1g14b/interrupts_mcu.h new file mode 100644 index 000000000..f0dfff45d --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1g14b/interrupts_mcu.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMDA1G14B MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_TC6 = 37; +static const int INTERRUPTS_TC7 = 38; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 45; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMDA1G14B. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMDA1G14B. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1g15b/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1g15b/interrupts_mcu.h new file mode 100644 index 000000000..1edea1065 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1g15b/interrupts_mcu.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMDA1G15B MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_TC6 = 37; +static const int INTERRUPTS_TC7 = 38; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 45; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMDA1G15B. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMDA1G15B. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1g16b/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1g16b/interrupts_mcu.h new file mode 100644 index 000000000..46d0a108d --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1g16b/interrupts_mcu.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMDA1G16B MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_TC6 = 37; +static const int INTERRUPTS_TC7 = 38; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 45; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMDA1G16B. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMDA1G16B. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1j14b/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1j14b/interrupts_mcu.h new file mode 100644 index 000000000..a84d78c1c --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1j14b/interrupts_mcu.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMDA1J14B MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_TC6 = 37; +static const int INTERRUPTS_TC7 = 38; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 45; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMDA1J14B. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMDA1J14B. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1j15b/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1j15b/interrupts_mcu.h new file mode 100644 index 000000000..7acb10b46 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1j15b/interrupts_mcu.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMDA1J15B MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_TC6 = 37; +static const int INTERRUPTS_TC7 = 38; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 45; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMDA1J15B. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMDA1J15B. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1j16b/interrupts_mcu.h b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1j16b/interrupts_mcu.h new file mode 100644 index 000000000..59c9a2b84 --- /dev/null +++ b/ARM/gcc_clang/interrupts/include/interrupts_mcu/atsamda1j16b/interrupts_mcu.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2024 MikroElektronika d.o.o. +** Contact: https://www.mikroe.com/contact +** +** This file is part of the mikroSDK package +** +** Commercial License Usage +** +** Licensees holding valid commercial NECTO compilers AI licenses may use this +** file in accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The MikroElektronika Company. +** For licensing terms and conditions see +** https://www.mikroe.com/legal/software-license-agreement. +** For further information use the contact form at +** https://www.mikroe.com/contact. +** +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used for +** non-commercial projects under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** The above copyright notice and this permission notice shall be +** included in all copies or substantial portions of the Software. +** +** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** OF MERCHANTABILITY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED +** TO THE WARRANTIES FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT +** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +** OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +** +****************************************************************************/ +/*! +* @file interrupts_mcu.h +* @brief ATSAMDA1J16B MCU specific interrupt per module definitions. +*/ + +#ifndef _INTERRUPTS_MCU_H_ +#define _INTERRUPTS_MCU_H_ + +// Interrupt table +static const int INTERRUPTS_NONMASKABLEINT = 2; +static const int INTERRUPTS_HARDFAULT = 3; +static const int INTERRUPTS_SVCALL = 11; +static const int INTERRUPTS_PENDSV = 14; +static const int INTERRUPTS_SYSTICK = 15; +static const int INTERRUPTS_PM = 16; +static const int INTERRUPTS_SYSCTRL = 17; +static const int INTERRUPTS_WDT = 18; +static const int INTERRUPTS_RTC = 19; +static const int INTERRUPTS_EIC = 20; +static const int INTERRUPTS_NVMCTRL = 21; +static const int INTERRUPTS_DMAC = 22; +static const int INTERRUPTS_USB = 23; +static const int INTERRUPTS_EVSYS = 24; +static const int INTERRUPTS_SERCOM0 = 25; +static const int INTERRUPTS_SERCOM1 = 26; +static const int INTERRUPTS_SERCOM2 = 27; +static const int INTERRUPTS_SERCOM3 = 28; +static const int INTERRUPTS_SERCOM4 = 29; +static const int INTERRUPTS_SERCOM5 = 30; +static const int INTERRUPTS_TCC0 = 31; +static const int INTERRUPTS_TCC1 = 32; +static const int INTERRUPTS_TCC2 = 33; +static const int INTERRUPTS_TC3 = 34; +static const int INTERRUPTS_TC4 = 35; +static const int INTERRUPTS_TC5 = 36; +static const int INTERRUPTS_TC6 = 37; +static const int INTERRUPTS_TC7 = 38; +static const int INTERRUPTS_ADC = 39; +static const int INTERRUPTS_AC = 40; +static const int INTERRUPTS_DAC = 41; +static const int INTERRUPTS_PTC = 42; +static const int INTERRUPTS_I2S = 43; +static const int INTERRUPTS_PERIPH_COUNT = 45; +// EOF Interrupt table + +// Interrupt addresses +// No interrupt registers for ATSAMDA1J16B. +// EOF Interrupt addresses + +// Interrupt register bit values +// No interrupt bits for ATSAMDA1J16B. +// EOF Interrupt register bit values + +#endif // _INTERRUPTS_MCU_H_ +// ------------------------------------------------------------------------- END diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21e15a.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21e15a.ld new file mode 100644 index 000000000..7a2051b67 --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21e15a.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21E15A + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00008000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00001000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x400; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21e15b.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21e15b.ld new file mode 100644 index 000000000..22d629838 --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21e15b.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21E15BU + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00008000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00001000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x400; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21e15c.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21e15c.ld new file mode 100644 index 000000000..e1a724a3f --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21e15c.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21E15CU + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00008000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00001000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x400; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21e15l.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21e15l.ld new file mode 100644 index 000000000..56ef65636 --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21e15l.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21E15L + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00008000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00001000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x400; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21e16a.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21e16a.ld new file mode 100644 index 000000000..8a64ee45c --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21e16a.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21E16A + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00010000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00002000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x800; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21e16b.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21e16b.ld new file mode 100644 index 000000000..decae0aeb --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21e16b.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21E16BU + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00010000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00002000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x800; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21e16c.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21e16c.ld new file mode 100644 index 000000000..2e2c7b2c3 --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21e16c.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21E16CU + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00010000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00002000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x800; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21e16l.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21e16l.ld new file mode 100644 index 000000000..cd4499f9d --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21e16l.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21E16L + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00010000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00002000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x800; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21e17a.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21e17a.ld new file mode 100644 index 000000000..5ac6de2d1 --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21e17a.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21E17A + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00020000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00004000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x1000; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21e17d.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21e17d.ld new file mode 100644 index 000000000..e80128de3 --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21e17d.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21E17D + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00020000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00004000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x1000; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21e17l.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21e17l.ld new file mode 100644 index 000000000..8e3169f42 --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21e17l.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21E17L + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00020000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00004000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x1000; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21e18a.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21e18a.ld new file mode 100644 index 000000000..29e77839b --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21e18a.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21E18A + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00040000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x2000; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21g15a.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21g15a.ld new file mode 100644 index 000000000..55ab7bddc --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21g15a.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21G15A + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00008000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00001000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x400; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21g15b.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21g15b.ld new file mode 100644 index 000000000..b5ec7f877 --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21g15b.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21G15B + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00008000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00001000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x400; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21g16a.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21g16a.ld new file mode 100644 index 000000000..3ffa0967e --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21g16a.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21G16A + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00010000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00002000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x800; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21g16b.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21g16b.ld new file mode 100644 index 000000000..0c230f4dd --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21g16b.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21G16B + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00010000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00002000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x800; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21g16l.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21g16l.ld new file mode 100644 index 000000000..79b1b13cf --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21g16l.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21G16L + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00010000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00002000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x800; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21g17a.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21g17a.ld new file mode 100644 index 000000000..f5169a20c --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21g17a.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21G17AU + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00020000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00004000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x1000; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21g17d.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21g17d.ld new file mode 100644 index 000000000..ae0f44ab5 --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21g17d.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21G17D + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00020000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00004000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x1000; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21g17l.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21g17l.ld new file mode 100644 index 000000000..d8b7c384c --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21g17l.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21G17L + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00020000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00004000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x1000; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21g18a.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21g18a.ld new file mode 100644 index 000000000..e544992ff --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21g18a.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21G18A + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00040000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x2000; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21j15a.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21j15a.ld new file mode 100644 index 000000000..7992c6d39 --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21j15a.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21J15A + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00008000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00001000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x400; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21j15b.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21j15b.ld new file mode 100644 index 000000000..67cbc137d --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21j15b.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21J15B + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00008000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00001000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x400; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21j16a.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21j16a.ld new file mode 100644 index 000000000..6092dbfd0 --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21j16a.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21J16A + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00010000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00002000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x800; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21j16b.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21j16b.ld new file mode 100644 index 000000000..3b8b6c23a --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21j16b.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21J16B + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00010000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00002000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x800; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21j17a.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21j17a.ld new file mode 100644 index 000000000..9883dd5fa --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21j17a.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21J17A + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00020000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00004000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x1000; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21j17d.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21j17d.ld new file mode 100644 index 000000000..eab4339c7 --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21j17d.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21J17D + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00020000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00004000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x1000; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamd21j18a.ld b/ARM/gcc_clang/linker_scripts/sam/atsamd21j18a.ld new file mode 100644 index 000000000..46918c5f6 --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamd21j18a.ld @@ -0,0 +1,146 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMD21J18A + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00040000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00008000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x2000; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamda1e14b.ld b/ARM/gcc_clang/linker_scripts/sam/atsamda1e14b.ld new file mode 100644 index 000000000..a5cc1d4a5 --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamda1e14b.ld @@ -0,0 +1,145 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMDA1E14B + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00004000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00001000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x400; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamda1e15b.ld b/ARM/gcc_clang/linker_scripts/sam/atsamda1e15b.ld new file mode 100644 index 000000000..991d310f8 --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamda1e15b.ld @@ -0,0 +1,145 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMDA1E15B + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00008000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00001000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x400; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamda1e16b.ld b/ARM/gcc_clang/linker_scripts/sam/atsamda1e16b.ld new file mode 100644 index 000000000..053ebd261 --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamda1e16b.ld @@ -0,0 +1,145 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMDA1E16B + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00010000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00002000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x800; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamda1g14b.ld b/ARM/gcc_clang/linker_scripts/sam/atsamda1g14b.ld new file mode 100644 index 000000000..3b64e731b --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamda1g14b.ld @@ -0,0 +1,145 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMDA1G14B + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00004000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00001000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x400; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamda1g15b.ld b/ARM/gcc_clang/linker_scripts/sam/atsamda1g15b.ld new file mode 100644 index 000000000..80632a311 --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamda1g15b.ld @@ -0,0 +1,145 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMDA1G15B + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00008000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00001000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x400; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamda1g16b.ld b/ARM/gcc_clang/linker_scripts/sam/atsamda1g16b.ld new file mode 100644 index 000000000..2d7c0c225 --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamda1g16b.ld @@ -0,0 +1,145 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMDA1G16B + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00010000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00002000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x800; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamda1j14b.ld b/ARM/gcc_clang/linker_scripts/sam/atsamda1j14b.ld new file mode 100644 index 000000000..46dcb321a --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamda1j14b.ld @@ -0,0 +1,145 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMDA1J14B + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00004000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00001000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x400; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamda1j15b.ld b/ARM/gcc_clang/linker_scripts/sam/atsamda1j15b.ld new file mode 100644 index 000000000..5a731c636 --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamda1j15b.ld @@ -0,0 +1,145 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMDA1J15B + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00008000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00001000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x400; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/linker_scripts/sam/atsamda1j16b.ld b/ARM/gcc_clang/linker_scripts/sam/atsamda1j16b.ld new file mode 100644 index 000000000..a5e17f55a --- /dev/null +++ b/ARM/gcc_clang/linker_scripts/sam/atsamda1j16b.ld @@ -0,0 +1,145 @@ +/** + * \file + * + * \brief Linker script for running in internal FLASH on the SAMDA1J16B + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + + +OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") +OUTPUT_ARCH(arm) +SEARCH_DIR(.) + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Memory Spaces Definitions */ +MEMORY +{ + rom (rx) : ORIGIN = 0x00000000, LENGTH = 0x00010000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00002000 +} + +/* The stack size used by the application. NOTE: you need to adjust according to your application. */ +STACK_SIZE = DEFINED(STACK_SIZE) ? STACK_SIZE : DEFINED(__stack_size__) ? __stack_size__ : 0x800; + +/* Section Definitions */ +SECTIONS +{ + .text : + { + . = ALIGN(4); + _sfixed = .; + KEEP(*(.vectors .vectors.*)) + *(.text .text.* .gnu.linkonce.t.*) + *(.glue_7t) *(.glue_7) + *(.rodata .rodata* .gnu.linkonce.r.*) + *(.ARM.extab* .gnu.linkonce.armextab.*) + + /* Support C constructors, and C destructors in both user code + and the C library. This also provides support for C++ code. */ + . = ALIGN(4); + KEEP(*(.init)) + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + + . = ALIGN(4); + _efixed = .; /* End of text section */ + } > rom + + /* .ARM.exidx is sorted, so has to go in its own output section. */ + PROVIDE_HIDDEN (__exidx_start = .); + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + PROVIDE_HIDDEN (__exidx_end = .); + + . = ALIGN(4); + _etext = .; + + .relocate : AT (_etext) + { + . = ALIGN(4); + _srelocate = .; + *(.ramfunc .ramfunc.*); + *(.data .data.*); + . = ALIGN(4); + _erelocate = .; + } > ram + + /* .bss section which is used for uninitialized data */ + .bss (NOLOAD) : + { + . = ALIGN(4); + _sbss = . ; + _szero = .; + *(.bss .bss.*) + *(COMMON) + . = ALIGN(4); + _ebss = . ; + _ezero = .; + } > ram + + /* stack section */ + .stack (NOLOAD): + { + . = ALIGN(8); + _sstack = .; + . = . + STACK_SIZE; + . = ALIGN(8); + _estack = .; + } > ram + + . = ALIGN(4); + _end = . ; +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21e15a.c b/ARM/gcc_clang/startup/sam/atsamd21e15a.c new file mode 100644 index 000000000..86e0dab38 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21e15a.c @@ -0,0 +1,260 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21e15b.c b/ARM/gcc_clang/startup/sam/atsamd21e15b.c new file mode 100644 index 000000000..16ac76605 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21e15b.c @@ -0,0 +1,273 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21e15c.c b/ARM/gcc_clang/startup/sam/atsamd21e15c.c new file mode 100644 index 000000000..16ac76605 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21e15c.c @@ -0,0 +1,273 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21e15l.c b/ARM/gcc_clang/startup/sam/atsamd21e15l.c new file mode 100644 index 000000000..16ac76605 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21e15l.c @@ -0,0 +1,273 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21e16a.c b/ARM/gcc_clang/startup/sam/atsamd21e16a.c new file mode 100644 index 000000000..86e0dab38 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21e16a.c @@ -0,0 +1,260 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21e16b.c b/ARM/gcc_clang/startup/sam/atsamd21e16b.c new file mode 100644 index 000000000..16ac76605 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21e16b.c @@ -0,0 +1,273 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21e16c.c b/ARM/gcc_clang/startup/sam/atsamd21e16c.c new file mode 100644 index 000000000..16ac76605 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21e16c.c @@ -0,0 +1,273 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21e16l.c b/ARM/gcc_clang/startup/sam/atsamd21e16l.c new file mode 100644 index 000000000..16ac76605 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21e16l.c @@ -0,0 +1,273 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21e17a.c b/ARM/gcc_clang/startup/sam/atsamd21e17a.c new file mode 100644 index 000000000..86e0dab38 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21e17a.c @@ -0,0 +1,260 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21e17d.c b/ARM/gcc_clang/startup/sam/atsamd21e17d.c new file mode 100644 index 000000000..d4a2909e4 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21e17d.c @@ -0,0 +1,281 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TCC3 +void TCC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler, /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL), /* 28 Reserved */ +#endif +#ifdef ID_TCC3 + .pfnTCC3_Handler = (void*) TCC3_Handler /* 29 Timer Counter Control 3 */ +#else + .pvReserved29 = (void*) (0UL) /* 29 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21e17l.c b/ARM/gcc_clang/startup/sam/atsamd21e17l.c new file mode 100644 index 000000000..d4a2909e4 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21e17l.c @@ -0,0 +1,281 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TCC3 +void TCC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler, /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL), /* 28 Reserved */ +#endif +#ifdef ID_TCC3 + .pfnTCC3_Handler = (void*) TCC3_Handler /* 29 Timer Counter Control 3 */ +#else + .pvReserved29 = (void*) (0UL) /* 29 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21e18a.c b/ARM/gcc_clang/startup/sam/atsamd21e18a.c new file mode 100644 index 000000000..86e0dab38 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21e18a.c @@ -0,0 +1,260 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21g15a.c b/ARM/gcc_clang/startup/sam/atsamd21g15a.c new file mode 100644 index 000000000..86e0dab38 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21g15a.c @@ -0,0 +1,260 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21g15b.c b/ARM/gcc_clang/startup/sam/atsamd21g15b.c new file mode 100644 index 000000000..16ac76605 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21g15b.c @@ -0,0 +1,273 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21g16a.c b/ARM/gcc_clang/startup/sam/atsamd21g16a.c new file mode 100644 index 000000000..86e0dab38 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21g16a.c @@ -0,0 +1,260 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21g16b.c b/ARM/gcc_clang/startup/sam/atsamd21g16b.c new file mode 100644 index 000000000..16ac76605 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21g16b.c @@ -0,0 +1,273 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21g16l.c b/ARM/gcc_clang/startup/sam/atsamd21g16l.c new file mode 100644 index 000000000..16ac76605 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21g16l.c @@ -0,0 +1,273 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21g17a.c b/ARM/gcc_clang/startup/sam/atsamd21g17a.c new file mode 100644 index 000000000..86e0dab38 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21g17a.c @@ -0,0 +1,260 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21g17d.c b/ARM/gcc_clang/startup/sam/atsamd21g17d.c new file mode 100644 index 000000000..d4a2909e4 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21g17d.c @@ -0,0 +1,281 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TCC3 +void TCC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler, /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL), /* 28 Reserved */ +#endif +#ifdef ID_TCC3 + .pfnTCC3_Handler = (void*) TCC3_Handler /* 29 Timer Counter Control 3 */ +#else + .pvReserved29 = (void*) (0UL) /* 29 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21g17l.c b/ARM/gcc_clang/startup/sam/atsamd21g17l.c new file mode 100644 index 000000000..d4a2909e4 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21g17l.c @@ -0,0 +1,281 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TCC3 +void TCC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler, /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL), /* 28 Reserved */ +#endif +#ifdef ID_TCC3 + .pfnTCC3_Handler = (void*) TCC3_Handler /* 29 Timer Counter Control 3 */ +#else + .pvReserved29 = (void*) (0UL) /* 29 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21g18a.c b/ARM/gcc_clang/startup/sam/atsamd21g18a.c new file mode 100644 index 000000000..86e0dab38 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21g18a.c @@ -0,0 +1,260 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21j15a.c b/ARM/gcc_clang/startup/sam/atsamd21j15a.c new file mode 100644 index 000000000..86e0dab38 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21j15a.c @@ -0,0 +1,260 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21j15b.c b/ARM/gcc_clang/startup/sam/atsamd21j15b.c new file mode 100644 index 000000000..16ac76605 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21j15b.c @@ -0,0 +1,273 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21j16a.c b/ARM/gcc_clang/startup/sam/atsamd21j16a.c new file mode 100644 index 000000000..86e0dab38 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21j16a.c @@ -0,0 +1,260 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21j16b.c b/ARM/gcc_clang/startup/sam/atsamd21j16b.c new file mode 100644 index 000000000..16ac76605 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21j16b.c @@ -0,0 +1,273 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21j17a.c b/ARM/gcc_clang/startup/sam/atsamd21j17a.c new file mode 100644 index 000000000..86e0dab38 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21j17a.c @@ -0,0 +1,260 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21j17d.c b/ARM/gcc_clang/startup/sam/atsamd21j17d.c new file mode 100644 index 000000000..d4a2909e4 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21j17d.c @@ -0,0 +1,281 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TCC3 +void TCC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler, /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL), /* 28 Reserved */ +#endif +#ifdef ID_TCC3 + .pfnTCC3_Handler = (void*) TCC3_Handler /* 29 Timer Counter Control 3 */ +#else + .pvReserved29 = (void*) (0UL) /* 29 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamd21j18a.c b/ARM/gcc_clang/startup/sam/atsamd21j18a.c new file mode 100644 index 000000000..86e0dab38 --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamd21j18a.c @@ -0,0 +1,260 @@ +/** + * \file + * + * \brief gcc starttup file for SAMD21 + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NonMaskableInt_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVCall_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNonMaskableInt_Handler = (void*) NonMaskableInt_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVCall_Handler = (void*) SVCall_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamda1e14b.c b/ARM/gcc_clang/startup/sam/atsamda1e14b.c new file mode 100644 index 000000000..a3354a5ef --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamda1e14b.c @@ -0,0 +1,272 @@ +/** + * \file + * + * \brief gcc starttup file for SAMDA1 + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NMI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNMI_Handler = (void*) NMI_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVC_Handler = (void*) SVC_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamda1e15b.c b/ARM/gcc_clang/startup/sam/atsamda1e15b.c new file mode 100644 index 000000000..a3354a5ef --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamda1e15b.c @@ -0,0 +1,272 @@ +/** + * \file + * + * \brief gcc starttup file for SAMDA1 + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NMI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNMI_Handler = (void*) NMI_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVC_Handler = (void*) SVC_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamda1e16b.c b/ARM/gcc_clang/startup/sam/atsamda1e16b.c new file mode 100644 index 000000000..a3354a5ef --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamda1e16b.c @@ -0,0 +1,272 @@ +/** + * \file + * + * \brief gcc starttup file for SAMDA1 + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NMI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNMI_Handler = (void*) NMI_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVC_Handler = (void*) SVC_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamda1g14b.c b/ARM/gcc_clang/startup/sam/atsamda1g14b.c new file mode 100644 index 000000000..a3354a5ef --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamda1g14b.c @@ -0,0 +1,272 @@ +/** + * \file + * + * \brief gcc starttup file for SAMDA1 + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NMI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNMI_Handler = (void*) NMI_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVC_Handler = (void*) SVC_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamda1g15b.c b/ARM/gcc_clang/startup/sam/atsamda1g15b.c new file mode 100644 index 000000000..a3354a5ef --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamda1g15b.c @@ -0,0 +1,272 @@ +/** + * \file + * + * \brief gcc starttup file for SAMDA1 + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NMI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNMI_Handler = (void*) NMI_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVC_Handler = (void*) SVC_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamda1g16b.c b/ARM/gcc_clang/startup/sam/atsamda1g16b.c new file mode 100644 index 000000000..a3354a5ef --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamda1g16b.c @@ -0,0 +1,272 @@ +/** + * \file + * + * \brief gcc starttup file for SAMDA1 + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NMI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNMI_Handler = (void*) NMI_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVC_Handler = (void*) SVC_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamda1j14b.c b/ARM/gcc_clang/startup/sam/atsamda1j14b.c new file mode 100644 index 000000000..a3354a5ef --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamda1j14b.c @@ -0,0 +1,272 @@ +/** + * \file + * + * \brief gcc starttup file for SAMDA1 + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NMI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNMI_Handler = (void*) NMI_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVC_Handler = (void*) SVC_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamda1j15b.c b/ARM/gcc_clang/startup/sam/atsamda1j15b.c new file mode 100644 index 000000000..a3354a5ef --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamda1j15b.c @@ -0,0 +1,272 @@ +/** + * \file + * + * \brief gcc starttup file for SAMDA1 + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NMI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNMI_Handler = (void*) NMI_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVC_Handler = (void*) SVC_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/startup/sam/atsamda1j16b.c b/ARM/gcc_clang/startup/sam/atsamda1j16b.c new file mode 100644 index 000000000..a3354a5ef --- /dev/null +++ b/ARM/gcc_clang/startup/sam/atsamda1j16b.c @@ -0,0 +1,272 @@ +/** + * \file + * + * \brief gcc starttup file for SAMDA1 + * + * Copyright (c) 2016 Atmel Corporation, + * a wholly owned subsidiary of Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +#include "mcu.h" // Note: Changed for MikroE implementation. + +extern void SystemInit(); // Note: Added for MikroE implementation. + +/* Initialize segments */ +extern uint32_t _sfixed; +extern uint32_t _efixed; +extern uint32_t _etext; +extern uint32_t _srelocate; +extern uint32_t _erelocate; +extern uint32_t _szero; +extern uint32_t _ezero; +extern uint32_t _sstack; +extern uint32_t _estack; + +/** \cond DOXYGEN_SHOULD_SKIP_THIS */ +int main(void); +/** \endcond */ + +void __libc_init_array(void); + +/* Default empty handler */ +void Dummy_Handler(void); + +/* Cortex-M0+ core handlers */ +void NMI_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void HardFault_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SVC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void PendSV_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SysTick_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); + +/* Peripherals handlers */ +void PM_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SYSCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void WDT_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void RTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void EIC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void NVMCTRL_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void DMAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_USB +void USB_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void EVSYS_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void SERCOM3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_SERCOM4 +void SERCOM4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_SERCOM5 +void SERCOM5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +void TCC0_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TCC2_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC3_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC4_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +void TC5_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#ifdef ID_TC6 +void TC6_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_TC7 +void TC7_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_ADC +void ADC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC +void AC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_DAC +void DAC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_PTC +void PTC_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_I2S +void I2S_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif +#ifdef ID_AC1 +void AC1_Handler ( void ) __attribute__ ((weak, alias("Dummy_Handler"))); +#endif + +/* Exception Table */ +__attribute__ ((section(".vectors"))) +const DeviceVectors exception_table = { + + /* Configure Initial Stack Pointer, using linker-generated symbols */ + .pvStack = (void*) (&_estack), + + .pfnReset_Handler = (void*) Reset_Handler, + .pfnNMI_Handler = (void*) NMI_Handler, + .pfnHardFault_Handler = (void*) HardFault_Handler, + .pvReservedM12 = (void*) (0UL), /* Reserved */ + .pvReservedM11 = (void*) (0UL), /* Reserved */ + .pvReservedM10 = (void*) (0UL), /* Reserved */ + .pvReservedM9 = (void*) (0UL), /* Reserved */ + .pvReservedM8 = (void*) (0UL), /* Reserved */ + .pvReservedM7 = (void*) (0UL), /* Reserved */ + .pvReservedM6 = (void*) (0UL), /* Reserved */ + .pfnSVC_Handler = (void*) SVC_Handler, + .pvReservedM4 = (void*) (0UL), /* Reserved */ + .pvReservedM3 = (void*) (0UL), /* Reserved */ + .pfnPendSV_Handler = (void*) PendSV_Handler, + .pfnSysTick_Handler = (void*) SysTick_Handler, + + /* Configurable interrupts */ + .pfnPM_Handler = (void*) PM_Handler, /* 0 Power Manager */ + .pfnSYSCTRL_Handler = (void*) SYSCTRL_Handler, /* 1 System Control */ + .pfnWDT_Handler = (void*) WDT_Handler, /* 2 Watchdog Timer */ + .pfnRTC_Handler = (void*) RTC_Handler, /* 3 Real-Time Counter */ + .pfnEIC_Handler = (void*) EIC_Handler, /* 4 External Interrupt Controller */ + .pfnNVMCTRL_Handler = (void*) NVMCTRL_Handler, /* 5 Non-Volatile Memory Controller */ + .pfnDMAC_Handler = (void*) DMAC_Handler, /* 6 Direct Memory Access Controller */ +#ifdef ID_USB + .pfnUSB_Handler = (void*) USB_Handler, /* 7 Universal Serial Bus */ +#else + .pvReserved7 = (void*) (0UL), /* 7 Reserved */ +#endif + .pfnEVSYS_Handler = (void*) EVSYS_Handler, /* 8 Event System Interface */ + .pfnSERCOM0_Handler = (void*) SERCOM0_Handler, /* 9 Serial Communication Interface 0 */ + .pfnSERCOM1_Handler = (void*) SERCOM1_Handler, /* 10 Serial Communication Interface 1 */ + .pfnSERCOM2_Handler = (void*) SERCOM2_Handler, /* 11 Serial Communication Interface 2 */ + .pfnSERCOM3_Handler = (void*) SERCOM3_Handler, /* 12 Serial Communication Interface 3 */ +#ifdef ID_SERCOM4 + .pfnSERCOM4_Handler = (void*) SERCOM4_Handler, /* 13 Serial Communication Interface 4 */ +#else + .pvReserved13 = (void*) (0UL), /* 13 Reserved */ +#endif +#ifdef ID_SERCOM5 + .pfnSERCOM5_Handler = (void*) SERCOM5_Handler, /* 14 Serial Communication Interface 5 */ +#else + .pvReserved14 = (void*) (0UL), /* 14 Reserved */ +#endif + .pfnTCC0_Handler = (void*) TCC0_Handler, /* 15 Timer Counter Control 0 */ + .pfnTCC1_Handler = (void*) TCC1_Handler, /* 16 Timer Counter Control 1 */ + .pfnTCC2_Handler = (void*) TCC2_Handler, /* 17 Timer Counter Control 2 */ + .pfnTC3_Handler = (void*) TC3_Handler, /* 18 Basic Timer Counter 0 */ + .pfnTC4_Handler = (void*) TC4_Handler, /* 19 Basic Timer Counter 1 */ + .pfnTC5_Handler = (void*) TC5_Handler, /* 20 Basic Timer Counter 2 */ +#ifdef ID_TC6 + .pfnTC6_Handler = (void*) TC6_Handler, /* 21 Basic Timer Counter 3 */ +#else + .pvReserved21 = (void*) (0UL), /* 21 Reserved */ +#endif +#ifdef ID_TC7 + .pfnTC7_Handler = (void*) TC7_Handler, /* 22 Basic Timer Counter 4 */ +#else + .pvReserved22 = (void*) (0UL), /* 22 Reserved */ +#endif +#ifdef ID_ADC + .pfnADC_Handler = (void*) ADC_Handler, /* 23 Analog Digital Converter */ +#else + .pvReserved23 = (void*) (0UL), /* 23 Reserved */ +#endif +#ifdef ID_AC + .pfnAC_Handler = (void*) AC_Handler, /* 24 Analog Comparators 0 */ +#else + .pvReserved24 = (void*) (0UL), /* 24 Reserved */ +#endif +#ifdef ID_DAC + .pfnDAC_Handler = (void*) DAC_Handler, /* 25 Digital Analog Converter */ +#else + .pvReserved25 = (void*) (0UL), /* 25 Reserved */ +#endif +#ifdef ID_PTC + .pfnPTC_Handler = (void*) PTC_Handler, /* 26 Peripheral Touch Controller */ +#else + .pvReserved26 = (void*) (0UL), /* 26 Reserved */ +#endif +#ifdef ID_I2S + .pfnI2S_Handler = (void*) I2S_Handler, /* 27 Inter-IC Sound Interface */ +#else + .pvReserved27 = (void*) (0UL), /* 27 Reserved */ +#endif +#ifdef ID_AC1 + .pfnAC1_Handler = (void*) AC1_Handler /* 28 Analog Comparators 1 */ +#else + .pvReserved28 = (void*) (0UL) /* 28 Reserved */ +#endif +}; + +/** + * \brief This is the code that gets called on processor reset. + * To initialize the device, and call the main() routine. + */ +void Reset_Handler(void) +{ + uint32_t *pSrc, *pDest; + + /* Initialize the relocate segment */ + pSrc = &_etext; + pDest = &_srelocate; + + if (pSrc != pDest) { + for (; pDest < &_erelocate;) { + *pDest++ = *pSrc++; + } + } + + /* Clear the zero segment */ + for (pDest = &_szero; pDest < &_ezero;) { + *pDest++ = 0; + } + + /* Set the vector table base address */ + pSrc = (uint32_t *) & _sfixed; + SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk); + + /* Change default QOS values to have the best performance and correct USB behaviour */ + SBMATRIX->SFR[SBMATRIX_SLAVE_HMCRAMC0].reg = 2; +#if defined(ID_USB) + USB->DEVICE.QOSCTRL.bit.CQOS = 2; + USB->DEVICE.QOSCTRL.bit.DQOS = 2; +#endif + DMAC->QOSCTRL.bit.DQOS = 2; + DMAC->QOSCTRL.bit.FQOS = 2; + DMAC->QOSCTRL.bit.WRBQOS = 2; + + /* Overwriting the default value of the NVMCTRL.CTRLB.MANW bit (errata reference 13134) */ + NVMCTRL->CTRLB.bit.MANW = 1; + + /* Initialize the C library */ + __libc_init_array(); + + /* Initialize system clock settings */ + SystemInit(); // Note: Added for MikroE implementation. + + /* Branch to main function */ + main(); + + /* Infinite loop */ + while (1); +} + +/** + * \brief Default interrupt handler for unused IRQs. + */ +void Dummy_Handler(void) +{ + while (1) { + } +} diff --git a/ARM/gcc_clang/system/src/sam/system_sam_d21_da1.c b/ARM/gcc_clang/system/src/sam/system_sam_d21_da1.c new file mode 100644 index 000000000..b1c65aaf5 --- /dev/null +++ b/ARM/gcc_clang/system/src/sam/system_sam_d21_da1.c @@ -0,0 +1,721 @@ +/** + * \file + * + * \brief Low-level initialization functions called upon chip startup. + * + * Copyright (c) 2018 Microchip Technology Inc. + * + * \asf_license_start + * + * \page License + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the Licence at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * \asf_license_stop + * + */ + +// Note: Changed for MikroE implementation +#include "core_header.h" +#include "mcu.h" + +#ifndef CONF_OSC8M_OVERWRITE_CALIBRATION +#define CONF_OSC8M_OVERWRITE_CALIBRATION 0 +#endif + +#ifndef CONF_OSC8M_CALIB +#define CONF_OSC8M_CALIB 0 +#endif + +#ifndef CONF_OSC32K_OVERWRITE_CALIBRATION +#define CONF_OSC32K_OVERWRITE_CALIBRATION 0 +#endif + +#ifndef CONF_OSC32K_CALIB +#define CONF_OSC32K_CALIB 0 +#endif + +#ifndef CONF_OSCULP32K_OVERWRITE_CALIBRATION +#define CONF_OSCULP32K_OVERWRITE_CALIBRATION 0 +#endif + +#ifndef CONF_DFLL_OVERWRITE_CALIBRATION +#define CONF_DFLL_OVERWRITE_CALIBRATION 0 +#endif + +// Coarse Value <0x0-0x3F> +#ifndef CONF_DFLL_COARSE +#define CONF_DFLL_COARSE (VALUE_DFLLVAL & SYSCTRL_DFLLVAL_COARSE_Msk) +#endif + +// Fine Value <0x0-0x3FF> +#ifndef CONF_DFLL_FINE +#define CONF_DFLL_FINE (VALUE_DFLLVAL & SYSCTRL_DFLLVAL_FINE_Msk) +#endif + +// TODO, Work in progress. +// #if CONF_DFLL_OVERWRITE_CALIBRATION == 0 +#if (CONF_DFLL_FINE == 0 && CONF_DFLL_COARSE == 0) +#define CONF_DEFAULT_CORASE \ + ((FUSES_DFLL48M_COARSE_CAL_Msk & (*((uint32_t *)FUSES_DFLL48M_COARSE_CAL_ADDR))) >> FUSES_DFLL48M_COARSE_CAL_Pos) + +#define CONF_DFLLVAL \ + SYSCTRL_DFLLVAL_COARSE(((CONF_DEFAULT_CORASE) == 0x3F) ? 0x1F : (CONF_DEFAULT_CORASE)) \ + | SYSCTRL_DFLLVAL_FINE(512) + +#else +#define CONF_DFLLVAL SYSCTRL_DFLLVAL_COARSE(CONF_DFLL_COARSE) | SYSCTRL_DFLLVAL_FINE(CONF_DFLL_FINE) + +#endif + +#define CONF_DPLL_REFCLK ((VALUE_DPLLCTRLB & SYSCTRL_DPLLCTRLB_REFCLK_Msk) >> 4) + +#define CONF_GCLK_GENERATOR_0_CONFIG ((VALUE_GENCTRL0 & GCLK_GENCTRL_GENEN) ? 1 : 0) +#define CONF_GCLK_GENERATOR_1_CONFIG ((VALUE_GENCTRL1 & GCLK_GENCTRL_GENEN) ? 1 : 0) +#define CONF_GCLK_GENERATOR_2_CONFIG ((VALUE_GENCTRL2 & GCLK_GENCTRL_GENEN) ? 1 : 0) +#define CONF_GCLK_GENERATOR_3_CONFIG ((VALUE_GENCTRL3 & GCLK_GENCTRL_GENEN) ? 1 : 0) +#define CONF_GCLK_GENERATOR_4_CONFIG ((VALUE_GENCTRL4 & GCLK_GENCTRL_GENEN) ? 1 : 0) +#define CONF_GCLK_GENERATOR_5_CONFIG ((VALUE_GENCTRL5 & GCLK_GENCTRL_GENEN) ? 1 : 0) +#define CONF_GCLK_GENERATOR_6_CONFIG ((VALUE_GENCTRL6 & GCLK_GENCTRL_GENEN) ? 1 : 0) +#define CONF_GCLK_GENERATOR_7_CONFIG ((VALUE_GENCTRL7 & GCLK_GENCTRL_GENEN) ? 1 : 0) +#define CONF_GCLK_GENERATOR_8_CONFIG ((VALUE_GENCTRL8 & GCLK_GENCTRL_GENEN) ? 1 : 0) + +/* Referenced GCLKs (out of 0~7), should be initialized firstly */ +// #define _GCLK_INIT_1ST 0x00000003 +#define _GCLK_INIT_1ST (CONF_GCLK_GENERATOR_0_CONFIG << 0 | \ + CONF_GCLK_GENERATOR_1_CONFIG << 1 | \ + CONF_GCLK_GENERATOR_2_CONFIG << 2 | \ + CONF_GCLK_GENERATOR_3_CONFIG << 3 | \ + CONF_GCLK_GENERATOR_4_CONFIG << 4 | \ + CONF_GCLK_GENERATOR_5_CONFIG << 5 | \ + CONF_GCLK_GENERATOR_6_CONFIG << 6 | \ + CONF_GCLK_GENERATOR_7_CONFIG << 7 | \ + CONF_GCLK_GENERATOR_8_CONFIG << 8) +/* Not referenced GCLKs, initialized last */ +#define _GCLK_INIT_LAST (!_GCLK_INIT_1ST & 0xFF) +#define _GCLK_INIT_GCLK0 0x1 + +#define CONF_CPU_DIV (VALUE_CPUSEL & PM_CPUSEL_CPUDIV_Msk) +#define CONF_APBA_DIV (VALUE_APBASEL & PM_APBASEL_APBADIV_Msk) + +#if CONF_APBA_DIV < CONF_CPU_DIV +#warning APBA DIV cannot less than CPU DIV +#endif + +#define CONF_APBB_DIV (VALUE_APBBSEL & PM_APBBSEL_APBBDIV_Msk) + +#if CONF_APBB_DIV < CONF_CPU_DIV +#warning APBB DIV cannot less than CPU DIV +#endif + +#define CONF_APBC_DIV (VALUE_APBCSEL & PM_APBCSEL_APBCDIV_Msk) + +#if CONF_APBC_DIV < CONF_CPU_DIV +#warning APBC DIV cannot less than CPU DIV +#endif + +typedef uint16_t hri_gclk_clkctrl_reg_t; + +typedef uint32_t hri_nvmctrl_ctrlb_reg_t; + +typedef uint8_t hri_pm_apbasel_reg_t; +typedef uint8_t hri_pm_apbbsel_reg_t; +typedef uint8_t hri_pm_apbcsel_reg_t; +typedef uint8_t hri_pm_cpusel_reg_t; + +typedef uint16_t hri_sysctrl_dfllctrl_reg_t; +typedef uint16_t hri_sysctrl_xosc32k_reg_t; +typedef uint16_t hri_sysctrl_xosc_reg_t; +typedef uint32_t hri_sysctrl_dfllmul_reg_t; +typedef uint32_t hri_sysctrl_dfllval_reg_t; +typedef uint32_t hri_sysctrl_dpllctrlb_reg_t; +typedef uint32_t hri_sysctrl_dpllratio_reg_t; +typedef uint32_t hri_sysctrl_osc32k_reg_t; +typedef uint32_t hri_sysctrl_osc8m_reg_t; +typedef uint32_t hri_sysctrl_pclksr_reg_t; +typedef uint8_t hri_sysctrl_dpllctrla_reg_t; +typedef uint8_t hri_sysctrl_osculp32k_reg_t; + +#define bool _Bool + +// General oscillator macros +#define OSCILLATOR_ENABLE 0x2 +#define OSCILLATOR_ONDEMAND 0x80 +#define OSCILLATOR_RUNSTDBY 0x40 +// OSC8M macros +#define OSC8M_PRESCALER_MASK SYSCTRL_OSC8M_PRESC_Msk +// OSC32K macros +#define OSC32K_EN32K_MASK SYSCTRL_OSC32K_EN32K +#define OSC32K_WRTLOCK_MASK SYSCTRL_OSC32K_WRTLOCK +#define OSC32K_STARTUP_MASK SYSCTRL_OSC32K_STARTUP_Msk +// OSCULP32K macros +#define OSCULP32K_WRTLOCK_MASK SYSCTRL_OSCULP32K_WRTLOCK +#define OSCULP32K_CALIB_MASK SYSCTRL_OSCULP32K_CALIB_Msk + +/** + * Initial system clock frequency. The System RC Oscillator (RCSYS) provides + * the source for the main clock at chip startup. + */ +#define __SYSTEM_CLOCK (FOSC_KHZ_VALUE * 1000) + +uint32_t SystemCoreClock = __SYSTEM_CLOCK; /*!< System Clock Frequency (Core Clock)*/ + +static inline void hri_nvmctrl_set_CTRLB_RWS_bf( const void *const hw, hri_nvmctrl_ctrlb_reg_t mask ) +{ + ( ( Nvmctrl * )hw )->CTRLB.reg |= NVMCTRL_CTRLB_RWS( mask ); +} + +static inline void hri_pm_set_CPUSEL_CPUDIV_bf( const void *const hw, hri_pm_cpusel_reg_t mask ) +{ + ( ( Pm * )hw )->CPUSEL.reg |= PM_CPUSEL_CPUDIV( mask ); +} + +static inline void hri_pm_set_APBASEL_APBADIV_bf( const void *const hw, hri_pm_apbasel_reg_t mask ) +{ + ( ( Pm * )hw )->APBASEL.reg |= PM_APBASEL_APBADIV( mask ); +} + +static inline void hri_pm_set_APBBSEL_APBBDIV_bf( const void *const hw, hri_pm_apbbsel_reg_t mask ) +{ + ( ( Pm * )hw )->APBBSEL.reg |= PM_APBBSEL_APBBDIV( mask ); +} + +static inline void hri_pm_set_APBCSEL_APBCDIV_bf( const void *const hw, hri_pm_apbcsel_reg_t mask ) +{ + ( ( Pm * )hw )->APBCSEL.reg |= PM_APBCSEL_APBCDIV( mask ); +} + +void _pm_init( void ) +{ + hri_pm_set_CPUSEL_CPUDIV_bf( PM, CONF_CPU_DIV ); + hri_pm_set_APBASEL_APBADIV_bf( PM, CONF_APBA_DIV ); + hri_pm_set_APBBSEL_APBBDIV_bf( PM, CONF_APBB_DIV ); + hri_pm_set_APBCSEL_APBCDIV_bf( PM, CONF_APBC_DIV ); +} + +static inline void hri_sysctrl_write_XOSC32K_reg( const void *const hw, hri_sysctrl_xosc32k_reg_t data ) +{ + ( ( Sysctrl * )hw )->XOSC32K.reg = data; +} + +static inline void hri_sysctrl_write_XOSC_reg( const void *const hw, hri_sysctrl_xosc_reg_t data ) +{ + ( ( Sysctrl * )hw )->XOSC.reg = data; +} + +static inline hri_sysctrl_osc8m_reg_t hri_sysctrl_read_OSC8M_CALIB_bf( const void *const hw ) +{ + uint32_t tmp; + tmp = ( ( Sysctrl * )hw )->OSC8M.reg; + tmp = ( tmp & SYSCTRL_OSC8M_CALIB_Msk ) >> SYSCTRL_OSC8M_CALIB_Pos; + return tmp; +} + +static inline void hri_sysctrl_write_OSC8M_reg( const void *const hw, hri_sysctrl_osc8m_reg_t data ) +{ + ( ( Sysctrl * )hw )->OSC8M.reg = data; +} + +static inline hri_sysctrl_osc32k_reg_t hri_sysctrl_read_OSC32K_CALIB_bf( const void *const hw ) +{ + uint32_t tmp; + tmp = ( ( Sysctrl * )hw )->OSC32K.reg; + tmp = ( tmp & SYSCTRL_OSC32K_CALIB_Msk ) >> SYSCTRL_OSC32K_CALIB_Pos; + return tmp; +} + +static inline void hri_sysctrl_write_OSC32K_reg( const void *const hw, hri_sysctrl_osc32k_reg_t data ) +{ + ( ( Sysctrl * )hw )->OSC32K.reg = data; +} + +static inline void hri_sysctrl_set_OSC32K_ENABLE_bit( const void *const hw ) +{ + ( ( Sysctrl * )hw )->OSC32K.reg |= SYSCTRL_OSC32K_ENABLE; +} + +static inline hri_sysctrl_osculp32k_reg_t hri_sysctrl_read_OSCULP32K_CALIB_bf( const void *const hw ) +{ + uint8_t tmp; + tmp = ( ( Sysctrl * )hw )->OSCULP32K.reg; + tmp = ( tmp & SYSCTRL_OSCULP32K_CALIB_Msk ) >> SYSCTRL_OSCULP32K_CALIB_Pos; + return tmp; +} + +static inline void hri_sysctrl_write_OSCULP32K_reg( const void *const hw, hri_sysctrl_osculp32k_reg_t data ) +{ + ( ( Sysctrl * )hw )->OSCULP32K.reg = data; +} + +static inline bool hri_sysctrl_get_PCLKSR_XOSC32KRDY_bit( const void *const hw ) +{ + return ( ( ( Sysctrl * )hw )->PCLKSR.reg & SYSCTRL_PCLKSR_XOSC32KRDY ) >> SYSCTRL_PCLKSR_XOSC32KRDY_Pos; +} + +static inline void hri_sysctrl_set_XOSC32K_ONDEMAND_bit( const void *const hw ) +{ + ( ( Sysctrl * )hw )->XOSC32K.reg |= SYSCTRL_XOSC32K_ONDEMAND; +} + +static inline bool hri_sysctrl_get_PCLKSR_XOSCRDY_bit( const void *const hw ) +{ + return ( ( ( Sysctrl * )hw )->PCLKSR.reg & SYSCTRL_PCLKSR_XOSCRDY ) >> SYSCTRL_PCLKSR_XOSCRDY_Pos; +} + +static inline void hri_sysctrl_set_XOSC_AMPGC_bit( const void *const hw ) +{ + ( ( Sysctrl * )hw )->XOSC.reg |= SYSCTRL_XOSC_AMPGC; +} + +static inline void hri_sysctrl_set_XOSC_ONDEMAND_bit( const void *const hw ) +{ + ( ( Sysctrl * )hw )->XOSC.reg |= SYSCTRL_XOSC_ONDEMAND; +} + +static inline bool hri_sysctrl_get_PCLKSR_OSC32KRDY_bit( const void *const hw ) +{ + return ( ( ( Sysctrl * )hw )->PCLKSR.reg & SYSCTRL_PCLKSR_OSC32KRDY ) >> SYSCTRL_PCLKSR_OSC32KRDY_Pos; +} + +static inline void hri_sysctrl_set_OSC32K_ONDEMAND_bit( const void *const hw ) +{ + ( ( Sysctrl * )hw )->OSC32K.reg |= SYSCTRL_OSC32K_ONDEMAND; +} + +static inline bool hri_sysctrl_get_PCLKSR_OSC8MRDY_bit( const void *const hw ) +{ + return ( ( ( Sysctrl * )hw )->PCLKSR.reg & SYSCTRL_PCLKSR_OSC8MRDY ) >> SYSCTRL_PCLKSR_OSC8MRDY_Pos; +} + +static inline void hri_sysctrl_set_OSC8M_ONDEMAND_bit( const void *const hw ) +{ + ( ( Sysctrl * )hw )->OSC8M.reg |= SYSCTRL_OSC8M_ONDEMAND; +} + +static inline hri_sysctrl_osc8m_reg_t hri_sysctrl_read_OSC8M_FRANGE_bf( const void *const hw ) +{ + uint32_t tmp; + tmp = ( ( Sysctrl * )hw )->OSC8M.reg; + tmp = ( tmp & SYSCTRL_OSC8M_FRANGE_Msk ) >> SYSCTRL_OSC8M_FRANGE_Pos; + return tmp; +} + +void _sysctrl_init_sources( void ) +{ + void *hw = ( void *)SYSCTRL; + uint16_t calib; + + #if ( VALUE_XOSC32K & OSCILLATOR_ENABLE ) + hri_sysctrl_write_XOSC32K_reg( hw, VALUE_XOSC32K ); + #endif + + #if ( VALUE_XOSC & OSCILLATOR_ENABLE ) + hri_sysctrl_write_XOSC_reg( hw, VALUE_XOSC ); + #endif + + uint8_t osc8m_enable = ( VALUE_OSC8M & OSCILLATOR_ENABLE ) ? 1 : 0; + uint8_t osc8m_runstdby = ( VALUE_OSC8M & OSCILLATOR_RUNSTDBY ) ? 1 : 0; + uint16_t osc8m_prescaler = ( VALUE_OSC8M & OSC8M_PRESCALER_MASK ) >> 8; + + #if ( VALUE_OSC8M & OSCILLATOR_ENABLE ) + calib = hri_sysctrl_read_OSC8M_CALIB_bf( hw ); + + hri_sysctrl_write_OSC8M_reg( hw, + SYSCTRL_OSC8M_FRANGE( hri_sysctrl_read_OSC8M_FRANGE_bf( hw ) ) | + /* TODO, Work in progress */ + #if CONF_OSC8M_OVERWRITE_CALIBRATION == 1 + SYSCTRL_OSC8M_CALIB( CONF_OSC8M_CALIB ) | + #else + SYSCTRL_OSC8M_CALIB( calib ) | + #endif + SYSCTRL_OSC8M_PRESC( osc8m_prescaler ) | ( osc8m_runstdby << SYSCTRL_OSC8M_RUNSTDBY_Pos ) | ( osc8m_enable << SYSCTRL_OSC8M_ENABLE_Pos ) ); + #endif + + uint8_t osc32k_enable = ( VALUE_OSC32K & OSCILLATOR_ENABLE ) ? 1 : 0; + uint8_t osc32k_runstdby = ( VALUE_OSC32K & OSCILLATOR_RUNSTDBY ) ? 1 : 0; + uint8_t osc32k_en32k = ( VALUE_OSC32K & OSC32K_EN32K_MASK ) ? 1 : 0; + uint8_t osc32k_wrtlock = ( VALUE_OSC32K & OSC32K_WRTLOCK_MASK ) ? 1 : 0; + uint16_t osc32k_startup = ( VALUE_OSC32K & OSC32K_STARTUP_MASK ) >> 8; + #if ( VALUE_OSC32K & OSCILLATOR_ENABLE ) + calib = hri_sysctrl_read_OSC32K_CALIB_bf( hw ); + + hri_sysctrl_write_OSC32K_reg( + hw, + /* TODO, Work in progress */ + #if CONF_OSC32K_OVERWRITE_CALIBRATION == 1 + SYSCTRL_OSC32K_CALIB( CONF_OSC32K_CALIB ) | + #else + SYSCTRL_OSC32K_CALIB( calib ) | + #endif + ( osc32k_wrtlock << SYSCTRL_OSC32K_WRTLOCK_Pos ) | SYSCTRL_OSC32K_STARTUP( osc32k_startup ) | ( osc32k_runstdby << SYSCTRL_OSC32K_RUNSTDBY_Pos ) | ( osc32k_en32k << SYSCTRL_OSC32K_EN32K_Pos ) | ( osc32k_enable << SYSCTRL_OSC32K_ENABLE_Pos ) ); + #else + /* Enable OSC32K anyway since GCLK configuration may need it to sync */ + hri_sysctrl_set_OSC32K_ENABLE_bit( hw ); + #endif + + uint8_t osculp32k_wrtlock = ( VALUE_OSCULP32K & OSCULP32K_WRTLOCK_MASK ) ? 1 : 0; + uint8_t osculp32k_calib = VALUE_OSCULP32K & OSCULP32K_CALIB_MASK; + + #if ( VALUE_OSCULP32K & OSCILLATOR_ENABLE ) + calib = hri_sysctrl_read_OSCULP32K_CALIB_bf( hw ); + + hri_sysctrl_write_OSCULP32K_reg( hw, + /* TODO, Work in progress */ + #if OSC32K_OVERWRITE_CALIBRATION == 1 + SYSCTRL_OSCULP32K_CALIB( osculp32k_calib ) | + #else + SYSCTRL_OSCULP32K_CALIB( calib ) | + #endif + ( osculp32k_wrtlock << SYSCTRL_OSCULP32K_WRTLOCK_Pos ) ); + #endif + + #if ( VALUE_XOSC32K & OSCILLATOR_ENABLE ) + while ( !hri_sysctrl_get_PCLKSR_XOSC32KRDY_bit( hw ) ) + ; + #if ( VALUE_XOSC32K & OSCILLATOR_ONDEMAND ) + hri_sysctrl_set_XOSC32K_ONDEMAND_bit( hw ); + #endif + #endif + + #if ( VALUE_XOSC & OSCILLATOR_ENABLE ) + while ( !hri_sysctrl_get_PCLKSR_XOSCRDY_bit( hw ) ) + ; + #if ( VALUE_XOSC & SYSCTRL_XOSC_AMPGC ) + hri_sysctrl_set_XOSC_AMPGC_bit( hw ); + #endif + #if ( VALUE_XOSC & OSCILLATOR_ONDEMAND ) + hri_sysctrl_set_XOSC_ONDEMAND_bit( hw ); + #endif + #endif + + #if ( VALUE_OSC32K & OSCILLATOR_ENABLE ) + while ( !hri_sysctrl_get_PCLKSR_OSC32KRDY_bit( hw ) ) + ; + #if ( VALUE_OSC32K & OSCILLATOR_ONDEMAND ) + hri_sysctrl_set_OSC32K_ONDEMAND_bit( hw ); + #endif + #endif + + #if ( VALUE_OSC8M & OSCILLATOR_ENABLE ) + while ( !hri_sysctrl_get_PCLKSR_OSC8MRDY_bit( hw ) ) + ; + #if ( VALUE_OSC8M & OSCILLATOR_ENABLE ) + hri_sysctrl_set_OSC8M_ONDEMAND_bit( hw ); + #endif + #endif + + ( void )calib, ( void )hw; +} + +static inline void hri_sysctrl_write_DFLLMUL_reg( const void *const hw, hri_sysctrl_dfllmul_reg_t data ) +{ + ( ( Sysctrl * )hw )->DFLLMUL.reg = data; +} + +static inline void hri_sysctrl_write_DFLLVAL_reg( const void *const hw, hri_sysctrl_dfllval_reg_t data ) +{ + ( ( Sysctrl * )hw )->DFLLVAL.reg = data; +} + +static inline void hri_sysctrl_write_DFLLCTRL_reg( const void *const hw, hri_sysctrl_dfllctrl_reg_t data ) +{ + ( ( Sysctrl * )hw )->DFLLCTRL.reg = data; +} + +static inline void hri_gclk_write_CLKCTRL_reg( const void *const hw, hri_gclk_clkctrl_reg_t data ) +{ + ( ( Gclk * )hw )->CLKCTRL.reg = data; +} + +static inline void hri_sysctrl_write_DPLLCTRLA_reg( const void *const hw, hri_sysctrl_dpllctrla_reg_t data ) +{ + ( ( Sysctrl * )hw )->DPLLCTRLA.reg = data; +} + +static inline void hri_sysctrl_write_DPLLRATIO_reg( const void *const hw, hri_sysctrl_dpllratio_reg_t data ) +{ + ( ( Sysctrl * )hw )->DPLLRATIO.reg = data; +} + +static inline void hri_sysctrl_write_DPLLCTRLB_reg( const void *const hw, hri_sysctrl_dpllctrlb_reg_t data ) +{ + ( ( Sysctrl * )hw )->DPLLCTRLB.reg = data; +} + +static inline bool hri_sysctrl_get_DFLLCTRL_MODE_bit( const void *const hw ) +{ + uint16_t tmp; + tmp = ( ( Sysctrl * )hw )->DFLLCTRL.reg; + tmp = ( tmp & SYSCTRL_DFLLCTRL_MODE ) >> SYSCTRL_DFLLCTRL_MODE_Pos; + return ( bool )tmp; +} + +static inline bool hri_sysctrl_get_PCLKSR_DFLLRDY_bit( const void *const hw ) +{ + return ( ( ( Sysctrl * )hw )->PCLKSR.reg & SYSCTRL_PCLKSR_DFLLRDY ) >> SYSCTRL_PCLKSR_DFLLRDY_Pos; +} + +static inline hri_sysctrl_pclksr_reg_t hri_sysctrl_get_PCLKSR_reg( const void *const hw, hri_sysctrl_pclksr_reg_t mask ) +{ + uint32_t tmp; + tmp = ( ( Sysctrl * )hw )->PCLKSR.reg; + tmp &= mask; + return tmp; +} + +static inline void hri_sysctrl_set_DFLLCTRL_ONDEMAND_bit( const void *const hw ) +{ + ( ( Sysctrl * )hw )->DFLLCTRL.reg |= SYSCTRL_DFLLCTRL_ONDEMAND; +} + +static inline bool hri_sysctrl_get_DPLLSTATUS_ENABLE_bit( const void *const hw ) +{ + return ( ( ( Sysctrl * )hw )->DPLLSTATUS.reg & SYSCTRL_DPLLSTATUS_ENABLE ) >> SYSCTRL_DPLLSTATUS_ENABLE_Pos; +} + +static inline bool hri_sysctrl_get_DPLLSTATUS_LOCK_bit( const void *const hw ) +{ + return ( ( ( Sysctrl * )hw )->DPLLSTATUS.reg & SYSCTRL_DPLLSTATUS_LOCK ) >> SYSCTRL_DPLLSTATUS_LOCK_Pos; +} + +static inline bool hri_sysctrl_get_DPLLSTATUS_CLKRDY_bit( const void *const hw ) +{ + return ( ( ( Sysctrl * )hw )->DPLLSTATUS.reg & SYSCTRL_DPLLSTATUS_CLKRDY ) >> SYSCTRL_DPLLSTATUS_CLKRDY_Pos; +} + +static inline void hri_sysctrl_set_DPLLCTRLA_ONDEMAND_bit( const void *const hw ) +{ + ( ( Sysctrl * )hw )->DPLLCTRLA.reg |= SYSCTRL_DPLLCTRLA_ONDEMAND; +} + +static inline bool hri_gclk_get_STATUS_SYNCBUSY_bit( const void *const hw ) +{ + return ( ( ( Gclk * )hw )->STATUS.reg & GCLK_STATUS_SYNCBUSY ) >> GCLK_STATUS_SYNCBUSY_Pos; +} + +static inline void hri_sysctrl_clear_OSC32K_ENABLE_bit( const void *const hw ) +{ + ( ( Sysctrl * )hw )->OSC32K.reg &= ~SYSCTRL_OSC32K_ENABLE; +} + +void _sysctrl_init_referenced_generators( void ) +{ + void *hw = ( void * )SYSCTRL; + + #if ( VALUE_DFLLCTRL & OSCILLATOR_ENABLE ) + #if ( !VALUE_DFLLCTRL & 0x20 ) && ( VALUE_DFLLCTRL & 0x4 ) + ( ( Gclk * )hw )->CLKCTRL.reg = VALUE_CLKCTRL; + #endif + + ( ( Sysctrl * )hw )->DFLLCTRL.reg = SYSCTRL_DFLLCTRL_ENABLE; + + while ( !hri_sysctrl_get_PCLKSR_DFLLRDY_bit( hw ) ) + ; + + ( ( Sysctrl * )hw )->DFLLMUL.reg = VALUE_DFLLMUL; + + ( ( Sysctrl * )hw )->DFLLVAL.reg = CONF_DFLLVAL; + + ( ( Sysctrl * )hw )->DFLLCTRL.reg = VALUE_DFLLCTRL; + #endif + + #if ( VALUE_DPLLCTRLA & OSCILLATOR_ENABLE ) + #if CONF_DPLL_REFCLK == SYSCTRL_DPLLCTRLB_REFCLK_GCLK_Val + hri_gclk_write_CLKCTRL_reg( GCLK, + GCLK_CLKCTRL_ID( 1 ) | GCLK_CLKCTRL_GEN( CONF_DPLL_GCLK ) | ( 1 << GCLK_CLKCTRL_CLKEN_Pos ) ); + #endif + + hri_sysctrl_write_DPLLCTRLA_reg( hw, VALUE_DPLLCTRLA ); + hri_sysctrl_write_DPLLRATIO_reg( hw, VALUE_DPLLRATIO ); + hri_sysctrl_write_DPLLCTRLB_reg( hw, VALUE_DPLLCTRLB ); + #endif + + #if ( VALUE_DFLLCTRL & OSCILLATOR_ENABLE ) + if ( hri_sysctrl_get_DFLLCTRL_MODE_bit( hw ) ) { + + #if ( !VALUE_DFLLCTRL & 0x20 ) + hri_sysctrl_pclksr_reg_t status_mask = SYSCTRL_PCLKSR_DFLLRDY | SYSCTRL_PCLKSR_DFLLLCKF | SYSCTRL_PCLKSR_DFLLLCKC; + #else + hri_sysctrl_pclksr_reg_t status_mask = SYSCTRL_PCLKSR_DFLLRDY; + #endif + + while ( hri_sysctrl_get_PCLKSR_reg( hw, status_mask ) != status_mask ) + ; + + } else { + while ( !hri_sysctrl_get_PCLKSR_DFLLRDY_bit( hw ) ) + ; + } + #endif + + #if ( VALUE_DFLLCTRL & OSCILLATOR_ONDEMAND ) + hri_sysctrl_set_DFLLCTRL_ONDEMAND_bit( hw ); + #endif + + #if ( VALUE_DPLLCTRLA & OSCILLATOR_ENABLE ) + while ( !( hri_sysctrl_get_DPLLSTATUS_ENABLE_bit( hw ) || hri_sysctrl_get_DPLLSTATUS_LOCK_bit( hw ) || hri_sysctrl_get_DPLLSTATUS_CLKRDY_bit( hw ) ) ) + ; + #endif + + #if ( VALUE_DPLLCTRLA & OSCILLATOR_ONDEMAND ) + hri_sysctrl_set_DPLLCTRLA_ONDEMAND_bit( hw ); + #endif + + #if ( VALUE_DFLLCTRL & OSCILLATOR_ENABLE ) + while ( hri_gclk_get_STATUS_SYNCBUSY_bit( GCLK ) ) + ; + #endif + + #if ( VALUE_OSC32K & OSCILLATOR_ENABLE == 0 ) + /* Disable after all possible configurations needs sync written. */ + hri_sysctrl_clear_OSC32K_ENABLE_bit( hw ); + #endif + + ( void )hw; +} + +void _gclk_init_generators_by_fref( uint32_t bm ) +{ + #if CONF_GCLK_GENERATOR_0_CONFIG == 1 + if ( bm & ( 1ul << 0 ) ) { + GCLK->GENCTRL.reg = VALUE_GENCTRL0; + + /* Wait for the write to complete */ + while ( GCLK->STATUS.bit.SYNCBUSY ) + ; + } + #endif + + #if CONF_GCLK_GENERATOR_1_CONFIG == 1 + if ( bm & ( 1ul << 1 ) ) { + GCLK->GENCTRL.reg = VALUE_GENCTRL1; + + /* Wait for the write to complete */ + while ( GCLK->STATUS.bit.SYNCBUSY ) + ; + } + #endif + + #if CONF_GCLK_GENERATOR_2_CONFIG == 1 + if ( bm & ( 1ul << 2 ) ) { + GCLK->GENCTRL.reg = VALUE_GENCTRL2; + + /* Wait for the write to complete */ + while ( GCLK->STATUS.bit.SYNCBUSY ) + ; + } + #endif + + #if CONF_GCLK_GENERATOR_3_CONFIG == 1 + if ( bm & ( 1ul << 3 ) ) { + GCLK->GENCTRL.reg = VALUE_GENCTRL3; + + /* Wait for the write to complete */ + while ( GCLK->STATUS.bit.SYNCBUSY ) + ; + } + #endif + + #if CONF_GCLK_GENERATOR_4_CONFIG == 1 + if ( bm & ( 1ul << 4 ) ) { + GCLK->GENCTRL.reg = VALUE_GENCTRL4; + + /* Wait for the write to complete */ + while ( GCLK->STATUS.bit.SYNCBUSY ) + ; + } + #endif + + #if CONF_GCLK_GENERATOR_5_CONFIG == 1 + if ( bm & ( 1ul << 5 ) ) { + GCLK->GENCTRL.reg = VALUE_GENCTRL5; + + /* Wait for the write to complete */ + while ( GCLK->STATUS.bit.SYNCBUSY ) + ; + } + #endif + + #if CONF_GCLK_GENERATOR_6_CONFIG == 1 + if ( bm & ( 1ul << 6 ) ) { + GCLK->GENCTRL.reg = VALUE_GENCTRL6; + + /* Wait for the write to complete */ + while ( GCLK->STATUS.bit.SYNCBUSY ) + ; + } + #endif + + #if CONF_GCLK_GENERATOR_7_CONFIG == 1 + if ( bm & ( 1ul << 7 ) ) { + GCLK->GENCTRL.reg = VALUE_GENCTRL7; + + /* Wait for the write to complete */ + while ( GCLK->STATUS.bit.SYNCBUSY ) + ; + } + #endif + + #if CONF_GCLK_GENERATOR_8_CONFIG == 1 + if ( bm & ( 1ul << 8 ) ) { + GCLK->GENCTRL.reg = VALUE_GENCTRL8; + + /* Wait for the write to complete */ + while ( GCLK->STATUS.bit.SYNCBUSY ) + ; + } + #endif +} + +/** + * Initialize the system + * + * @brief Setup the microcontroller system. + * Initialize the System and update the SystemCoreClock variable. + */ +void SystemInit( void ) +{ + // Keep the default device state after reset + SystemCoreClock = __SYSTEM_CLOCK; + uint8_t nvmctrl_ctrlb_rws = ( VALUE_NVMCTRL_CTRLB & NVMCTRL_CTRLB_RWS_Msk ) >> 1; + hri_nvmctrl_set_CTRLB_RWS_bf( NVMCTRL, nvmctrl_ctrlb_rws ); + _pm_init(); + _sysctrl_init_sources(); + + #if _GCLK_INIT_1ST + _gclk_init_generators_by_fref( _GCLK_INIT_1ST ); + #endif + + _sysctrl_init_referenced_generators(); + + _gclk_init_generators_by_fref( _GCLK_INIT_GCLK0 ); + _gclk_init_generators_by_fref( _GCLK_INIT_LAST ); + + return; +} + +/** + * Update SystemCoreClock variable + * + * @brief Updates the SystemCoreClock with current core Clock + * retrieved from cpu registers. + */ +void SystemCoreClockUpdate( void ) +{ + // Not implemented + SystemCoreClock = __SYSTEM_CLOCK; + + return; +}