diff --git a/firmware/iot-risk-data-logger-nfc-samd21.X/iot-risk-data-logger-nfc-samd21.mc3 b/firmware/iot-risk-data-logger-nfc-samd21.X/iot-risk-data-logger-nfc-samd21.mc3
index 3494825..a6a3147 100644
--- a/firmware/iot-risk-data-logger-nfc-samd21.X/iot-risk-data-logger-nfc-samd21.mc3
+++ b/firmware/iot-risk-data-logger-nfc-samd21.X/iot-risk-data-logger-nfc-samd21.mc3
@@ -135,7 +135,9 @@
<?xml version="1.0" encoding="UTF-8"?><FreeRTOS>
<FreeRTOS dnOrder="0" id="FREERTOS_CPU_CLOCK_HZ">
- <Values dnOrder="0"/>
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="FreeRTOS" value="47972352"/>
+ </Values>
</FreeRTOS>
</FreeRTOS>
@@ -3625,30 +3627,30 @@
<?xml version="1.0" encoding="UTF-8"?><UserData>
<UserData dnOrder="0">
- <GraphSettings canvasHeight="592" canvasWidth="765" dnOrder="0"/>
+ <GraphSettings canvasHeight="695" canvasWidth="826" dnOrder="0"/>
<ComponentGraph dnOrder="1" id="__ROOTVIEW">
<ElementPositions dnOrder="0">
- <ElementPosition dnOrder="0" id="FreeRTOS" x="160" y="20"/>
- <ElementPosition dnOrder="1" id="HarmonyCore" x="320" y="20"/>
- <ElementPosition dnOrder="2" id="cmsis" x="30" y="240"/>
- <ElementPosition dnOrder="3" id="core" x="30" y="200"/>
- <ElementPosition dnOrder="4" id="cryptoauthlib" x="577" y="226"/>
- <ElementPosition dnOrder="5" id="dfp" x="30" y="160"/>
- <ElementPosition dnOrder="6" id="drv_at25df" x="174" y="434"/>
- <ElementPosition dnOrder="7" id="drv_i2c" x="176" y="241"/>
- <ElementPosition dnOrder="8" id="drv_memory" x="330" y="420"/>
- <ElementPosition dnOrder="9" id="drv_usbfs_v1" x="635" y="101"/>
- <ElementPosition dnOrder="10" id="eic" x="166" y="94"/>
- <ElementPosition dnOrder="11" id="evsys" x="30" y="100"/>
+ <ElementPosition dnOrder="0" id="FreeRTOS" x="688" y="8"/>
+ <ElementPosition dnOrder="1" id="HarmonyCore" x="359" y="581"/>
+ <ElementPosition dnOrder="2" id="cmsis" x="307" y="82"/>
+ <ElementPosition dnOrder="3" id="core" x="306" y="48"/>
+ <ElementPosition dnOrder="4" id="cryptoauthlib" x="519" y="564"/>
+ <ElementPosition dnOrder="5" id="dfp" x="305" y="15"/>
+ <ElementPosition dnOrder="6" id="drv_at25df" x="151" y="325"/>
+ <ElementPosition dnOrder="7" id="drv_i2c" x="157" y="132"/>
+ <ElementPosition dnOrder="8" id="drv_memory" x="292" y="325"/>
+ <ElementPosition dnOrder="9" id="drv_usbfs_v1" x="186" y="580"/>
+ <ElementPosition dnOrder="10" id="eic" x="166" y="18"/>
+ <ElementPosition dnOrder="11" id="evsys" x="163" y="70"/>
<ElementPosition dnOrder="12" id="nvmctrl" x="20" y="20"/>
- <ElementPosition dnOrder="13" id="pm" x="477" y="101"/>
- <ElementPosition dnOrder="14" id="rtc" x="466" y="20"/>
- <ElementPosition dnOrder="15" id="sercom0" x="27" y="279"/>
- <ElementPosition dnOrder="16" id="sercom1" x="28" y="450"/>
- <ElementPosition dnOrder="17" id="sys_time" x="333" y="119"/>
- <ElementPosition dnOrder="18" id="tc3" x="205" y="161"/>
- <ElementPosition dnOrder="19" id="usb_device" x="634" y="16"/>
- <ElementPosition dnOrder="20" id="usb_device_msd" x="590" y="360"/>
+ <ElementPosition dnOrder="13" id="pm" x="549" y="6"/>
+ <ElementPosition dnOrder="14" id="rtc" x="550" y="79"/>
+ <ElementPosition dnOrder="15" id="sercom0" x="22" y="133"/>
+ <ElementPosition dnOrder="16" id="sercom1" x="17" y="324"/>
+ <ElementPosition dnOrder="17" id="sys_time" x="684" y="107"/>
+ <ElementPosition dnOrder="18" id="tc3" x="548" y="153"/>
+ <ElementPosition dnOrder="19" id="usb_device" x="30" y="579"/>
+ <ElementPosition dnOrder="20" id="usb_device_msd" x="439" y="324"/>
</ElementPositions>
</ComponentGraph>
</UserData>
@@ -3659,6 +3661,161 @@
__ROOTVIEW
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="CONFIG_CLOCK_DFLL_ENABLE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="true"/>
+ <User dnOrder="1" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="CONFIG_CLOCK_DFLL_MUL">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="1464"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="CONFIG_CLOCK_DFLL_OPMODE">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="1"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="CONFIG_CLOCK_DPLL_DIVIDER">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="0"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="CONFIG_CLOCK_DPLL_DIVIDER_VALUE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="2"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="CONFIG_CLOCK_DPLL_ENABLE">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="false"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="CONFIG_CLOCK_DPLL_LDRFRAC_FRACTION">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="11"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="CONFIG_CLOCK_DPLL_LDR_INTEGER">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="2928"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="CONFIG_CLOCK_DPLL_MULTIPLIER_VALUE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="2929.6875"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="CONFIG_CLOCK_DPLL_REF_CLOCK">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="0"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="CONF_CLOCK_XOSC32K_ENABLE">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="CPU_CLOCK_FREQUENCY">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="47972352"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="DFLL_CLOCK_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="47972352"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="DPLL_CLOCK_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="0"/>
+ </Values>
+ </core>
+</core>
+
+
<?xml version="1.0" encoding="UTF-8"?><core>
@@ -3675,7 +3832,261 @@
<?xml version="1.0" encoding="UTF-8"?><core>
<core dnOrder="0" id="EIC_CLOCK_FREQUENCY">
<Values dnOrder="0">
- <Dynamic dnOrder="0" id="core" value="48000000"/>
+ <Dynamic dnOrder="0" id="core" value="47972352"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_0_DIV">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="1"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_0_DIVIDER_VALUE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="1"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_0_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="47972352"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_0_SRC">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="7"/>
+ <User dnOrder="1" value="7"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_1_DIV">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="32"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_1_DIVIDER_VALUE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="32"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_1_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="1024"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_1_RUNSTDBY">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_1_SRC">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="4"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_2_DIV">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="1"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_2_DIVIDER_VALUE">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="1"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_2_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="32768"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_2_SRC">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="5"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_3_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="0"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_4_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="0"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_5_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="0"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_6_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="0"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_7_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="0"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_8_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="0"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_CYCLE_FORMED">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="false"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_ID_0_CHEN">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_ID_0_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="32768"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_ID_0_GENSEL">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="2"/>
</Values>
</core>
</core>
@@ -3697,7 +4108,7 @@
<?xml version="1.0" encoding="UTF-8"?><core>
<core dnOrder="0" id="GCLK_ID_20_FREQ">
<Values dnOrder="0">
- <Dynamic dnOrder="0" id="core" value="48000000"/>
+ <Dynamic dnOrder="0" id="core" value="47972352"/>
</Values>
</core>
</core>
@@ -3719,7 +4130,7 @@
<?xml version="1.0" encoding="UTF-8"?><core>
<core dnOrder="0" id="GCLK_ID_21_FREQ">
<Values dnOrder="0">
- <Dynamic dnOrder="0" id="core" value="48000000"/>
+ <Dynamic dnOrder="0" id="core" value="47972352"/>
</Values>
</core>
</core>
@@ -3741,7 +4152,7 @@
<?xml version="1.0" encoding="UTF-8"?><core>
<core dnOrder="0" id="GCLK_ID_27_FREQ">
<Values dnOrder="0">
- <Dynamic dnOrder="0" id="core" value="48000000"/>
+ <Dynamic dnOrder="0" id="core" value="47972352"/>
</Values>
</core>
</core>
@@ -3763,7 +4174,18 @@
<?xml version="1.0" encoding="UTF-8"?><core>
<core dnOrder="0" id="GCLK_ID_4_FREQ">
<Values dnOrder="0">
- <Dynamic dnOrder="0" id="core" value="48000000"/>
+ <Dynamic dnOrder="0" id="core" value="1024"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_ID_4_GENSEL">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="1"/>
</Values>
</core>
</core>
@@ -3785,7 +4207,7 @@
<?xml version="1.0" encoding="UTF-8"?><core>
<core dnOrder="0" id="GCLK_ID_5_FREQ">
<Values dnOrder="0">
- <Dynamic dnOrder="0" id="core" value="48000000"/>
+ <Dynamic dnOrder="0" id="core" value="47972352"/>
</Values>
</core>
</core>
@@ -3807,7 +4229,117 @@
<?xml version="1.0" encoding="UTF-8"?><core>
<core dnOrder="0" id="GCLK_ID_6_FREQ">
<Values dnOrder="0">
- <Dynamic dnOrder="0" id="core" value="48000000"/>
+ <Dynamic dnOrder="0" id="core" value="47972352"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_INST_NUM1">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_INST_NUM2">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_IO_0_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="0"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_IO_1_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="0"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_IO_2_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="0"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_IO_3_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="0"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_IO_4_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="0"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_IO_5_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="0"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_IO_6_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="0"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="GCLK_IO_7_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="0"/>
</Values>
</core>
</core>
@@ -4335,7 +4867,7 @@
<?xml version="1.0" encoding="UTF-8"?><core>
<core dnOrder="0" id="RTC_CLOCK_FREQUENCY">
<Values dnOrder="0">
- <Dynamic dnOrder="0" id="core" value="48000000"/>
+ <Dynamic dnOrder="0" id="core" value="1024"/>
</Values>
</core>
</core>
@@ -4401,7 +4933,7 @@
<?xml version="1.0" encoding="UTF-8"?><core>
<core dnOrder="0" id="SERCOM0_CORE_CLOCK_FREQUENCY">
<Values dnOrder="0">
- <Dynamic dnOrder="0" id="core" value="48000000"/>
+ <Dynamic dnOrder="0" id="core" value="47972352"/>
</Values>
</core>
</core>
@@ -4467,7 +4999,7 @@
<?xml version="1.0" encoding="UTF-8"?><core>
<core dnOrder="0" id="SERCOM1_CORE_CLOCK_FREQUENCY">
<Values dnOrder="0">
- <Dynamic dnOrder="0" id="core" value="48000000"/>
+ <Dynamic dnOrder="0" id="core" value="47972352"/>
</Values>
</core>
</core>
@@ -4559,6 +5091,42 @@
</Values>
</core>
</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SYSTICK_PERIOD">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="0xBB64"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SYSTICK_PERIOD_MS">
+ <Attributes dnOrder="0">
+ <Float dnOrder="0" id="max">
+ <Value dnOrder="0">349.72675</Value>
+ </Float>
+ </Attributes>
+ <Values dnOrder="1"/>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="SYSTICK_PERIOD_US">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="1000"/>
+ </Values>
+ </core>
+</core>
@@ -4621,7 +5189,7 @@
<?xml version="1.0" encoding="UTF-8"?><core>
<core dnOrder="0" id="TC3_CLOCK_FREQUENCY">
<Values dnOrder="0">
- <Dynamic dnOrder="0" id="core" value="48000000"/>
+ <Dynamic dnOrder="0" id="core" value="47972352"/>
</Values>
</core>
</core>
@@ -4687,7 +5255,7 @@
<?xml version="1.0" encoding="UTF-8"?><core>
<core dnOrder="0" id="USB_CLOCK_FREQUENCY">
<Values dnOrder="0">
- <Dynamic dnOrder="0" id="core" value="48000000"/>
+ <Dynamic dnOrder="0" id="core" value="47972352"/>
</Values>
</core>
</core>
@@ -4735,6 +5303,39 @@
</Values>
</core>
</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="XOSC32K_EN32K">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="true"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="XOSC32K_FREQ">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="core" value="32768"/>
+ </Values>
+ </core>
+</core>
+
+
+
+
+ <?xml version="1.0" encoding="UTF-8"?><core>
+ <core dnOrder="0" id="XOSC32K_RUNSTDBY">
+ <Values dnOrder="0">
+ <User dnOrder="0" value="true"/>
+ </Values>
+ </core>
+</core>
@@ -7656,6 +8257,17 @@
__ROOTVIEW
+
+
+ <?xml version="1.0" encoding="UTF-8"?><nvmctrl>
+ <nvmctrl dnOrder="0" id="NVM_RWS">
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="nvmctrl" value="1"/>
+ </Values>
+ </nvmctrl>
+</nvmctrl>
+
+
__ROOTVIEW
@@ -8968,7 +9580,7 @@
<?xml version="1.0" encoding="UTF-8"?><sercom0>
<sercom0 dnOrder="0" id="SPI_BAUD_REG_VALUE">
<Values dnOrder="0">
- <Dynamic dnOrder="0" id="sercom0" value="23"/>
+ <Dynamic dnOrder="0" id="sercom0" value="22"/>
</Values>
</sercom0>
</sercom0>
@@ -9170,7 +9782,7 @@
<?xml version="1.0" encoding="UTF-8"?><sercom0>
<sercom0 dnOrder="0" id="USART_BAUD_VALUE">
<Values dnOrder="0">
- <Dynamic dnOrder="0" id="sercom0" value="63019"/>
+ <Dynamic dnOrder="0" id="sercom0" value="63017"/>
</Values>
</sercom0>
</sercom0>
@@ -10088,7 +10700,7 @@
<?xml version="1.0" encoding="UTF-8"?><sercom1>
<sercom1 dnOrder="0" id="SPI_BAUD_REG_VALUE">
<Values dnOrder="0">
- <Dynamic dnOrder="0" id="sercom1" value="23"/>
+ <Dynamic dnOrder="0" id="sercom1" value="22"/>
</Values>
</sercom1>
</sercom1>
@@ -10310,7 +10922,7 @@
<?xml version="1.0" encoding="UTF-8"?><sercom1>
<sercom1 dnOrder="0" id="USART_BAUD_VALUE">
<Values dnOrder="0">
- <Dynamic dnOrder="0" id="sercom1" value="63019"/>
+ <Dynamic dnOrder="0" id="sercom1" value="63017"/>
</Values>
</sercom1>
</sercom1>
@@ -11138,7 +11750,9 @@
<?xml version="1.0" encoding="UTF-8"?><tc3>
<tc3 dnOrder="0" id="TC_FREQUENCY">
- <Values dnOrder="0"/>
+ <Values dnOrder="0">
+ <Dynamic dnOrder="0" id="tc3" value="47972352"/>
+ </Values>
</tc3>
</tc3>
@@ -11261,7 +11875,14 @@
<?xml version="1.0" encoding="UTF-8"?><tc3>
<tc3 dnOrder="0" id="TC_TIMER_PERIOD">
- <Values dnOrder="0"/>
+ <Attributes dnOrder="0">
+ <Long dnOrder="0" id="max">
+ <Value dnOrder="0">65535</Value>
+ </Long>
+ </Attributes>
+ <Values dnOrder="1">
+ <Dynamic dnOrder="0" id="tc3" value="47971"/>
+ </Values>
</tc3>
</tc3>
@@ -11270,7 +11891,15 @@
<?xml version="1.0" encoding="UTF-8"?><tc3>
<tc3 dnOrder="0" id="TC_TIMER_TIME_MS">
- <Values dnOrder="0"/>
+ <Attributes dnOrder="0">
+ <Float dnOrder="0" id="max">
+ <Value dnOrder="0">1.3661202</Value>
+ </Float>
+ <Boolean dnOrder="1" id="visible">
+ <Value dnOrder="0">false</Value>
+ </Boolean>
+ </Attributes>
+ <Values dnOrder="1"/>
</tc3>
</tc3>
@@ -11942,7 +12571,7 @@
../src/config/default/peripheral/clock/plib_clock.c
- e0efd876a9826ba22a780f4b9c6359ad722dffd6b2feeb207b9b361fe2f3918a
+ 2a45c447b7406cd79fc6a2f4b847c242ba7806047cdce5e6637e2c31c4d58016
../src/config/default/library/cryptoauthlib/atca_cfgs.h
@@ -11986,7 +12615,7 @@
../src/config/default/definitions.h
- 66d9cb43743d2a2c5dd18c68d81e3ff7674148ce9cb51e3d00394437b39da8d4
+ 9b8b9985667dd140e843ab42c2acd0989cde8893ff3c3a07f63825d0829c5f96
../src/packs/ATSAMD21E18A_DFP/instance/sysctrl.h
@@ -12194,7 +12823,7 @@
../src/config/default/peripheral/sercom/spi_master/plib_sercom1_spi_master.c
- 51e1a122cc7b92805bf24c5bc52e1a14cac318fccd6a5e5298db4ec675b1ac05
+ b1def5598c772186671faa1ee7891432c5f0fc710c793fc3a17515d2f59c3e4f
../src/packs/ATSAMD21E18A_DFP/instance/tc3.h
@@ -12266,7 +12895,7 @@
../src/config/default/peripheral/tc/plib_tc3.c
- 1f3a8e522d1e9b4af3595ef33a40dd23c27d8f49ba1a12176f002766127ae511
+ e8a2da1f9c0514262a24a0657aaa82234611b3818a4b86bc1fdce8ed391be462
../src/config/default/usb/usb_device_msd.h
@@ -12286,7 +12915,7 @@
../src/config/default/FreeRTOSConfig.h
- 82d619dcfe6fb2b091c1c880bfad1d8973509d1be670e57b9b3ed4aa7a165884
+ 17ddb44c33c39369a2783d5239dc7981b8aabf7bbfb696154d7a72800e808b36
../src/packs/ATSAMD21E18A_DFP/instance/usb.h
@@ -12402,7 +13031,7 @@
../src/config/default/peripheral/sercom/i2c_master/plib_sercom0_i2c_master.c
- 18af95fe99b19274aa92647e55b1cd5c905bf9ff69260c8e5663c4ddbcace4b1
+ 59add04d57074a6d10b85ed6a85dec87df997c0865087373690a52246209cb84
../src/config/default/driver/spi_flash/at25df/drv_at25df.h
@@ -12474,7 +13103,7 @@
../src/config/default/configuration.h
- c2754dce5c643a59442c054458c0d4a613dcc921eb78ab01fd63887375c91b99
+ fed58c60b9d92b03d28d850a136c81f18411c845d1efa27392c052c8e8770d6f
../src/config/default/osal/osal_freertos.h
@@ -12490,7 +13119,7 @@
../src/config/default/peripheral/rtc/plib_rtc.h
- 224971ecf35af126c6b757213ae80660ef7603a66a27dc25b2ab0cbbf379edcf
+ d2457589d2143cfb37806d3f8ed30477aaa584300c1fb9e856f57698f632271e
../src/config/default/device.h
@@ -12638,7 +13267,7 @@
../src/config/default/library/cryptoauthlib/hal/hal_cortex_m_delay.c
- 29b76421459e4cb79b077b4906212f5655d15e02e0fb6107f78257b9ed6aa867
+ 2c0203f5e96997383178b489a56c9681775c0deb4c0f31a278c388f7af5e7d00
../src/packs/ATSAMD21E18A_DFP/component/ac.h
diff --git a/firmware/iot-risk-data-logger-nfc-samd21.X/nbproject/Makefile-genesis.properties b/firmware/iot-risk-data-logger-nfc-samd21.X/nbproject/Makefile-genesis.properties
index aef9b9c..9415a78 100644
--- a/firmware/iot-risk-data-logger-nfc-samd21.X/nbproject/Makefile-genesis.properties
+++ b/firmware/iot-risk-data-logger-nfc-samd21.X/nbproject/Makefile-genesis.properties
@@ -1,5 +1,5 @@
#
-#Sat Nov 18 16:53:24 TRT 2023
+#Sun Nov 19 19:46:27 TRT 2023
default.languagetoolchain.version=4.35
default.Pack.dfplocation=/Applications/microchip/mplabx/v6.15/packs/Microchip/SAMD21_DFP/3.6.144
default.com-microchip-mplab-mdbcore-simulator-Simulator.md5=aa9d1097190a66d1314d421a6f2603b4
diff --git a/firmware/iot-risk-data-logger-nfc-samd21.X/nbproject/private/private.xml b/firmware/iot-risk-data-logger-nfc-samd21.X/nbproject/private/private.xml
index 2eee429..ed54460 100644
--- a/firmware/iot-risk-data-logger-nfc-samd21.X/nbproject/private/private.xml
+++ b/firmware/iot-risk-data-logger-nfc-samd21.X/nbproject/private/private.xml
@@ -1,6 +1,10 @@
+
-
+
+ file:/Users/artempolisskyi/projects/iot-risk-data-logger-nfc-samd21/firmware/src/config/default/usb_device_init_data.c
+ file:/Users/artempolisskyi/projects/iot-risk-data-logger-nfc-samd21/firmware/src/config/default/driver/memory/drv_memory.h
+
diff --git a/firmware/src/config/default/FreeRTOSConfig.h b/firmware/src/config/default/FreeRTOSConfig.h
index 111278a..1d7ef97 100644
--- a/firmware/src/config/default/FreeRTOSConfig.h
+++ b/firmware/src/config/default/FreeRTOSConfig.h
@@ -45,7 +45,7 @@
#define configUSE_PREEMPTION 1
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0
#define configUSE_TICKLESS_IDLE 0
-#define configCPU_CLOCK_HZ ( 48000000UL )
+#define configCPU_CLOCK_HZ ( 47972352UL )
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )
#define configMAX_PRIORITIES ( 5UL )
#define configMINIMAL_STACK_SIZE ( 128 )
diff --git a/firmware/src/config/default/configuration.h b/firmware/src/config/default/configuration.h
index f5fd9d4..14e61dc 100644
--- a/firmware/src/config/default/configuration.h
+++ b/firmware/src/config/default/configuration.h
@@ -85,7 +85,7 @@ extern "C" {
#define SYS_TIME_HW_COUNTER_WIDTH (16)
#define SYS_TIME_HW_COUNTER_PERIOD (0xFFFFU)
#define SYS_TIME_HW_COUNTER_HALF_PERIOD (SYS_TIME_HW_COUNTER_PERIOD>>1)
-#define SYS_TIME_CPU_CLOCK_FREQUENCY (48000000)
+#define SYS_TIME_CPU_CLOCK_FREQUENCY (47972352)
#define SYS_TIME_COMPARE_UPDATE_EXECUTION_CYCLES (200)
diff --git a/firmware/src/config/default/definitions.h b/firmware/src/config/default/definitions.h
index 6337207..aadc5f4 100644
--- a/firmware/src/config/default/definitions.h
+++ b/firmware/src/config/default/definitions.h
@@ -93,7 +93,7 @@ extern "C" {
#define DEVICE_SERIES "SAMD21"
/* CPU clock frequency */
-#define CPU_CLOCK_FREQUENCY 48000000
+#define CPU_CLOCK_FREQUENCY 47972352
// *****************************************************************************
// *****************************************************************************
diff --git a/firmware/src/config/default/harmony-manifest-success.yml b/firmware/src/config/default/harmony-manifest-success.yml
index 7b666dd..fd305c5 100644
--- a/firmware/src/config/default/harmony-manifest-success.yml
+++ b/firmware/src/config/default/harmony-manifest-success.yml
@@ -4,7 +4,7 @@
project: iot-risk-data-logger-nfc-samd21
-creation_date: 2023-11-18T16:53:23.323+03:00[Europe/Istanbul] # ISO 8601 format: https://www.w3.org/TR/NOTE-datetime
+creation_date: 2023-11-19T19:46:26.009+03:00[Europe/Istanbul] # ISO 8601 format: https://www.w3.org/TR/NOTE-datetime
operating_system: Mac OS X
mcc_mode: IDE # [IDE|Standalone|Headless]
mcc_version: v5.3.7
diff --git a/firmware/src/config/default/library/cryptoauthlib/hal/hal_cortex_m_delay.c b/firmware/src/config/default/library/cryptoauthlib/hal/hal_cortex_m_delay.c
index 17bbb57..d46c440 100644
--- a/firmware/src/config/default/library/cryptoauthlib/hal/hal_cortex_m_delay.c
+++ b/firmware/src/config/default/library/cryptoauthlib/hal/hal_cortex_m_delay.c
@@ -34,7 +34,7 @@
#include
#ifndef CONF_CPU_FREQUENCY
-#define CONF_CPU_FREQUENCY 48000000
+#define CONF_CPU_FREQUENCY 47972352
#endif
#if CONF_CPU_FREQUENCY < 1000
diff --git a/firmware/src/config/default/peripheral/clock/plib_clock.c b/firmware/src/config/default/peripheral/clock/plib_clock.c
index 764265f..acb967e 100644
--- a/firmware/src/config/default/peripheral/clock/plib_clock.c
+++ b/firmware/src/config/default/peripheral/clock/plib_clock.c
@@ -44,6 +44,15 @@
static void SYSCTRL_Initialize(void)
{
+ /****************** XOSC32K initialization ******************************/
+
+ /* Configure 32K External Oscillator */
+ SYSCTRL_REGS->SYSCTRL_XOSC32K = SYSCTRL_XOSC32K_STARTUP(0U) | SYSCTRL_XOSC32K_ENABLE_Msk | SYSCTRL_XOSC32K_RUNSTDBY_Msk | SYSCTRL_XOSC32K_EN32K_Msk | SYSCTRL_XOSC32K_XTALEN_Msk;
+ while(!((SYSCTRL_REGS->SYSCTRL_PCLKSR & SYSCTRL_PCLKSR_XOSC32KRDY_Msk) == SYSCTRL_PCLKSR_XOSC32KRDY_Msk))
+ {
+ /* Waiting for the XOSC32K Ready state */
+ }
+
SYSCTRL_REGS->SYSCTRL_OSC32K = 0x0U;
}
@@ -64,17 +73,24 @@ static void DFLL_Initialize(void)
SYSCTRL_REGS->SYSCTRL_DFLLVAL = SYSCTRL_DFLLVAL_COARSE(calibCoarse) | SYSCTRL_DFLLVAL_FINE(512U);
+ GCLK_REGS->GCLK_CLKCTRL = GCLK_CLKCTRL_GEN(0x2U) | GCLK_CLKCTRL_CLKEN_Msk | GCLK_CLKCTRL_ID(0U);
+ while((SYSCTRL_REGS->SYSCTRL_PCLKSR & SYSCTRL_PCLKSR_DFLLRDY_Msk) != SYSCTRL_PCLKSR_DFLLRDY_Msk)
+ {
+ /* Waiting for the Ready state */
+ }
+ SYSCTRL_REGS->SYSCTRL_DFLLMUL = SYSCTRL_DFLLMUL_MUL(1464U) | SYSCTRL_DFLLMUL_FSTEP(1U) | SYSCTRL_DFLLMUL_CSTEP(1U);
+
while((SYSCTRL_REGS->SYSCTRL_PCLKSR & SYSCTRL_PCLKSR_DFLLRDY_Msk) != SYSCTRL_PCLKSR_DFLLRDY_Msk)
{
/* Waiting for the Ready state */
}
/* Configure DFLL */
- SYSCTRL_REGS->SYSCTRL_DFLLCTRL = SYSCTRL_DFLLCTRL_ENABLE_Msk ;
+ SYSCTRL_REGS->SYSCTRL_DFLLCTRL = SYSCTRL_DFLLCTRL_ENABLE_Msk | SYSCTRL_DFLLCTRL_MODE_Msk ;
- while((SYSCTRL_REGS->SYSCTRL_PCLKSR & SYSCTRL_PCLKSR_DFLLRDY_Msk) != SYSCTRL_PCLKSR_DFLLRDY_Msk)
+ while((SYSCTRL_REGS->SYSCTRL_PCLKSR & SYSCTRL_PCLKSR_DFLLLCKF_Msk) != SYSCTRL_PCLKSR_DFLLLCKF_Msk)
{
- /* Waiting for DFLL to be ready */
+ /* Waiting for DFLL to fully lock to meet clock accuracy */
}
}
@@ -92,6 +108,29 @@ static void GCLK0_Initialize(void)
}
+static void GCLK1_Initialize(void)
+{
+ GCLK_REGS->GCLK_GENCTRL = GCLK_GENCTRL_SRC(5U) | GCLK_GENCTRL_RUNSTDBY_Msk | GCLK_GENCTRL_GENEN_Msk | GCLK_GENCTRL_ID(1U);
+
+ GCLK_REGS->GCLK_GENDIV = GCLK_GENDIV_DIV(32U) | GCLK_GENDIV_ID(1U);
+ while((GCLK_REGS->GCLK_STATUS & GCLK_STATUS_SYNCBUSY_Msk) == GCLK_STATUS_SYNCBUSY_Msk)
+ {
+ /* wait for the Generator 1 synchronization */
+ }
+}
+
+
+static void GCLK2_Initialize(void)
+{
+ GCLK_REGS->GCLK_GENCTRL = GCLK_GENCTRL_SRC(5U) | GCLK_GENCTRL_GENEN_Msk | GCLK_GENCTRL_ID(2U);
+
+ while((GCLK_REGS->GCLK_STATUS & GCLK_STATUS_SYNCBUSY_Msk) == GCLK_STATUS_SYNCBUSY_Msk)
+ {
+ /* wait for the Generator 2 synchronization */
+ }
+}
+
+
@@ -100,12 +139,14 @@ void CLOCK_Initialize (void)
/* Function to Initialize the Oscillators */
SYSCTRL_Initialize();
+ GCLK1_Initialize();
+ GCLK2_Initialize();
DFLL_Initialize();
GCLK0_Initialize();
/* Selection of the Generator and write Lock for RTC */
- GCLK_REGS->GCLK_CLKCTRL = GCLK_CLKCTRL_ID(4U) | GCLK_CLKCTRL_GEN(0x0U) | GCLK_CLKCTRL_CLKEN_Msk;
+ GCLK_REGS->GCLK_CLKCTRL = GCLK_CLKCTRL_ID(4U) | GCLK_CLKCTRL_GEN(0x1U) | GCLK_CLKCTRL_CLKEN_Msk;
/* Selection of the Generator and write Lock for EIC */
GCLK_REGS->GCLK_CLKCTRL = GCLK_CLKCTRL_ID(5U) | GCLK_CLKCTRL_GEN(0x0U) | GCLK_CLKCTRL_CLKEN_Msk;
/* Selection of the Generator and write Lock for USB */
diff --git a/firmware/src/config/default/peripheral/rtc/plib_rtc.h b/firmware/src/config/default/peripheral/rtc/plib_rtc.h
index 6419e4c..c9e3342 100644
--- a/firmware/src/config/default/peripheral/rtc/plib_rtc.h
+++ b/firmware/src/config/default/peripheral/rtc/plib_rtc.h
@@ -55,7 +55,7 @@ extern "C" {
// DOM-IGNORE-END
/* Frequency of Counter Clock for RTC */
-#define RTC_COUNTER_CLOCK_FREQUENCY (48000000U / (1UL << (0x0U)))
+#define RTC_COUNTER_CLOCK_FREQUENCY (1024U / (1UL << (0x0U)))
typedef enum
{
diff --git a/firmware/src/config/default/peripheral/sercom/i2c_master/plib_sercom0_i2c_master.c b/firmware/src/config/default/peripheral/sercom/i2c_master/plib_sercom0_i2c_master.c
index 33dc4f9..d346bd2 100644
--- a/firmware/src/config/default/peripheral/sercom/i2c_master/plib_sercom0_i2c_master.c
+++ b/firmware/src/config/default/peripheral/sercom/i2c_master/plib_sercom0_i2c_master.c
@@ -202,7 +202,7 @@ bool SERCOM0_I2C_TransferSetup(SERCOM_I2C_TRANSFER_SETUP* setup, uint32_t srcClk
if( srcClkFreq == 0U)
{
- srcClkFreq = 48000000UL;
+ srcClkFreq = 47972352UL;
}
if (SERCOM0_I2C_CalculateBaudValue(srcClkFreq, i2cClkSpeed, &baudValue) == false)
diff --git a/firmware/src/config/default/peripheral/sercom/spi_master/plib_sercom1_spi_master.c b/firmware/src/config/default/peripheral/sercom/spi_master/plib_sercom1_spi_master.c
index 672d752..43b88c9 100644
--- a/firmware/src/config/default/peripheral/sercom/spi_master/plib_sercom1_spi_master.c
+++ b/firmware/src/config/default/peripheral/sercom/spi_master/plib_sercom1_spi_master.c
@@ -56,10 +56,10 @@
/* SERCOM1 clk freq value for the baud calculation */
-#define SERCOM1_Frequency (48000000UL)
+#define SERCOM1_Frequency (47972352UL)
/* SERCOM1 SPI baud value for 1000000 Hz baud rate */
-#define SERCOM1_SPIM_BAUD_VALUE (23UL)
+#define SERCOM1_SPIM_BAUD_VALUE (22UL)
/*Global object to save SPI Exchange related data */
volatile static SPI_OBJECT sercom1SPIObj;
diff --git a/firmware/src/config/default/peripheral/tc/plib_tc3.c b/firmware/src/config/default/peripheral/tc/plib_tc3.c
index 3982bca..41a7492 100644
--- a/firmware/src/config/default/peripheral/tc/plib_tc3.c
+++ b/firmware/src/config/default/peripheral/tc/plib_tc3.c
@@ -87,7 +87,7 @@ void TC3_TimerInitialize( void )
TC3_REGS->COUNT16.TC_CTRLA = TC_CTRLA_MODE_COUNT16 | TC_CTRLA_PRESCALER_DIV1 | TC_CTRLA_WAVEGEN_MPWM ;
/* Configure timer period */
- TC3_REGS->COUNT16.TC_CC[0U] = 47999U;
+ TC3_REGS->COUNT16.TC_CC[0U] = 47971U;
/* Clear all interrupt flags */
TC3_REGS->COUNT16.TC_INTFLAG = TC_INTFLAG_Msk;
@@ -125,7 +125,7 @@ void TC3_TimerStop( void )
uint32_t TC3_TimerFrequencyGet( void )
{
- return (uint32_t)(48000000UL);
+ return (uint32_t)(47972352UL);
}
void TC3_TimerCommandSet(TC_COMMAND command)