Hallo, ich bin gerade dabei mein erstens Programm mit dem Atmel Sam D20 zu schreiben. Es geht dabei um die Dimmung einer LED an einem Port Pin (z.b.: PA22). Allerdings habe ich große Probleme mit dem Controller. Ich habe schon 8bit Controller programmiert, und nun muss ich leider sagen das mir der umstieg extrem schwer fällt. Kann mir jemand eventuell ein Beispiel zeigen wie ich das mit dem SAM D20 hinbekommen kann? Für den Anfang würde ich das ganze gerne so einfach wie möglich halten also ohne ASF (falls es ohne einfacher ist). Besten Dank schon im Voraus!
Schau mal hier: https://github.com/ataradov/embedded/blob/master/examples/samd20/main.c Es geht allerdings noch "direkter": im Manual stehen die Adressen der Port-Register die DIRSET und OUTSET heissen. Somit: #define DIRSET 0x... #define OUTSET 0x... *((unsigned long *) DIRSET) |= 1<<(pin); *((unsigned long *) OUTSET) ^= 1<<(pin); Das wäre dann erstmal Soft-PWM. Für Hard-PWM musst Du wohl das Timer-Kapitel im Manual ansehen. Wenn Du aber noch nicht auf Atmel M0+ festgelegt bist, es gibt deutlich einfachere ARM Implementierungen z.B. NXP M0+ LPC800 Hier gibt es auch viel mehr Beispiele (für fast alles). https://github.com/cpldcpu/light_ws2812/tree/master/light_ws2812_ARM
für den SAMD21 (etwas mehr Peripherie) gibt es eine ganz schöne Training-Stunde wie man eine PWM macht https://gallery.atmel.com/Products/Details/77af294f-a20c-4758-937b-514aeca54235 Darüberhinaus gibt es doch unzählige fertige Beispiele im ASF. schau mal unter File new example projects, wähl das SAMD20 xplain pro kit aus und stöber... z.b. das fertige Beispiel SAMD20/D21 QTouch Self capacitance example enthält Code welches eine RGB LED ansteuert wenn das nicht reicht gibt es doch einige appnotes, z.b. http://www.atmel.com/Images/Atmel-42123-SAM-D20-D21-Timer-Counter-Driver-TC_Application-Note_AT03263.pdf einfach mal umschauen was es so gibt.
Paul schrieb: > unzählige fertige Beispiele im ASF Es wurde ja gefragt ob es direkt also ohne ASF geht. Dazu wie ASF RAM frisst, was ja beim M0 ein Problem ist, siehe hier: Beitrag "Erste Schritte mit ARM SAMD20" Wenn man einen M4 hat kann man natürlich ASF ohne Nachdenken nutzen.
Erstmal danke für die Hilfe. Den Beitrag "Erste Schritte mit ARM SAMD20" hab ich mir bereits durchgesehen, brachte mich aber leider nicht wirklich weiter. Ein Umstieg vom Controller her ist leider nicht möglich da es bei mir hauptsächlich um Touch Anwendungen geht, und da ist der SAMD wirklich toll. Deshalb beschränkt sich das programmieren auch meist auf einfache Anwendungen wodurch ich nicht sehr geübt bin. Darum dauert das ganze immer etwas länger. ;)
Lothar schrieb: > Paul schrieb: >> unzählige fertige Beispiele im ASF > > Es wurde ja gefragt ob es direkt also ohne ASF geht. Dazu wie ASF RAM > frisst, was ja beim M0 ein Problem ist, siehe hier: > > Beitrag "Erste Schritte mit ARM SAMD20" > > Wenn man einen M4 hat kann man natürlich ASF ohne Nachdenken nutzen. als Referenz taugt es aber alle Mal! Die Appnote stellt die Timer sehr gut dar. Und wo ist das Problem den Debugger einzuschalten, den Breakpoint auf die erste Anweisung in der Main zu setzen und das Beispiel durchzusteppen? Ich habe programmieren gelernt, indem ich fertige Programme angefangen habe zu Debuggen, und das nicht auf einem einfachen AVR sondern auf leistungsfähigeren Prozessoren.
Hallo ich habe jetzt das Programm fertig, danke für die Hilfe!! Aber natürlich habe ich auch schon das nächste Problem: Ich habe meine Schaltung mit einem SAM D20E14 aufgebaut und nun reicht der Speicher nicht für die Anwendung die ich habe. Meine Anwendung besteht aus 1 Slider 1 Button und 1 Hardware PWM, wie kann da der Speicher voll werden???? Hat von euch jemand einen Tipp wie ich den SPeicherverbrauch reduzieren kann? Alleine wenn ich im Qtouch Project Builder den SLider und den Button einfüge berechnet er das ca. 58% Code memory und 13% Data memory benötigt werden. Nach dem Compilieren sind es allerdings: 77% Code memory und 58% Data memory bei meinem Programm mit der PWM 105% code memory und 441,4% Data memory Wisst ihr wie ich das optimieren kann, gibt es dazu im Atmel Studio irgendwelche Enstellungen oder kann ich einen anderen Compiler für das selbe Programm benutzen?
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.