A new feature introduced in the AVR® DB Family is the MVIO peripheral. In this example, VDDIO2 supplies a different voltage level on PORTC than on the rest of the PORTs, which are supplied by VDD. It is possible to monitor this voltage level with the internal analog-to-digital converter (ADC) and it is also possible to get an interrupt when the voltage level for the MVIO, called VDDIO2, goes in and out of the acceptable voltage range.
This MPLAB® X MCC Melody example of Getting Started with Multi Voltage I/O (MVIO) shows how the MVIO is used on the AVR® DB family of microcontrollers.
-
Reading the VDDIO2 Status Bit: Checking if the VDDIO2 voltage is within acceptable range by reading the Status bit.
-
Interrupt on VDDIO2 Status: Make use of the interrupt that occurs when the Status bit changes state.
-
Measuring VDDIO2 with ADC: Use the internal ADC to measure the VDDIO2 voltage.
-
Blink a 3V LED with VDD at 1.8V: Basic example of MVIO blinking an LED with forward voltage higher than VDD.
- MPLAB® X IDE v6.20 or newer
- MPLAB® Xpress IDE (alternative to MPLAB X IDE)
- XC8 Compiler v3.00 or newer
- MPLAB® Code Configurator (MCC) v5.5.1 or newer
- MPLAB® Melody Library 2.8.1 or newer or newer
- MCC Device Libraries 8-bit AVR MCUs 4.12.0 or newer
- Microchip AVR128DB48 Device Support Pack AVR-Dx_DFP 2.7.321 or newer
- AVR128DB48 Curiosity Nano
- One >15Ω resistor
- One LED with forward voltage of ~3V
- For each of the use cases, connect the hardware together as seen in the schematic of the application note.
- Connect the AVR128DB48 Curiosity Nano to a computer using a USB cable
- Clone the repository or download the zip to get the source code
- Open the project folder you want to run with MPLAB X
- Compile and run the code
Drag and drop one of the following files to the "Curiosity" disc on your computer:
- VDD1V8.txt - Sets voltage to 1.8V
- VDD3V3.txt - Sets voltage to 3.3V
After going through this example, you will have a better understanding of how to set up the MVIO peripheral to utilize the internal level shifters to communicate with and drive external components.