Harmony v3 Drivers on SAM D21 Using FreeRTOS: Step 6

Step 6: Build, Program, and Observe the Outputs


Verify that the temperature sensor (I/O1 Xplained Pro Extension Kit) is connected to the Extension Header 1 (EXT1) on the SAM D21 Xplained Pro Evaluation Kit.



The SAM D21 Xplained Pro Evaluation Kit allows the Embedded Debugger (EDBG) to be used for debugging. Connect the Type-A male to Micro-B USB cable to the Micro-B DEBUG USB port to power and debug the SAM D21 Xplained Pro Evaluation Kit.



Go to File > Project Properties and make sure that the EDBG is selected as the debugger under the Hardware Tools and XC32 (v2.50) is selected as the Compiler Toolchain for XC32.



Clean and build the application by clicking on the Clean and Build button as shown in the following image.



Program the application to the device by clicking on the Make and Program button as shown below.


The lab should build and program successfully.


Now, open the Tera Term terminal application on the PC (from the Windows® Start menu by pressing the Start button). Select the Serial Port as shown below.



Change the baud rate to 115200.



It can be observed that the temperature values (in °F) are being displayed on the terminal every second as shown below.


Also, notice the LED3 blinking at a one-second rate.


Press any character on the terminal to display the last five values written to the EEPROM.



The temperature can be varied by placing your finger on the temperature sensor (for a few seconds).



This application displayed the current room temperature values on the serial terminal every second. Also, the application retrieved and printed (on the serial terminal) the last five stored temperature values from EEPROM every time a character is entered on the serial terminal. It was also observed that a user LED was toggled every time the current temperature was displayed on the serial terminal.


The first application using MPLAB® Harmony v3 on a SAM D21 microcontroller has been successfully created. The application used all the fundamental elements that go into building a real-time application and successfully read temperature sensor values and displayed them periodically over a serial terminal on a PC. While the temperature values were getting printed on the serial terminal, the application stored the temperature values into EEPROM. The application retrieved the last five values stored in EEPROM and displayed them on the serial terminal when a user requested them (by entering a character on the serial terminal).

In this application, MPLAB Harmony Configurator (MHC) was used to configure the SAM D21 and to use the MPLAB Harmony v3 Framework. The clock configurator was used to set up the CPU clock and verify the peripheral clocks. SERCOM2, SERCOM3 were configured as I²C, and Universal Synchronous Asynchronous Receiver Transmitter (USART) respectively. Pin Configurator was used to set up the pins for the LED and peripheral (USART, I²C) pins. The entire application was built using FreeRTOS and configurations for FreeRTOS threads, stack, and heap size for the application threads were done in this application.


This tutorial provides the training for configuring and using all the fundamental components needed to build a real-time application using FreeRTOS on a SAM D21 microcontroller with the MPLAB Harmony v3 Framework. As a next step, developers may customize this application and reconfigure some of the components used in this tutorial and can also add new components (Drivers, etc.), additional threads to enhance this application to realize the end application.

© 2024 Microchip Technology, Inc.
Notice: ARM and Cortex are the registered trademarks of ARM Limited in the EU and other countries.
Information contained on this site regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer's risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights.