The ATmega4809 Curiosity Nano board is an evaluation board from Microchip featuring one of the larger AVR microcontrollers from the 0-series. The board is designed to be maker-friendly with a familiar form factor supporting headers for breadboard use, plus castellated edges in case you choose to surface mount it. The board has an on-board programmer/debugger so you can program the chip via USB. They have also added a user-definable button and LED at the end of the board. This board is long, with all 41 GPIO pins broken out, eight of them designated for analog inputs. (Although sixteen of the pins can be connected to the 10-bit ADC, some of those pins are doing double duty.)
The ATmega4809 chip has all the features we expect of AVR micocontrollers, just having a little more of some things. It is the largest variant in the ATmega 0-series, with a 48 pin package. The chip has 48kB of flash memory and 6kB of SRAM, both a step up from the ATmega328 found on the Arduino Uno. The chip can run at either 16 or 20MHz from an internal oscillator, or can run ultra-low power from a 32.768kHz internal oscillator. It can support SPI and I2C, plus up to four USART connections. Five of the GPIO pins, including one of the USART pairs, are connected to the debugger, but all can be disconnected by cutting exposed jumpers on the bottom of the board. The chip also has a Custom Configurable Logic peripheral that consists of four look-up tables that can be connected to external pins.
When you first connect the board via USB, the debugger will mount itself as a mass storage device. Opening the device, you will find files with board status information, version information, and a link to the product page for the Curiosity Nano. It is possible to drag-and-drop compiled HEX files onto the device to easily program the microcontroller from the file system. The debugger also creates a serial port that is connected to one of the USART pairs on the chip so you can watch debugging messages from your code. Another nice feature of the debugger is that it can instruct the adjustable voltage regulator to change the voltage of I/O on the board. By writing a command into a text file and dropping it onto the mass storage device, you can toggle the voltage between 1.8V, 3.3V, and 5V. You can also issue commands to reset the microcontroller, erase its flash, or change the baud rate of the serial connection. These commands are detailed in the Hardware User Guide.
To program the ATmega4809 Curiosity Nano, Microchip recommends using Atmel Studio 7 or MPLAB X IDE. Upon opening either development environment, you will find that the board has been automatically detected and a page of links relevant to the board is presented. I clicked the link to example programs on Microchip’s Github repository. There I found an example program for Atmel Studio that shows how to use the USART ports on the board. There were also example programs for both Atmel Studio and MPLAB showing how to get started with freeRTOS. I used MPLAB’s Git integration under the “Team” menu to clone the freeRTOS example. Upon opening the project, your version of MPLAB may complain it needs additional modules and you should follow the links to resolve them. You may even have to install Microchip’s own cross compiler to get this example working. Those unfamiliar with MPLAB or Atmel Studio may have difficulty getting the examples to work.
After some searching, I found there was third-party support for programming this board under Arduino IDE. Although the ATmega4809 chip has been used in official Arduino products, their pinouts and functionality won’t match the Curiosity Nano. By installing MegaCoreX and selecting ATmega4809, you can program the board as you would any other. Be sure to choose the “48 pin standard” pinout and the “Atmel nEDBG/Curiosity Nano” programmer. I found the documentation on the Github page for MegaCoreX to be pretty thorough. Best of all, there are ATmega4809-specific example programs included with the core that you will find under the File->Examples menu. This includes examples that use the Custom Configurable Logic.
In all, the ATmega4809 Curiosity Nano is a relatively inexpensive board using a microcontroller that is a step up in functionality from older AVR microcontrollers. The on-board programmer/debugger has some nice features that we hope others will adopt.
- User-friendly on-board programmer/debugger
- Lots of I/O pins broken out
- Maker-friendly form factor