Arduino Nano Every - Interrupts

Hi,

I like to know if there is a change with the interrupts from Nano to Nano Every? I could not find anything in the attachInterrupt help and also the chip documentation is not helpful for me as a beginner. Actually I only know that the nano supports interrupts on D2 and D3 only.

I like to immediatly react on a change on a digital pin which is a error input. It should directly change another digital pin. Thats because I like to use interrupts. Btw. I read something in the documentation that looks like interrupts are also available for analog pins called events???

The only note I could fine in the data sheet is:
in names are of type Pxn, with x being the PORT instance (A,B,C, ...) and n the pin number. Notation forsignals is PORTx_PINn. All pins can be used as event input.2. All pins can be used for external interrupt, where pins Px2 and Px6 of each port have full asynchronousdetection.

Regards,
Nils

Hello Nils, I have testet the interrupt with the digital pins 2 ... 5, all works fine.

The kernel function has a little change (3 parameters), thats all.

attachInterrupt(iPin,service,FALLING); // Falling edge at iPin

The 3rd parameter defines the type (RISING, FALLING, CHANGE)

On classic nano, there are "external interrupts" that work on pins 2 and 3 (int0, int1) and attachInterrupt, plus PCINTs on all pins.

On nano every, there is only one kind of interrupt, it works on all pins (but only the full async pins can wake from sleep on rising/falling - the rest can only wake from sleep on low level or change), and can be used with attachIntereupt. Or can be done manually if you prefer (I consider attachInterrupt to be an abomination)

2 Likes

@NILSRO

Other post/duplicate DELETED
Please do NOT cross post / duplicate as it wastes peoples time and efforts to have more than one post for a single topic.

Please take a few moments to Learn and Use the Forum.

Hello, Welcome to the Arduino Forum. This guide explains how to get the best out of this forum. Please read and follow the instructions below. Being new here you might think this is having rules for the sake of rules, but that is not the case. If you don’t follow the guidelines all that happens is there is a long exchange of posts while we try to get you to tell us what we need in order to help you, which is frustrating for you and frustrating for us. The people who try to help with your project.

It will help you get the very best out of the forum in the future.

  • Mention if you are using AI generated code it is important information.
  • Your OS and version can be valuable information, please include it along with extra security you are using. Antivirus etc.
  • Always list the version of the IDE you are using and the board version if applicable.
  • Use quote or CODE tags to add error messages as an attachment NOT a picture.
  • How to insert an image into your post. ( Thanks sterretje )
  • Add your sketch where applicable but please use CODE TAGS
  • Add a SCHEMATIC were needed even if it is hand drawn.
  • Add working links to any specific hardware as needed (NOT links to similar items)
  • Duplicate accounts are NOT allowed and any extra may be deleted.
  • Remember that the people trying to help cannot see your problem so give as much information as you can.

COMMON ISSUES

  • Ensure you have FULLY inserted the USB cables.
  • Check you have a COMMON GROUND where required. ( Thanks Perry)
  • Where possible use USB 2.0 ports or a USB 2.0 POWERED HUB to rule out USB 3.0 issues.
  • Try other computers where possible.
  • Try other USB leads where possible.
  • You may not have the correct driver installed. CH340/341 or CP2102 or FT232 VCP Drivers - FTDI
  • There may be a problem with the board check or remove your wiring first.
  • Remove any items connected to pins 0 and 1.

COMPUTER RELATED

  • Close any other serial programs before opening the IDE.
  • Ensure you turn off any additional security / antivirus just to test.
  • There may be a problem with the PC try RESTARTING it.
  • You may be selecting the wrong COM port.
  • Avoid cloud/network based installations where possible OR ensure your Network/Cloud software is RUNNING.
  • Clear your browsers CACHE.
  • Close the IDE before using any other serial programs.
  • Preferably install IDE’s as ADMINISTRATOR or your OS equivalent

ARDUINO SPECIFIC BOARDS

  • CH340/341 based clones do not report useful information to the “get board info” button.
  • NANO (Old Types) some require you to use the OLD BOOTLOADER option.
  • NANO (ALL Types) See the specific sections lower in the forum.
  • NANO (NEW Types) Install your board CORE’s.
  • Unless using EXTERNAL PROGRAMMERS please leave the IDE selection at default “AVRISP mkII”.
  • Boards using a MICRO USB connector need a cable that is both DATA and CHARGE. Many are CHARGE ONLY.

CREATE editor install locations.

  • On macOs ~/Applications/ArduinoCreateAgent-1.1/ArduinoCreateAgent.app/Contents/MacOS/config.ini
  • On Linux ~/ArduinoCreateAgent-1.1/config.ini
  • On Windows C:\Users[your user]\AppData\Roaming\ArduinoCreateAgent-1.1

Performing the above actions may help resolve your problem without further help.

Language problem ?

Try a language closer to your native language:

Thanks to all those who helped and added to this list.

Bob

DrAzzy:
On classic nano, there are "external interrupts" that work on pins 2 and 3 (int0, int1) and attachInterrupt, plus PCINTs on all pins.

On nano every, there is only one kind of interrupt, it works on all pins (but only the full async pins can wake from sleep on rising/falling - the rest can only wake from sleep on low level or change), and can be used with attachIntereupt. Or can be done manually if you prefer (I consider attachInterrupt to be an abomination)

Perfect, that the information I need. Many thanks. Do you know if it is possible to set an interrupt on an analog input like it is send if voltage is below 4V?

@Bob: Sorry, missed that you moved my first post to this forum and thought it was somehow deleted or not posted.

Cheers,
Nils

Do you know if it is possible to set an interrupt on an analog input like it is send if voltage is below 4V?

You can do this by using the analog comparator with an internally generated reference voltage. Have a look at the MegaCoreX Comparator library.

MegaCoreX is a 3rd party addon to Arduino IDE, and Arduino Nano Every is supported. It brings more features to the table, and currently supports all megaAVR-0 chips.

If you look at the Comparator interrupt example, you can easily modify it to trigger when the voltage crosses a certain level. Basically all you need to do is to change the reference to ref::vref_4v, and tune the dacref value to match exactly 4V.

If you're not sure what pins to connect to, you can have a look at the MegaCoreX Arduino Nano Every pinout diagram.