Willkommen in unserer Community

Werde Teil unserer Community und registriere dich jetzt kostenlos ...

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Pogrammierung SAM D21 mit Atmega ICE und SWD

Dieses Thema im Forum "Software" wurde erstellt von achim S., 12. Juni 2017.

  1. achim S.

    achim S. Mitglied

    Registriert seit:
    16. Januar 2010
    Beiträge:
    148
    Zustimmungen:
    0
    Sprachen:
    C#
    Map
    Hallo Gemeinde
    habe mir das Board mit dem ARN SAM 21 (hier von Dev-Tool) und den Atmega ICE Programmer zugelegt.
    Soweit. so gut. Doch wie geht es weiter?
    Verwende das AVR Studio 7 und habe Erfahrung mit dem Atmega 1284p und einigen anderen.
    Doch woe mache das mit dem ARM?
    Was schon geht:

    - der Atmega ICE Programmer wird vom AVR Studio erkannt und ist eingestellt
    - stecke den Programmer auf den SWD des SAM D21
    - der SAM D21 wird vom AVR Studio erkannt und mit der Nummer angezeigt

    Bis her hatte ich alle notwendigen Datein und Libs auf meinem Rechner und konnte sie, falls nötig kopieren oder wurden geladen.
    Erstelle ich jetzt ein Programm, z.B. einfache Pinabfrage, so bekomme ich die Fehlermeldung das die Libs fehlen. Wo bekomme ich diese Libs und wie ins Programm einbinden?
    Möchte beim "normalen" C bleiben und das kastrierte vom Arduino nehmen.
    Gibt es ein Tut für so was?
    Könnte mir jemand auf die Sprünge helfen?
    achim
     
  2. Dirk

    Dirk Administrator Mitarbeiter

    Registriert seit:
    28. Januar 2007
    Beiträge:
    3.905
    Zustimmungen:
    98
    Ort:
    Mittelhessen, Giessen
    Sprachen:
    C#, Assembler, Pascal, C++, PHP, Java
    Map
    Hallo Achim,

    bei Arduino in Verbindung mit ARM kann ich dir leider nicht so gut weiterhelfen.

    Ich habe mal ein einfaches Beispielprojekt für AtmelStudio hochgeladen, dieses verwendet das ASF (Atmel Software Framework).

    Vielleicht kann dir das ja etwas weiter helfen.


    Kurze Erläuterung zum Programm:
    Der Systickhandler wird initialisiert. In dessen ISR (1ms) wird die LED des NanoSAMD21 getoggelt (250ms)
    Das Hauptprogramm macht soweit nichts, außer die Taste abfragen, wird diese gedrückt, wird die LED angeschaltet.

    Das ASF ist sicherlich hierfür etwas überdimensioniert, aber zum Starten denke ich ganz gut ... und es gibt ja noch komplizierte Sachen als GPIO konfigurieren ;)

    Beispielprojekt:
    NanoSAMD21_Example.zip



    CodeBox C und C++
    #define BUTTON_PIN       PIN_PA13
    #define LED0_PIN       PIN_PB30
    #define LED0_ACTIVE       false
    #define LED0_INACTIVE   !LED0_ACTIVE
    
    #define LED_ON           port_pin_set_output_level(LED0_PIN, LED0_ACTIVE);
    #define LED_OFF           port_pin_set_output_level(LED0_PIN, LED0_INACTIVE);
    #define LED_TOGGLE       port_pin_toggle_output_level(LED0_PIN);   
    
    /** Handler for the device SysTick module, called when the SysTick counter
     *  reaches the set period.
     *
     *  \note As this is a raw device interrupt, the function name is significant
     *        and must not be altered to ensure it is hooked into the device's
     *        vector table.
     */
    
    
    void SysTick_Handler(void)
    {
       
       static uint16_t delaycount = 0;
    
       if (delaycount < 250)
       {
           delaycount++;
       } else {
           delaycount = 0;
           LED_TOGGLE       
       }
       
    }
    
    static void configure_systick_handler(void)
    {
       SysTick->CTRL = 0;
       SysTick->LOAD = 8000; //48000; // 1ms Event (1ms/(1/48Mhz))   
       SysTick->VAL  = 0;
       SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk;
    }
    
    int main (void)
    {
                      
       // Initialization Section           
       irq_initialize_vectors();
       cpu_irq_enable();   
       system_init();
           
       // LED
       struct port_config config_port_pin;
       port_get_config_defaults(&config_port_pin);
       config_port_pin.direction = PORT_PIN_DIR_OUTPUT;
       port_pin_set_config(LED0_PIN, &config_port_pin);
       
       // BUTTON
       port_get_config_defaults(&config_port_pin);   
       config_port_pin.direction = PORT_PIN_DIR_INPUT;
       config_port_pin.input_pull = PORT_PIN_PULL_UP;
       port_pin_set_config(BUTTON_PIN, &config_port_pin);
           
       configure_systick_handler();
    
    LED_ON
       while (1)
       {
           
           // main loop of application code
           
           if (!port_pin_get_input_level(BUTTON_PIN)) {
               /* Button is pressed */
               LED_ON
           }
           
       }
    
    }
    
    
     
  3. achim S.

    achim S. Mitglied

    Registriert seit:
    16. Januar 2010
    Beiträge:
    148
    Zustimmungen:
    0
    Sprachen:
    C#
    Map
    Hallo Dirk
    danke für deine Antwort. Habe mir das ZIP geholt und schon mal angeschaut. Dabei fällt mir sofort das "asf.h" auf. Habe auch was von GCC gelesen. In deinem Projekt ist asf enthalten. Wie kann ich das asf und die ganzen anderen datein dauerhaft einbinden?
    Werde das Programm gleich mal laden und mein erstes Programm mit ARN ausführen.
    Mit Arduino habe ich auch nichts zu tun. Ist mir einfach zu " .... ". Andere finden ihn gut, ich halt nicht. Mekde mich mit einem Ergebnis.
    achim
     
  4. achim S.

    achim S. Mitglied

    Registriert seit:
    16. Januar 2010
    Beiträge:
    148
    Zustimmungen:
    0
    Sprachen:
    C#
    Map
    Hallo Dirk
    habe das Programm mit allen Datein geladen, angeschaut welche Pins du benutzt und gestartet. Es liess sich ohne Fehler kompilieren und funktioniert. LED 1 an PB30 blinkt. Wenn ich den Taster an PA13 betätige geht die LED auf Dauerlicht. Klappt sehr gut. Jetzt kann ich mich auch an die einzelnen Funktionen machen und feststellen was alles benötigt wird. Bleiben allerdings noch die Fragen vonoben.
    achim
     
  5. Dirk

    Dirk Administrator Mitarbeiter

    Registriert seit:
    28. Januar 2007
    Beiträge:
    3.905
    Zustimmungen:
    98
    Ort:
    Mittelhessen, Giessen
    Sprachen:
    C#, Assembler, Pascal, C++, PHP, Java
    Map
    Du meinst
    (1) deine eigenen Libs verwenden und wie diese "einbauen"?
    (2) Tutorials für SAMD21 und C? (Ich kenne da leider keine, die alles abhandeln. Wenn du das ASF nutzt sind eigentlich immer Hilfen in der Dokumentation vorhanden, siehe im ASF Explorer)
     
  6. achim S.

    achim S. Mitglied

    Registriert seit:
    16. Januar 2010
    Beiträge:
    148
    Zustimmungen:
    0
    Sprachen:
    C#
    Map
    Hallo Dirk
    da ja dein erstes Programm bei mir geht, kann ich weitermachen.
    Meine Fragen mal anders:

    - Wie hast du das Projekt (Beispiel erstellt)?
    - Wie kann ich ASF einbauen?
    - Ist dein Programm auch in C geschrieben? (Da es einen relativ grossen Unterschied zum At128 gibt)

    Bin für jeden Hinweis dankbar und werde gern (wenn es geht) alles hier veröffentlichen, z.B. als Tut zur Anleitung des SAM D21.
    Arbeitet keiner sonst mit dem SAM D21?

    achim
     
  7. Dirk

    Dirk Administrator Mitarbeiter

    Registriert seit:
    28. Januar 2007
    Beiträge:
    3.905
    Zustimmungen:
    98
    Ort:
    Mittelhessen, Giessen
    Sprachen:
    C#, Assembler, Pascal, C++, PHP, Java
    Map
    Hallo Achim,
    hier eine Kurzbeschreibung, wie due ein Projekt mit ASF erstellst ...

    AtmelStudio starten
    Menüpunkt New/Project wählen

    Dialog "New Project":
    GCC C ASF Board Projekt wählen, unten Projektname und Location angeben, OK

    Dialog "Device Selection":
    Hier den Mikrocontroller auswählen.
    SAMD21/ATSAMD21J17A

    Menüpunkt ASF/ASF Wizard auswählen

    Dialog "Board Selection Wizard":
    User Board Template auswählen.
    Next ... Finish ... Apply

    Im ASF Wizard nun Driver, Services oder Components auswählen.
    z.B. Port-GPIO Pin Control driver
    Add>> ... Apply

    Rechts im ASF Explorer sind nun die importierten Sachen aus dem ASF, mit Dokumentation.
     
  8. achim S.

    achim S. Mitglied

    Registriert seit:
    16. Januar 2010
    Beiträge:
    148
    Zustimmungen:
    0
    Sprachen:
    C#
    Map
     
  9. achim S.

    achim S. Mitglied

    Registriert seit:
    16. Januar 2010
    Beiträge:
    148
    Zustimmungen:
    0
    Sprachen:
    C#
    Map
    Beim ersten Versuch hat schon eine Menge funktioniert. Leider komme ich hier nicht weiter. Das "User Board Template " wird angezeigt und kann ausgewählt werden (beim anklicken wird es blau), aber das "Next - Finish - Apply" kommt nicht. Sind grau hinterlegt und kann es nicht anklicken.
    Ein paar Kleinigkeiten sind auch anders, ist unerheblich.
    achim
     
  10. achim S.

    achim S. Mitglied

    Registriert seit:
    16. Januar 2010
    Beiträge:
    148
    Zustimmungen:
    0
    Sprachen:
    C#
    Map
    Hallo Dirk
    habe weiter nach dem (Fehler) gesucht. Du schreibst


    Dort erscheint bei mir "Auswahl Board", kann zwar den SAM eingeben nimmt aber das Board mit dem Prozessor drauf und kann es nicht mehr ändern. Wahrscheinlich eine Einstellung falsch. Bin am suchen.
    achim
     

Diese Seite empfehlen

  • Über uns

    Unsere immer weiter wachsende Community beschäftigt sich mit Themenbereichen rund um Mikrocontroller- und Kleinstrechnersysteme. Neben den Themen Design von Schaltungen, Layout und Software, beschäftigen wir uns auch mit der herkömmlichen Elektrotechnik.

    Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  • Coffee Time

    Unser makerconnect-Team arbeitet hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und unser eigener makerconnekt-Server regelmäßig gewartet wird. Wir nehmen das Thema Datensicherung und Datenschutz sehr ernst und sind hier sehr aktiv, auch sorgen wir uns darum, dass alles Drumherum stimmt!

    Dir gefällt das Forum und die Arbeit unseres Teams und du möchtest es unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft, unser Team freut sich auch über eine Spende für die Kaffeekasse :-)
    Vielen Dank!
    Dein makerconnect-Team

    Spende uns! (Paypal)