title: Harmony 3 peripheral library application examples for SAM C20/C21 family nav_order: 1 has_children: true has_toc: false
MPLAB® Harmony 3 is an extension of the MPLAB® ecosystem for creating embedded firmware solutions for Microchip 32-bit SAM and PIC® microcontroller and microprocessor devices. Refer to the following links for more information.
- Microchip 32-bit MCUs
- Microchip 32-bit MPUs
- Microchip MPLAB X IDE
- Microchip MPLAB® Harmony
- Microchip MPLAB® Harmony Pages
This repository contains the MPLAB® Harmony 3 peripheral library application examples for SAM C20/C21 family
To clone or download these applications from Github, go to the main page of this repository and then click Clone button to clone this repository or download as zip file. This content can also be downloaded using content manager by following these instructions.
Folder | Description |
---|---|
apps | Contains peripheral library example applications |
docs | Contains documentation in html format for offline viewing (to be used only after cloning this repository onto a local machine). Use github pages of this repository for viewing it online. |
The following applications are provided to demonstrate the typical or interesting usage models of one or more peripheral libraries.
Name | Description |
---|---|
AC Sleepwalking | This example application shows how to use the AC Peripheral library to perform a single shot comparison in standby sleep mode periodically and wake up the device at the end of a successful comparison |
AC PWM generation | This example application shows how to use the Analog Comparator Peripheral library to generate a 1KHz PWM waveform |
ADC DMA sleepwalking | This application shows how to configure the ADC in a sleepwalking operation, where the input voltage is measured at a fixed interval, and then the device is woken from sleep after conversion of 16 samples |
ADC Sample | This example application shows how to sample an analog input using the ADC and displays the converted samples on a serial terminal |
ADC window sleepwalking | This application shows how to configure ADC in a sleepwalking operation, where input voltage is measured at a fixed interval, but device is not woken from sleep until the measured value is below a given threshold |
CAN FD blocking | This example application shows how to use the CAN module to transmit and receive CAN FD messages in polling mode |
CAN FD interrupt | This example application shows how to use the CAN module to transmit and receive CAN FD messages in interrupt mode |
CAN blocking | This example application shows how to use the CAN module to transmit and receive normal CAN messages in polling mode |
CCL Manchester Encoder | This example application shows how to use the CCL peripheral library and generate a Manchester-encoded output |
Clock configuration | This example application shows how to configure the clock system to run the device at maximum frequency. It also outputs a prescaled clock signal on a GPIO pin for measurement and verification |
DAC waveform generation | This example application shows how to use the DAC to generate a 1 KHz Sine or Sawtooth wave with a lookup table |
DAC waveform generation with DMA | This example application shows how to use the DAC with the DMA to generate a 5 KHz sinusoidal waveform without CPU intervention |
DIVAS accelerate computations | This example application demonstrates how to use the DIVAS accelerator to compute square room, and perform a division and modulus operation |
DIVAS override C division operator | This example application demonstrates how to override C division operator and modulus operator to use the DIVAS accelerator |
DMAC memory transfer | This example application demonstrates how to use the DMAC peripheral to do a memory to memory transfer |
DMAC USART echo | This example application demonstrates USART transfer with DMA to receive 10 bytes and echo back the received bytes |
DSU compute CRC32 | This example application demonstrates how to use the DSU Peripheral library to compute 32-bit Cyclic Redundancy Checksum (CRC) |
EIC Interrupt | This example application demonstrates how to generate interrupt using the EIC on switch press and indicate it through an LED |
EVSYS trigger | This example application demonstrates how to use the EVSYS Peripheral library to setup autonomous, low-latency and configurable communication between peripherals |
FREQM measurement | This example application demonstrates how to use the FREQM peripheral to measure the frequency of the internal RC Oscillator |
NVMCTRL flash read while write (RWW) | This example application demonstrates code execution from the main Flash memory while performing erase operation in read-while-write section |
NVMCTRL read write | This example application demonstrates how to use the NVMCTRL to erase and program the internal Flash memory |
PM wakeup using EIC | This application demonstrates entering the low power modes and exiting it using the EIC |
PM wakeup using RTC | This example demonstrates entering the low power modes and exiting it using the RTC |
PORT polling | This example application demonstrate how to poll the switch input, and indicate the switch status using the LED |
RSTC reset cause | This example shows how to use the RSTC peripheral to indicate the cause of the device reset |
RTC alarm interrupt | This example shows how to use the RTC to configure the time and generate the alarm |
RTC periodic interrupt | This example application shows how to use the RTC to generate periodic interrupts |
SDADC Sample | This example application shows how to sample an analog input using SDADC and displays the converted samples on a serial terminal |
SERCOM I2C EEPROM read write | This example application demonstrates how to use the SERCOM peripheral to write and read from the I2C serial EEPROM memory |
SERCOM I2C EEPROM emulation (I2C slave) | This example application demonstrates how to use the SERCOM peripheral in slave mode |
SERCOM SPI EEPROM read write | This example application demonstrates how to use the SERCOM SPI peripheral to write and read from the SPI serial EEPROM memory |
SERCOM SPI ping pong with DMA | This example demonstrates how to continuously transmit and receive data over a SPI interface using ping pong buffers with DMA |
SERCOM SPI blocking | This example application demonstrates how to use the SERCOM SPI peripheral to transmit and receive a block of data in a blocking manner |
SERCOM SPI interrupt | This example application shows how to use SERCOM SPI PLIB with external loop back to write and then read back an array of data in interrupt mode |
SERCOM USART blocking | This example application demonstrates how to use the SERCOM peripheral in USART mode to transfer block of data in a blocking manner |
SERCOM USART interrupt | This example application demonstrates how to use the SERCOM peripheral in USART mode to transfer data in a non-blocking manner |
SERCOM USART LIN Master | This example application demonstrates how to use the SERCOM USART peripheral in LIN Master mode |
SERCOM USART LIN Slave | This example application demonstrates how to use the SERCOM USART peripheral in LIN Slave mode |
SERCOM USART ring buffer | This example application demonstrates how to use the SERCOM peripheral in USART ring buffer mode to transfer data in a non-blocking manner |
Systick periodic interrupt | This example shows how to use the SysTick to generate periodic interrupts |
TC capture mode | This example shows how to use the TC module in capture mode to measure duty cycle and frequency of an external input |
TC compare mode | This example shows how to use the TC module in compare mode to generate an active low, active high, and toggle output on compare match |
TC timer mode | This example shows how to use the TC module in timer mode to generate periodic interrupt |
TCC PWM generation | This example application shows how to use the TCC to generate a 2 or 3 phase PWM signals for motor control with dead time |
WDT timeout | This example shows how to generate a Watchdog timer reset by emulating a deadlock |