A new feature introduced in the AVR® DB Family is the Multi-Voltage I/O (MVIO) peripheral. In this example, VDDIO2 supplies a different voltage level 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 also possible to get an interrupt when the voltage level for the MVIO, called VDDIO2, goes in and out of acceptable voltage range.
These examples show how the Multi-Voltage I/O feature works on the AVR DB family of microcontrollers. It covers the following use cases:
- Polling VDDIO2 Status: 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: 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.
- Atmel Studio 7.0.2397 or later
- Atmel Studio AVR-Dx_DFP version 1.3.67 or later
- For the MPLAB® X version of these projects, please go to this repository
- AVR128DB48 Curiosity Nano
- One >15Ω resistor
- One LED with forward voltage of ~3V
- 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
- Download the zip file or clone the example to get the source code
- Open the .atsln file with Atmel Studio
- Right-click on the project you want to run and choose "Set as StartUp Project"
- Press Start Without Debugging (CTRL+ALT+F5) to run the application
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 should 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.