Tag Archives: SAM3X8E ARM Cortex-M3 CPU

A closer look at the Atmel-powered Arduino Due (SAM3X8E)

We are proudly celebrating Arduino Day, a global event that showcases a decade of success for the Atmel-powered boards! To mark the event, we’d like to take a closer look at the Arduino Due. Powered by Atmel’s versatile SAM3X8E ARM Cortex-M3 CPU, the board hit the streets back in October 2012.

The very first Arduino board based on a 32-bit ARM core microcontroller features 54 digital input/output pins (of which 12 can be used as PWM outputs), 12 analog inputs, 4 UARTs (hardware serial ports), an 84 MHz clock, USB OTG capable connection, 2 DAC (digital to analog), 2 TWI, power jack, SPI header, JTAG header, a reset button and an erase button.

Additional key specs include:

  • 32-bit core allows operations on 4 bytes wide data within a single CPU clock.
  • 96 KBytes of SRAM.
  • 512 KBytes of Flash memory for code.
  • A DMA controller capable of sharing memory intensive tasks with the CPU.

“The board contains everything needed to support the microcontroller; simply connect it to a computer with a micro-USB cable or power it with a AC-to-DC adapter or battery to get started,” an Arduino rep explained on the product’s official page.

“The Due is compatible with all Arduino shields that work at 3.3V and are compliant with the 1.0 Arduino pinout. [However], the maximum voltage that the I/O pins can tolerate is 3.3V. Providing higher voltages, like 5V to an I/O pin could damage the board.”

The Arduino Due can be programmed with the Arduino software. However, the process of uploading sketches to the SAM3X is somewhat different than with other AVR-based Arduino boards, as the flash memory needs to be erased before being re-programmed. Uploads to the chip are managed by ROM on the SAM3X, which is run only when the chip’s flash memory is empty. Unlike other Arduino boards which use avrdude for uploading, the Due relies on bossac.

More specifically, either of the USB ports can be used for programming the board, though Arduino officially recommends using the programming port due to the way the erasing of the chip is handled.

The maximum length and width of the Arduino Due PCB measures 4 and 2.1 inches respectively, with the USB connectors and power jack extending beyond the former dimension. Three screw holes allow the board to be attached to a surface or case.

Last, but certainly not least, the Arduino Due is designed to be compatible with most shields designed for the Uno, Diecimila or Duemilanove. Digital pins 0 to 13 (and the adjacent AREF and GND pins), analog inputs 0 to 5, the power header, and “ICSP” (SPI) header are all in equivalent locations. In addition, the main UART (serial port) is located on the same pins (0 and 1). Nevertheless, it should be noted that I2C is not located on the same pins on the Due (20 and 21) as the Duemilanove / Diecimila (analog inputs 4 and 5).

Interested in learning more about the Atmel-powered Arduino Due? You can check out the official Arduino Due product page here and order the board here.

Video: Playing Tekken with a piano (and Due)

Tekken is a popular fighting game franchise created, developed and published by Namco. Beginning with the original Tekken in 1994, the series has seen several sequels, spin-off titles and even three films.

According to Wikipedia, the Tekken storyline typically documents the events of the King of Iron Fist Tournament, hosted by the Mishima Zaibatsu corporation. The prize? Control of the company, allowing the winner to host the next tournament.

Recently, a modder by the name of “MC Cool” decided to put a new spin on the classic title by using an Arduino Due (SAM3X8E ARM Cortex-M3 CPU) paired with an Xbox 360 to create the TekkenPiano.

“The piano sends a MIDI-signal, which is transferred to an Arduino,” MC Cool explained in his Vimeo description. “[Based on] the signals, the Arduino triggers transistors, which then trigger inputs on a paewang PCB (the PCB of an arcadestick). The paewang is connected to an Xbox360, [although] you can also use it on PS3.”


An Arduino video game for the masses

Kris Temmerman, a freelance creative developer based in Belgium, recently published a blog post detailing the design of an Arduino-based video game that he created for his neighbors to play.

“I needed something that would appeal to a large audience and was fun to play. So I took the good old gaming cliché, where the world gets invaded by aliens and you have to fight your way to the end boss, save the world and the human race,” Temmerman explained.

“With my minimal resolution of 16*90 pixels, I didn’t have much other choice than making it pixel-art style. The game has three modes: single-player, multiplayer brawling/fighting the aliens mode and an extra fighting mode where two players can battle with each other. Every mode has just one level, but since it is just a casual ‘play on your way to work’ kind of game, I thought it would be more then OK.”

On the hardware side, key components include an LED display, two Atmel-based Arduino Due boards (SAM3X8E ARM Cortex-M3 CPU) and a 60A 5V power supply.

“The screen/main Arduino is connected with the arcade box through a simple tx-rx serial line, which was fast enough to send the button commands. The arcade box is just some painted MDF with a steel frame inside and a steel plate on-top,” Temmerman continued. “[Meanwhile], the Arduino in the arcade box generates the sound and music and handles the raw button/joystick input.”

In terms of software, Temmerman says he cross-developed the game as a Cinder c++ – Arduino app. That way, he didn’t have to upload the sketch every time he wanted to test something.

“I didn’t use any external memory, so I had to store everything on the Arduino. I made a small app that generates c++ classes from bitmaps with some gamma correction for the LED screen. I used indexed colours to save some of that precious SRAM,” he noted.

“For driving the LEDS, I modified the Adafruit neopixel library, to support alpha-blending and make it a little bit faster for my specific case.I don’t really have much experience with generating sound and music, so the 8-bit sound was quite challenging. [Nevertheless], I’m happy with the result.”

Interested in learning more about the Atmel-Arduino powered video game for the masses? You can check out the project’s official page here.

Open source Knitic is Arduino-based

Knitic can best be described as an open source project designed to improve control of electronic knitting machines via an Arduino-based platform. Essentially, it facilitates the easy creation and modification of complex patterns on the fly.

According to the Arduino blog, the Knitic kit comprises an Arduino Due along with a DIY printed circuit board connected to the electronic parts of the original machine. As expected, software is used to regulate needle operation.

“Arduino is A and B in our work. It means we use Arduino for many purposes, and to be honest, we [can’t] imagine our lives without it. We applied Arduino already in our first hack of knitting machines, when floppy emulation script didn’t work for us, since we had 940 and not the 930 machine, ” explained Varvara & Mar, the duo who developed Knitic.

“Hence, we connected all buttons of knitting machine keypad to Arduino and were able to program knitting machine automatically. [Clearly], Arduino [plays] a key role, because it [processes] the sensor output, energizes the [correct] solenoids according to the pattern and communicates with [our] Knitic program written in Processing.”

As previously discussed on Bits & Pieces, the Arduino Due is a microcontroller board  based on Atmel’s SAM3X8E ARM Cortex-M3 CPU. The board boasts 54 digital input/output pins (of which 12 can be used as PWM outputs), 12 analog inputs, 4 UARTs (hardware serial ports), a 84 MHz clock, an USB OTG capable connection, 2 DAC (digital to analog), 2 TWI, a power jack, an SPI header, a JTAG header, a reset button and an erase button.

Additional information about the open source Knitic can be found here.