Is anyone working on the hardware folder for the SAMD10?

I’ve been curious about the touch sensors in the SAM line of ATMEL chips, and I picked up a SAMD10-MiniXplained kit to hack with them. But I cannot find any hardware pointers about the SAM platform searching Google, Bing, etc., for adding into the Arduino IDE. Is anyone already working on this?

I’m fonder of working on my Mac, but at the moment, it looks like my only options for the SAM is to go to a PC to use the Studio6 application… lots of features, but fraught with a complex learning curve, and I’m trying to decide which way to go at this point.

I look forward to hearing that someone is already hacking on this effort. :slight_smile:


Not that I know of. It still might be easier to add it to Arduino (the ARM compiler is already there, for Due/etc, but it doesn't look like there samd10 include files are included yet.)
Also, SAMD10 is pretty small by the standards of Arduino (and ARM in general.) People haven't been paying much attention to code size, because "ARMs have lots of memory." And then when something like the d10 comes along (with 16k or less, it's like "oops."

The new Arduino Zero runs a SAMD21. This is the same line of Cortex M0+ chips as the SAMD10, but with some extras (USB, and some others - Atmel's website will have a better comparison).

If you're interested, then you can use the SAMD21G18, and bootload it with the Arduino Zero bootloader (you will need either a programmer or an Arduino Zero for this).

Given that the D10, D11, D20, and D21 are all the same line of chips, just with some extra hardware as they increase, you may - MAY - find it possible to bootload the D10 with Arduino's modified version of the SAM-BA bootloader with some very minor adjustments to it. The source code for this is available - downloading the board files for the Zero in the 1.6.5 IDE (from Arduino LLC's

If you can adjust the bootloader for the D10/D11 (D11 has USB), then you may be able to dig into the settings a little more to get Arduino to compile your code for a D10/D11/D20/D21, perhaps even by just creating the necessary board files?

Of course, if you're burning a bootloader then I would assume you've got the programmer anyway, at which point you may find the bootloader a little pointless, and you'd rather save the space for your code.

I've also got a Mac - I have a bootcamp partition that runs Studio 6, and Parallels does a great job of VM'ing that bootcamp partition so I can use Studio 6 when coding for my D21 Xplained Pro. Totally agree with the learning curve for Studio 6, EVERYTHING is #define'd, and I spend my entire time sifting through the ASF application notes.

TL;DR - a SAMD21G18 is very similar to the D10 series, with slightly more features, and integrated via the Arduino Zero. Because of the Zero, it may be very easy to create your own 'board' settings based on the settings for the Zero, and slightly change the compiler settings for your board to target the correct uC!

a SAMD21G18 is very similar to the D10 series, with slightly more features

and MUCH more memory. The largest D10 has 16KB Flash and 4KB SRAM, while the smallest d21 has 32KB Flash and 4KB RAM (and they go up to 256k/32k)

This is especially worrisome on arduino, where the minimal ARM sketch is about 12k.

bump...any progress anyone?

any progress anyone?

I don't think anyone even admitted to being interested in working on it... :slight_smile:

I have my SAMD10 Xplained Mini running under Atmel Studio now (in a WXP VM on a Mac.) Their "Blink" example is "only" about 2k, which is a lot better than the 11k of the Arduino Zero Blink... There is lots of room for improvement; ASF isn't any more minimal than Arduino, all things considered.

I already found one "misfeature" of the AS default settings, too...

SAMD10 Xplained Mini Pinout:

"interesting choice" not to connect D8, D9. Sigh.

SAMD10 Xplained Mini Pinout:

"interesting choice" not to connect D8, D9. Sigh.

Broken link. It's a forum bug. It breaks it for you when you use the URL tool.
Here it is again: SamD10 Xplained Mini - Google Sheets

So I've continued to play. Things are "interesting."
A fully optimized (constant arguments) digitalWrite(13, 0) on CM0+ takes 4 instructions (compared to 1 instruction on most AVRs.)
But the obvious implementation of digitalWrite() (all arguments variable, like the code in Arduino) only takes about 12 instructions (compared to about 50 in Arduino!)

More experiments here:

I'm not finding the D10 board very compelling. It has less program space and fewer pins than an ATmega328-based Arduino, isn't spectacularly faster at Arduino-like things (pin writing, etc), and has (probably) rather up-optimized libraries for things like 64bit, floating point, printf, and so on. It's probably much faster at 32bit math (perhaps not including division), but I'm not sure it has enough program space to implement any particularly complex arithmetic algorithms.

It does have that touch peripheral, but I'm not sure how to integrate that into the Arduino environment, and there is a SW touch library for ATmega as well (though I'm not sure how you'd add it to an arduino sketch.)