Pentabug/AtmelStudio

Aus C3D2
Zur Navigation springen Zur Suche springen

Auch wenn man keinen Linux-Rechner zur Verfügung hat, lässt sich der Pentabug recht einfach mit der bereitgestellten Firmware-Bibliothek programmieren. Diese Anleitung zeigt, wie man ein erstes einfaches Programm unter Windows mit dem AtmelStudio auf den fertig gelöteten Pentabug aufspielt.

Voraussetzungen

Zuerst muss natürlich der Pentabug gelötet werden. Für diese Anleitung wird die aktuelle Version 2.1 verwendet. Für die Anbindung an den PC sorgt ein ISP Programmer in Form eines USB-Sticks. Im konkreten Fall ist dies ein mySmartUSB light Stick. Dieser kann z.B. über den Internetversandhandel bezogen werden.

Benötigte Hardware

  • PC mit aktuellem Windows
  • ISP Programmer mySmartUSB light Stick
  • fertig gelöteter Pentabug v2.1 inkl. Stromversorgung

Inbetriebnahme ISP Programmer

Beim Einstecken in den PC wird der mySmartUSB light Stick von Windows erkannt und der passende Treiber sollte sich automatisch installieren. Im Windows Geräte-Manger kann man nachschauen, dass Treiber automatisch installiert wurde. Hier sieht man auch gleich, an welchen COM-Anschluss der Stick zu nutzen ist. Die Anschlussnummer merken wir uns! Sollte der Treiber nicht automatisch installiert werden, kann man die Installation von hier im Eigenschaftsfenster des Sticks auch noch einmal anstoßen. Die automatischen Treibersuchen von Windows findet den Treiber eigentlich alleine. Der Pentabug bekommt den Strom von den Batterien. Diese werden angeschlossen und der Jumper auf BAT gesetzt. Das Verbindungskabel kann am mySmartUSB light Stick nur in eine Richtung eingesteckt werden. Am Pentabug kommt der Stecker so auf die 2x3 Pins, dass das rot markierte Kabel auf der Seite mit der 1 auf dem Pentabug sitzt (siehe Foto am Ende des Artikels).

Pentabug Firmware herunterladen

Damit man nicht sofort Bits im Pentabug schubsen muss, gibt es eine Firmware, die die Ansteuerung der auf dem Pentabug verbauten Teile etwas vereinfacht. Diese findet man in der aktuellen Version bei GitHub. Entweder mit einem Git-Client oder als ZIP-Paket von https://github.com/c3d2/pentabug laden und in ein lokales Verzeichnis, z.B. nach <Eigene Dateien>\Pentabug\Firmware\GitHub entpacken.

AtmelStudio installieren

Für die Programmierung benutzen wird das kostenfreie AtmelStudio. Die aktuelle Version bekommt man unter http://www.atmel.com/tools/atmelstudio.aspx#download Bei der Installion reicht es aus, die AVR-8bit MCU Architektur zu installieren.

Pentabug im AtmelStudio bekannt machen

  • Nach dem Start des AtmelStudio:
    • Menü Tools -> Add target ...
    • Select Tool -> STK500
    • COM-Port des Sticks auswählen. Dieser ist in den Eigenschaften im Windows Geräte-Manager (s.o.) zu finden.
    • Apply

Dialog Add target

  • Nun schauen wir noch nach, ob die Kommunikation klapp:
    • Menü Tools -> Device Programming (Strg+Shift+P)
    • Tool -> STK500
    • Device -> ATmega88A
    • Interface -> ISP
    • Mit Apply wird Verbindung zum Pentabug aufgenommen.
      • Sollte das nicht klappen, wird nach einem Timeout ein Fehler gemeldet. Bei Erfolg sind im unteren Teil des Fensters Informationen zum Pentabug zu finden.

Erstes eigenes Testprojekt

Das AtmelStudio sollte bereits gestartet sein.

Neues Projekt anlegen

  • Menü File -> New -> Project (Ctrl+Shift+N)
  • Im Dialog New Project
    • GCC C Executable Project auswählen
    • Name -> ErstesTestprojekt
    • Location -> <Eigene Dateien>\Pentabug
    • Solution name -> EigenePentabugProjekte
      • OK

Dialog New Project

  • Im Dialog Device Selection
    • über die Suche nach 88a suchen -> es bleibt nur noch ein Eintrag übrig
      • Atmega88A anklicken
      • OK

Dialog Device Selection

  • Nun ist das Projekt erstellt.
    • Der Einfachheit halber wollen wir die Hauptmethode aus der Test-Firmware des Pentabug nutzen. Diese ermöglicht bereits das Laden von mehreren Programmen zwischen denen mit einem langen Tastendruck am Pentabug gewechselt werden kann. Deshalb benötigen wir die generierte Datei main.c nicht. Diese kann über das Kontextemenü im Solution Explorers gelöscht werden:
      • Remove -> Delete
  • Nun müssen in die Projekteinstellungen, um den Pentabug dem Projekt zuzuordnen:
    • Menü Project -> Properties (Alt + F7)
    • Tool -> Select debugger/programmer -> STK500
    • Interface -> ISP

Projekteinstellungen

  • Nun fügen wir dem Projekt die Firmware-Header-Dateien hinzu:
    • Menü Project -> Properties (Alt + F7)
      • Toolchain -> im Baum zu AVR/GNU C Compiler -> Directories -> rechts Schaltfläche Add Item -> Pfad zu <Eigene Dateien>\Pentabug\Firmware\GitHub\firmware\include auswählen
      • OK

Projekteinstellungen

  • Jetzt müssen noch die Pentabug-Firmware-Bibliotheken eingebunden werden:
    • rechts im Solution Explorer Kontextmenü auf ErstesTestprojekt -> Add -> Existing Item .. (Shift+Alt+A)

Kontextmenü zum Einbinden existierender Dateien

  • zum Verzeichnis <Eigene Dateien>\Pentabug\Firmware\GitHub\firmware\lib wechseln -> alle Dateien auswählen
    • den kleinen Pfeil auf der Add-Schaltfläche nutzen -> Add As Link

Quellcode-Dateien der Firmware

  • Ebenso müssen wir die bereits angesprochene Hauptmethode aus der Test-Firmware einbinden:
    • rechts im Solution Explorer Kontextmenü auf ErstesTestprojekt -> Add -> Existing Item .. (Shift+Alt+A)
      • zum Verzeichnis <Eigene Dateien>\Pentabug\Firmware\GitHub\firmware wechseln -> main.c auswählen
      • den kleinen Pfeil auf der Add-Schaltfläche nutzen -> Add As Link

Quellcode-Dateien der Firmware

  • Nun sollte sich das Projekt eigentlich bereits compilieren lassen. Das können wir auch gleich testen:
    • Menü Build -> Build Solution (F7)

Unser erstes Programm schreiben

  • Dazu benötigen wir eine eigene Quellcode-Datei:
    • rechts im Solution Explorer Kontextmenü auf ErstesTestprojekt -> Add -> New Item (Ctrl+Shift+A)
    • C File auswählen
    • Name: ErstesTestprogramm.c
    • Schaltfläche Add
  • Den grundlegenden Aufbau eines Programms kann man sich in den Beispielen unter <Eigene Dateien>\Pentabug\Firmware\GitHub\firmware\apps anschauen.
  • Wir wollen hier einfach nur die LED blinken lassen. Dazu benötigen wir den folgenden Code unserer Datei ErstesTestprogramm.c:
#include <stdlib.h>

#include <pentabug/app.h>
#include <pentabug/hal.h>
#include <pentabug/matrix.h>

static void run(void) {
	led_on(RIGHT);
	wait_ms(100);
	led_on(LEFT);
	wait_ms(100);
	led_off(RIGHT);
	wait_ms(100);
	led_off(LEFT);
	wait_ms(100);
}

REGISTER(run, NULL, NULL);
  • Das Projekt sollte sich immer noch compilieren lassen. Dies können wir mit F7 testen.

Programm auf Pentabug überspielen

  • Dazu müsst Ihr das Programm einfach nur ausführen:
    • Menü Debug -> Continue (F5)
    • Nun sollte das Programm auf den Pentabug überspielt werden und dieser sollte anfangen abwechselnd recht und links zu blinken:

Blinkender Pentabug