Arduino Due Board

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

von Matthias882

ACHTUNG !!! Artikel in Arbeit. Da ich selbst gerade mit der Thematik beginne wird sich der Inhalt nach und nach füllen. Kritik und Mitarbeit sind erwünscht :)

Vorwort

Das Arduino Due Board bietet den Vorteil für einen recht kleinen Preis einen fertig aufgebauten AT91SAM3X8E zu bekommen. Dieser ist nicht nur in der recht bescheidenen Arduino-IDE zu verwenden sondern kann auch bequem über das Atmel-Studio programmiert werden.

Dieser Beitrag konzentriert sich auf die Verwendung des Boards jenseits der Arduino-IDE, programmiert in C im AtmelStudio.

Programm-Upload in den Controller

Neben dem Upload und Debugging mittels des ATMEL-ICE besteht auch die Möglichkeit der Verwendung des im Controller integrierten Bootloaders (Wie ihn auch die Arduino-IDE benutzt) Der große Vorteil dabei ist, dass lediglich ein USB-Kabel und kein externer Programmer benötigt wird. Um dieses komfortabel und mit einem Klick aus dem Atmel-Studio heraus zu bewekstelligen sind ein paar Vorarbeiten notwendig.

Einrichtung der Programmierung per Bootloader

Das Arduino Due Board besitzt 2 USB-Schnittstellen. Der Upload ist prinzipiell über beide möglich. Die Schnittstelle "NATIVE USB" ist direkt mit AT91SAM3X8E verbunden, die eigentliche Arduino Programmierschnittstelle "PROGRAMMING" hat noch einen ATMEGA16U2 zwischengeschaltet welcher sich um diverse Abläufe kümmert.

Im Gegensatz zu den AVR-Arduinos bei denen es mittels AVRDUDE möglich war vom AVR-Studio aus den Bootloader zu füttern kommt hier nun ein ähnliches Programm namens "BOSSAC" zum Einsatz. Dieses wird bei der Installation der Arduino-IDE bereits mit auf den Rechner installiert. Der Einfacheit halber suchen wir auf der Festplatte nach "bossac.exe" und kopieren die Datei in den von uns angelegten Ordner "C:\Bossac\". Nachfolgende Anleitung geht davon aus dass dies geschehen ist.

Programmierung über "NATIVE USB" Port

Der Nachteil dieser Methode: Vor jedem Programmieren muss "Erase" und dann "Reset" auf dem Board gedrückt werden um den Bootloader zu aktivieren

->im AVR-Studio im Menü "Tools" -> "External Tools..." -> "Add" ein neues Tool anlegen

Title:		Native Port
Command:	C:\bossac\bossac.exe
Arguments:	-i -d --port=COM5 -U true -e -w -v -b "$(ProjectDir)Debug\$(TargetName).bin" -R

(ggf. den Com-Port anpassen)

Haken setzen bei "Use Output window"

->mit "OK" Fenster schließen

als nächstes unter -> "View" -> "Toolbars" -> "Customize..." -> "New" eine neue Toolbar mit dem Namen "Arduino Programmierung" anlegen

-> den Reiter "Commands" anklicken, unter "Toolbar" im Pulldown-Menü "Arduino Programmierung" raussuchen, -> "Add Command" -> unter "Tools" -> "External Command 1" auswählen und ok klicken

==>> Jetzt gibt es eine Toolbar mit dem Button "Native Port", bei Klick startet die Programmierung (nach manuellem "Erase" / "Reset")

Programmierung über "PROGRAMMING" Port

Komfortabler aber ein wenig schwieriger umzusetzen ist die Möglichkeit 2 - Programmierung über den Programming USB-Port

-mit richtiger Konfiguration erledigt der auf dem Board verbaute Mega16U2 den Erase und den Reset selbst und somit muss nichts auf dem Board gedrückt werden

-Der Mega tut dies beim Verbindungsaufbau mit speziellem Handshake und Baudrate

-Um dies zu bewekstelligen müssen 2 Befehle ausgeführt werden, somit müssen wir eine .bat-Datei dafür anlegen

-> Im Ordner "C:\bossac\" eine Datei "DueProgrammer.bat" erstellen und folgenden Inhalt einfügen:

mode %1:1200,n,8,1,p

C:\bossac\bossac.exe --port=%1 -U false -e -w -v -b %2 -R

->im AVR-Studio im Menü "Tools" -> "External Tools..." -> "Add" ein neues Tool anlegen

Title:		Programming Port
Command:	C:\bossac\DueProgrammer.bat
Arguments:	COM6 "$(ProjectDir)Debug\$(TargetName).bin"

(ggf. den Com-Port anpassen)

Haken setzen bei "Use Output window"

->mit "OK" Fenster schließen

-> "View" -> "Toolbars" -> "Customize..." -> "New" eine neue Toolbar mit dem Namen "Arduino Programmierung" anlegen

-> den Reiter "Commands" anklicken, unter "Toolbar" im Pulldown-Menü "Arduino Programmierung" raussuchen, -> "Add Command" -> unter "Tools" -> "External Command 1" auswählen und ok klicken

==>> Jetzt gibt es eine Toolbar mit dem Button "Programming Port", bei Klick startet die Programmierung sofort und ohne Eingriffe auf dem Board

Update: Mit Windows 10 gibt es den Mode Befehl nicht mehr. Man kann das Script aber ganz einfach wie folgt abändern und Powershell dafür benutzen:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noprofile -command "$port = new-Object System.IO.Ports.SerialPort %1,1200,None,8,one; $port.Open(); $port.Close()"
"D:\BOSSAC\bossac.exe" --port=%1 -U false -e -w -v -b %2 -R

Programmbeispiel: Quadratur-Decoder

Der Controller verfügt über einen schnellen Quadratur-Encoder in seiner Hardware.
In diesem Programmbeispiel wird dieser in Betrieb genommen und liefert über die serielle Schnittstelle alle 0,5s den erfassten Messwert.
Anschluss:
Dreh-Encoder: gemeinsamer Pin an Masse, Ausgang A an Arduino PIN2 (PB25), Ausgang B an Arduino PIN 13 (PB27)
Rechner: mit Terminal an ProgrammingPort 115200 8n1

Datei:Arduino DUE Quadratur.zip