MicroController Pros Home Page
My Account  Cart Contents  Checkout  
  Store » A000111 My Account  |  Cart Contents  |  Checkout   
Quick Find
Enter keywords to find the product you are looking for in the Quick Find field above

or use
Advanced Search
Accessory Boards->
ADI Blackfin
Atmel AVR->
Cypress PSoC
Microchip PIC->
Silicon Labs
ST Microelectronics->
Texas Instruments->
Embedded Ethernet->
Embedded Software->
I/O Modules->
Parts & Components->
Pick & Place Tools
Programmable Logic (PLD)
Prototype PCBs->
ROM/Flash Emulators
Test & Measurement->
Tutorial Software
Universal Programmers->
Intro to Embedded Tools
Embedded News Digest
Useful Resources
Shipping & Returns
Warranty & Liability
Privacy Notice
Conditions of Use
Contact Us
Arduino M0 Pro: ATSAMD21G18 ARM Cortex-M0 with EDBG, 3.3V, USB US$50.90

Arduino M0 Pro: ATSAMD21G18 ARM Cortex-M0 with EDBG, 3.3V, USB

With the Arduino M0 Pro (formerly known as Arduino Zero Pro), you will have the potential to create your most imaginative and new ideas for IoT devices, wearable technologies, high-tech automation, wild robotics and other not-yet-imagined adventures in the world of makers.

The Arduino M0 Pro represents a simple yet powerful 32-bit extension of the Arduino Uno platform. The board is powered by Atmel's SAMD21 MCU, featuring a 32-bit ARM Cortex M0 core. The power of this core gives the board an upgraded flexibility and boosts the scope of projects one can think of and make. Moreover, it makes the M0 Pro an ideal educational tool for learning about 32-bit application development.

Atmel's Embedded Debugger (EDBG), integrated in the board, provides a full debug interface with no need for additional hardware, making debugging much easier. EDBG additionally supports a virtual COM port for device programming and traditional Arduino bootloader functionality.

Arduino M0 Pro Features

EDBG MicrocontrollerAT32UC3A4256
Operating Voltage3.3V
Input Voltage6V to 15V recommended
Input Tolerance4.5V to 20V
Digital I/O Pins20, w/ 12 PWM & UART
Analog Input Pins6, 12-bit ADC channels
Analog Output Pins1, 10-bit DAC
DC Current per I/O Pin7 mA
Flash Memory256 KB
Clock Speed48 MHz
Dimensions2.7 2.1 inches (PCB only; connectors extend)

Powering the Board

The Arduino M0 Pro can be powered via a micro-USB connection or with an external power supply. The power source is selected automatically.

External (non-USB) power can come either from an AC-to-DC adapter (wall-wart) or a battery. The adapter can be connected to the board by plugging a 2.1mm center-positive plug into the board's power jack. Leads from a battery can be inserted into the Gnd and Vin pin headers of the POWER connector. External power is required when the 500mA provided via USB is not enough to power a connected USB device is a USB Host application.

If you have both external and USB power sources connected, the board will give priority to the external source, switching automatically to USB if the external source is removed. Also the Embedded Debugger USB port takes precedence over the Target USB port as a power source.

The power pins are as follows:

  • VIN The input voltage to the Arduino board when using an external source. You can supply voltage through this pin, or, if supplying voltage via the power jack, access it through this pin. The allowed input range is 6-20V.
  • 5V The regulated power supply used to power the microcontroller and other components on the board. This can come either from VIN via an on-board regulator, or be supplied by USB or another regulated 5V supply. The maximum current output provided by the on-board regulator is 1A (according to the power input source).
  • 3V3 A 3.3-volt supply generated by the on-board regulator. Maximum current draw is 1A according to the power input source.
  • GND Ground pins.
  • IOREF The voltage at which the I/O pins of the board are operating (i.e. VCC for the board). This is 3.3V on the M0 Pro.


The ATSAMD21G18 has 256KB of Flash program memory (with 4KB used for the bootloader). The bootloader is factory pre-burnt by Atmel and is stored in dedicated ROM. The bootloader is protected using the NVM fuse. The board also has 32KB of SRAM.

Input and Output

Each of the 14 digital I/O pins on the M0 Pro can be used as an input or an output, using pinMode(), digitalWrite(), and digitalRead() functions. They operate at 3.3V. Each pin can provide or receive a maximum of 7mA and has an internal pull-up resistor (disconnected by default) of 20-60 kOhms. In addition, some pins have specialized functions:
  • Serial: 0 (RX) and 1 (TX) Used to receive (RX) and transmit (TX) TTL serial data using the ATSAMD21G18 hardware serial capability. Note that on the M0 Pro, the Serial class refers to USB (CDC) communication; for 3.3V serial on pins 0 and 1, use the Serial1 class.
  • TWI: SDA and SCL Support TWI communication using the Wire Library.
  • PWM
  • Pins 2 through 13 provide 8-bit PWM output with the analogWrite() function. The resolution of the PWM can be changed with the analogWriteResolution() function. Note: Pins 4 and 10 can not be used simultaneously as PWM; neither can pins 5 and 12.
  • SPI (on the ICSP header) These pins support SPI communication using the SPI Library. Note that the SPI pins are not connected to any of the digital I/O pins as they are on the Uno. On the M0 Pro, they are available only on the ICSP connector. This means that if you have a shield that uses SPI but does not have a 6-pin ICSP connector that connects to the Mo Pro's 6-pin ICSP header, that shield will not work.
  • LED: 13 There is a built-in LED connected to digital pin 13. When the pin is High value, the LED is on; when the pin is Low, it's off.
  • Analog Inputs: A0 - A5 The M0 Pro has six analog inputs, labeled A0 through A5. Pins A0-A5 appear in the same locations as on the Uno. Each analog input provides 12 bits of resolution (i.e. 4096 different values). By default, the analog inputs measure from ground to 3.3V, though is it possible to change the upper end of their range using the AREF pin and the analogReference() function.
  • DAC Pin A0 provides true analog output with 10-bit resolution (1023 levels) with the analogWrite() function. This pin can be used to create an audio output using the Audio Library.
  • Reset Bring this line Low to reset the microcontroller. This is typically used to add a reset button when shields are used that block the one already present on the board.


The M0 Pro has a number of facilities for communicating with a computer, another Arduino, or other microcontrollers, and with different devices like phones, tablets, cameras and so on. The SAMD21 provides one hardware UART and three hardware USARTs for 3.3V serial communication.

The Programming port is connected to EDBG, which provides a virtual COM port to software on a connected computer (to recognize the device, Windows machines will need a .inf file that is included in the Arduino IDE software package; OSX and Linux machines will recognize the board as a COM port automatically). The EDBG is also connected to the SAMD21 hardware UART. The Serial on pins RX0 and TX0 provides Serial-to-USB communication for programming the board through the ATSAMD21G18 microcontroller.

The Arduino software includes a serial monitor which allows simple text data to be sent to and from the board. The RX and TX LEDs on the board will flash when data are being transmitted via the ATSAMD21G18 chip and USB connection to the computer (but not for serial communication on pins 0 and 1).

The Native USB port is connected to the SAMD21. It allows for serial (CDC) communication over USB. This provides a serial connection to the Serial Monitor or other applications on your computer.

The SAMD21 also supports I2C (TWI) and SPI communication. The Arduino software includes a Wire Library to simplify use of the TWI bus. For SPI communication, use the SPI Library.


The M0 Pro can be programmed with the Arduino software. Note that if you're using a Linux-based OS, be sure to follow the Guide to using Arduino in Linux.

Uploading sketches to the SAMD21 is different from how it works with the AVR microcontrollers found in other Arduino boards: the Flash memory needs to be erased before being re-programmed. Upload operation is managed by a dedicated ROM area on the SAMD21.

Either USB port can be used to program the board:

  • Programming port To use this port, select Arduino M0 Pro (Programming Port) as your board in the Arduino IDE. Connect the M0 Pro programming port (the one closest to the DC power jack) to your computer. The programming port uses the EDBG as a USB-to-serial chip connected to the first UART of the SAMD21 (RX0 and TX0). The EDBG has two pins connected to the Reset and Erase pins of the SAMD21. Opening and closing the Programming port connected at 1200bps triggers a "hard erase" procedure of the SAMD21 chip, activating the Erase and Reset pins on the SAMD21 before communicating with the UART. This is the recommended port for programming the M0 Pro. It is more reliable than the "soft erase" that occurs on the Native port, and it should work even if the main MCU has crashed.
  • Native port To use this port, select Arduino M0 Pro (Native USB Port) as your board in the Arduino IDE. The Native USB port is connected directly to the SAMD21. Connect the M0 Pro Native USB port (the one closest to the reset button) to your computer. Opening and closing the Native port at 1200bps triggers a "soft erase" procedure: the Flash memory is erased and the board is restarted with the bootloader. Opening and closing the native port at a different baudrate will not reset the SAMD21.

USB Overcurrent Protection

The M0 Pro has a resettable polyfuse that protects your computer's USB ports from shorts and overcurrent. Although most computers provide their own internal protection, the fuse provides an extra layer of protection. If more than 500mA flows through the USB port, the fuse will automatically break the connection until the short or overload is removed.

Physical Characteristics

The maximum length and width of the M0 Pro PCB are 2.7 and 2.1 inches respectively, with the USB and power connectors extending beyond. Four screw holes allow the board to be attached to a surface or case. Note that the distance between digital pins 7 and 8 is 160 mil (0.16") not an even multiple of the 100-mil spacing of the other pins. (This is a legacy arrangement from the original Arduino's design flaw, maintained for compatibility with Arduino Shields.)

Arduino M0 Pro Resources

The various links above on this page can be found also from the the starting points listed below.

This product was added to our catalog on Thursday 28 January, 2016.


Shopping Cart more
0 items
What's New? more
Flowcode 7 for PIC, AVR, Arduino, ARM - Pro 5 User
Flowcode 7 for PIC, AVR, Arduino, ARM - Pro 5 User
Specials more
2N3906 PNP Transistor, 200mA/40V, TO-92 (10 pack)
2N3906 PNP Transistor, 200mA/40V, TO-92 (10 pack)
Tell A Friend

Tell someone you know about this product.
Notifications more
NotificationsNotify me of updates to Arduino M0 Pro: ATSAMD21G18 ARM Cortex-M0 with EDBG, 3.3V, USB
Reviews more
Write ReviewWrite a review on this product!
  Wednesday 29 March, 2017   List of all our Products

Copyright © 2003-2017 MicroController Pros LLC
Powered by osCommerce