Objective
This page provides a basic interrupt code example for the ATmega328PB MCU. The project configures the Timer/Counter1 module to operate in Clear-Timer-On-Compare (CTC) mode, and, on a period match, generates an interrupt event every 100 mS. The ISR manipulates a "tick" signal variable that is used by the main loop to toggle LED0 every 100 mS.
Materials
Hardware Tools
Tool | About | Purchase |
---|---|---|
| |
Software Tools
Tool | About | Installers |
Installation
Instructions |
||
---|---|---|---|---|---|
Windows | Linux | Mac OSX | |||
Atmel® Studio
Integrated Development Environment |
| | | | |
Exercise Files
File | Download |
Installation
Instructions |
||
---|---|---|---|---|
Windows | Linux | Mac OSX | ||
Example Project
|
| | | |
We recommend extracting the .zip file to your C:\ folder.
You should see the folder C:\MTT\8avr\mega\code-examples\interrupt-example\8avr-mega-int-usage containing the solution 8avr-mega-int-usage.atsln
Connection Diagram
The USART0 module on the target ATmega328PB device is connected to the USART interface on the mEDBG chip. The mEDBG chip performs USB-serial conversion by enumerating as a CDC-class virtual COM port on the PC and presenting the target USART data on this interface. The mEDBG also controls the programming/debug interface on the target device, as well as supplying a 16MHz clock when the Xplained board is connected via USB cable to a PC. The LED0 is connected to port PB5 as shown:
Procedure
Attach the ATmega328PB Xplained Mini board to your computer using a USB A-to-MicroB cable. Start Atmel Studio 7. If the board has been successfully enumerated, you should see the board image come up in Studio as shown:
The board is identified by the last four digits in its serial number (see sticker on bottom of board). In the above example, the last four digits are "3352"
1
Open the Solution
To understand how interrupts were configured and enabled in this example (main.c file), please review the megaAVR® Interrupt Configuration page.
3
Program the Fuses
There are several key hardware configuration settings that need to be configured. The following fuse settings need to be programmed into the device:
- HIGH: 0xDF
- LOW: 0xC0
- EXT: 0xFC
Enter the Device Programming dialog as shown:
In the Device Programming dialog box, select the Tool, Device and Interface as shown, then press Apply:
To verify a connection, select Read and verify that a Device Signature is found:
Select the Fuses sub-section, Enter the 3 Fuse Byte Values above, then press Program as shown:
Results
Conclusions
This project has provided an example of how to setup and use interrupts on the megaAVR MCU.