What's the purpose of the new ATN pin

This is the pin that's next to IOREF on the Zero and which has been unlabelled on the AVR-based boards. From the schematic, it seems to be another IO pin, but the ATN label makes it seem more mysterious.


I don't know, but I do know it's one of the pins used to communicate with the debugger, it could be used as a general IO pin (digital pin 38), and that that pin along with pins 2, 4, and 5 could be used for a third* SPI bus. It also appears to support PWM.

(* With the second being pins 10-13, and the first being the SPI header + A2.)

see the schematic http://www.arduino.cc/en/uploads/Main/Arduino-Zero-schematic.pdf

it's connected via J108 to the Pin22 of the SAMD21 MCU = PA13_GPIO and then connected to the DGI_GPIO0 (Pin PA08) of the EDBG-("Debugger")-Chip but what's the purpose ? ;-)

May be I am wrong but it looks to me that ATN pin was a last minute addition to take advantage of this useless legacy pin location providing a general purpose pin that could be configured according to a custom need (PWM, input, output, etc…). Indeed notice the J108 that can be replaced with a resistor or other SMD if required. May be one of the beta-testers or Arduino dev team could enlighten us about the real purpose of the mysterious ATN (Attention?) pin. Regards,



The ATN pin is an experimental feature we’re introducing with the Arduino Zero. Many shields and expansion modules use an SPI communication protocol and this always requires electing a pin to act as “chip select” effectively making one extra pin unavailable. On processors that have more than 28 pins there are usually extra unallocated pins that can be used. We decided to experiment and allocate a pin to act as the default chip select for the first shield/module on the bus.

We’re going to issue a more formal “application note” to explain some of the new features provided by this pin. For now just treat it as one extra pin available for you to use. Enjoy your Arduino Zero

What is it called in the IDE? Do you use digitalWrite(ATN,HIGH)?

well... it seems that I forgot to add the definition for ATN to the variant file... :cold_sweat:

I've just added in the main branch, it will be available on the next release of the core. https://github.com/arduino/ArduinoCore-samd/commit/00ed1c04b7656612ff46fa4b5bf23c17e30bd1df

In the meantime, as someone else already discovered, it's pin 38.