Hallo, ich bin neu in der Welt der ARMs und möchte gerne mit einen SAMD21 Xplained Pro board (ATSAMD21J18A)programmieren. Gibt es irgendwo eine Erläuterung/Tutorial wie ich da am besten anfangen kann? Bei den AVRs habe ich mich immer gerne hier an den Tutorials und dem Datenblatt angelehnt. Den Board habe ich im Atmel Studio bereits eingebunden und soll über die SWD programmiert werden. Nur fehlt mir nun der entscheide Anstoß, wie werden die Ports/Pins initialisiert, und wie werden die angesteuert. Mir würde für den Anfang reichen, wenn ich die I/Os mit Tastern und low-current Leds ansprechen kann. Den Rest werde ich dann später nachholen. Alternativ würde ich mir auch über eine Lektüre/Buchvorschlag freuen, der die SAMD Serie bearbeitet.
Hallo Alex, als Lektüre kann ich Dir http://www.atmel.com/Images/Atmel-42181-SAM-D21_Datasheet.pdf wärmstens empfehlen. Damit hast Du gut 1000 Seiten, auf denen der Prozessor detailliert beschrieben wird. Den Anstoß, wie Du die Pins initialisieren mußt, findest Du in Abschnitt "22. PORT". Viel Spaß beim Lesen, Klaus
hallo, falls du das ASF (atmel software framework) nutzen möchtest, was dir vieles abnimmt, dann schau dir doch im atmel studio die beispielprojekte für dein board an. file -> new -> example project... oder hast du dort schon geschaut? gruß adam
Falls du dich “bare metal” versuchen willst: Beitrag "Atmel ARM Tutorial C/C++ gesucht" Der SAMD21 ist weitgehend aufwärtskompatibel zum SAMD20. Als Verbesserungen hat er u. a. DMA, eine PLL (außer der DFLL) sowie TCCs zusätzlich zu den TCs.
Alex schrieb: > Ich verstehe nicht wozu braucht man GROUP. Sie nennen im Datenblatt alles PA00 bis PA31, PB00 bis PB31. Es gibt aber in Wirklichkeit nur eine Instanz des Moduls PORT (für den Parallelport), und „A“ und „B“ sind softwaremäßig darin „Group[0]“ und „Group[1]“. Zuweilen findet man daher auch solche Defines:
1 | #define PORTA PORT->Group[0]
|
2 | #define PORTB PORT->Group[1]
|
Danach kannst du statt
1 | PORT->Group[0].OUTCLR.bit.OUTCLR = (1 << 28); |
schreiben
1 | PORTA.OUTCLR.bit.OUTCLR = (1 << 28); |
Danke! Und Funktion _delay_ms(); wird bei ARM anderes geschrieben? Bei ist immer Fehler Error 1 util/delay: No such file or directory
Lies dir doch bitte wenigstens den verlinkten Thread bis zum Ende durch …
util/delay.h gehört nicht zu den Std-Libs der Arms. Das gab es nur bei den AVRs. Aber wie Jörg bereits sagte, es gibt mehre Lösungen, diese Funktionalität hinzuzufügen. Steht alles im Link des Links ;) Nutze die Version von Jörg gerne mal, wenn es nur um ganz einfache Sache zu testen gibt, oder aber der Controller in dieser Zeit mal überhaupt garnichts machen braucht.
dasrotemopped schrieb: > http://start.atmel.com/ > > schon ausprobiert ? Javascript-Wüste … Ist das jetzt Atmel Studio als Web-App? ;-) Ich hab's nicht bis zu Ende probiert (dauerte einfach zu lange), aber es würde mich mehr als wundern, wenn das nicht nur eine andere Art Frontend für ASF ist.
das ist das CubeMX von Atmel. Erzeugt ein Projekt für Atmel Studio 7. Finde es gut, das Atmel an der Baustelle der HW Konfiguration dran ist, aber die Umsetzung als Webseite ist noch schlimmer als CubeMX als Java App. Das man so was nicht in C schreiben kann ... und der Online Zwang, davon will ich erst gar nicht reden. Gruß, dasrotemopped.
dasrotemopped schrieb: > das ist das CubeMX von Atmel. Erzeugt ein Projekt für Atmel Studio 7. > > Finde es gut, das Atmel an der Baustelle der HW Konfiguration dran ist, > aber die Umsetzung als Webseite ist noch schlimmer als CubeMX als Java > App. Das man so was nicht in C schreiben kann ... und der Online Zwang, > davon will ich erst gar nicht reden. naja finde ich jetzt nicht unbedingt, hat schon seine Vorteile. Ich kann jetzt, ohne mir eine Installation auf dem PC anzutun, vorab die Atmel MCU erkunden die mich interessiert, und dann auch gleich schauen wie die Treiber und Middleware Unterstützung aussieht. Die Updates sind immer "automatisch" schon drauf, man muss sich nicht persönlich drum kümmern mit welcher Version man nun arbeitet. nicht nur die Bauteilgruppen selbst, sondern auch die Treiber sind dann immer auf dem aktuellsten Stand. außerdem wird ja - zum Glück - das Projekt nicht nur als Atmel Studio version, sondern auch für keil und iar erstellt, und das kann man dann offline (ohne Internetanbindung) bearbeiten. Seid doch froh dass Atmel nicht auf die Idee gekommen ist, ähnlich wie bei mbed, dass alles online programmiert wird :-D Außerdem ist das jetzt nun auch platformübergreifend, wäre es bei einer offline Version geblieben, müsste man je eine Variante für Linux, Windows und MacOs pflegen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.