Tutorial für Fortgeschrittene - Teil 1

In diesem Teil werden wir ein Atmel Studio Projekt aufsetzen und für das ATtiny Curiosity Board konfigurieren.

Ziel von Teil 1

Wir wollen mit dem ATtiny 1607 Curiosity Nano Evaluation Kit eine Temperatur-Überwachung mit optischer Übertemperatur-Anzeige entwickeln.

In diesem Teil werden wir hierfür ein Atmel Studio Projekt aufsetzen und für das ATtiny Curiosity Board konfigurieren. Als Ergebnis werden wir dadurch ein Source Code Projekt erhalten, das bereits compiliert und über den integrierten OnChip Debugger auf das Curiosity Board geladen und dort ausgeführt und gedebugged werden kann.

In dieses Projekt werden wir dann am Ende des Tutorials den Source Code integrieren, den wir im nächsten Teil dieses Tutorials modellieren und generieren werden.

Schritt #1.1: Atmel Start Projekt aufsetzen

Atmel Studio ist als Entwicklungsumgebung für AVR Mikrocontroller sehr vorteilhaft, weil es alle erforderlichen Features, wie Compiler, Programmer und Debugger voll integriert hat und man damit alle Werkzeuge zur Verfügung hat, um sofort loslegen zu können.

Besonders praktisch ist bei Atmel Studio die Integration von Atmel Start. Mit dieser Umgebung lassen sich alle Features eines AVR Mikrokontrollers konfigurieren und man kann sich daraus ein schlankes C Software Interface mit High Level Zugriffsfunktionen auf alle konfigurierten Module generieren lassen. Eine super Basis um darauf seine eigene Entwicklung zu beginnen.

Um alle Vorzüge von Atmel Start und der komfortablen Integration in Atmel Studio nutzen zu können, sollte man dieses bereits beim Erstellen eines neuen Projektes als neue Projektart auswählen.

  • Erstellen Sie in Atmel Studio ein neues Projekt über: File > New > Atmel Start Project.

Danach muss der zu programmierende Mikrocontroller ausgewählt werden. Dabei hilft die Filterfunktion. Auf dem Curiosity Nano Evaluation Kit befindet sich der ATtiny 1607.

  • Wählen Sie den ATtiny 1607 aus.
  • Starten Sie danach das Aufsetzen des Projektes mit „Create New Project“.

Das Ergebnis ist ein Atmel Start Projekt in dem sich vorerst nur die Standard-Komponenten BOD, CPUINT, SLPCTRL und CLKCTRL befinden.

Uns interessiert hiervon erstmal nur die Komponente CPUINT, in der man die Interrupt Konfiguration vornehmen kann. Für unsere Zwecke reicht es, hier die globalen Interrupts zu aktivieren.

  • Aktivieren Sie die globalen Interrupts über „Global Interrupt Enable“.

Über „Add software component“ lassen sich zu dem Projekt nun neue Konfigurations Module hinzufügen.

Schritt #1.2: Modul VREF – Interne Referenzspannungsquelle für den ADC hinzufügen und konfigurieren

Jeder ADC benötigt eine Referenz-Spannungsquelle. In unserem ATtiny ist diese bereits integriert, muss aber softwaremäßig aktiviert und konfiguriert werden.

Um mit dem ADC die Temperatur des internen Temperatur Sensors messen zu können, ist eine spezielle Konfiguration erforderlich. Diese ist im ATtiny 1607 Data Sheet im Kapitel „Temperature Measurement“ genauer beschrieben.

  • Fügen Sie dem Atmel Start Projekt eine VREF Driver Komponente hinzu.
  • Aktivieren Sie die Referenz-Spannungsquelle über „ADC0 reference enable“.
  • Selektieren Sie als Referenz-Spannung den Wert 1.1V über „ADC0 reference select“.

Schritt #1.3: Modul ADC – Analog Digital Converter hinzufügen und konfigurieren

Um mit dem ADC die Temperatur des internen Termperatur Sensors messen zu können, ist eine sorgfältige Konfiguration erforderlich. Detail hierzu sind ATtiny 1607 Data Sheet im Kapitel „Temperature Measurement“ genauer beschrieben.

  • Fügen Sie dem Atmel Start Projekt eine ADC Driver Komponente hinzu.
  • Aktivieren Sie diese über „ADC enable“.
  • Selektieren Sie als Kanal den Temperatur Sensor über „Analog Channel Selection“.
  • Aktivieren Sie den „Result Ready Interrupt“.
  • Aktivieren Sie die erweiterte „Sampling Configuration“ um zusätzliche wichtige Einstellungen vornehmen zu können.
  • Setzten Sie „Initial Delay Selection“ auf 64 cycles.
  • Setzten Sie „Sample length“ auf 0x1F.
  • Aktivieren Sie „Sample Capacitance Selection“.

Schritt #1.4: Modul TIMER hinzufügen und konfigurieren

Das Timer Modul des ATtiny ist eine wahres Wunderding an Möglichkeiten (die im ATtiny 1607 Data Sheet im Kapitel „TCA – 16-bit Timer/Counter Type A“ genauer beschrieben sind). Wir werden davon jedoch nur die Generierung eines zyklischen Tick Interrupts nutzen, um damit eine einfache Zeitsteuerung zu realisieren.

Wir wollen eine Tick Periode von 1ms erreichen. Die Main-Clock-Frequenz ist 3.333.000 Hz. Wenn wir einen Prescaler von 8 wählen, wird daraus eine Timer-Frequenz von 416.625 Hz. Um einen Tick von ca. 1ms zu erreichen benötigen wir also einen Period-Counter von 0x01A0.

  • Fügen Sie dem Atmel Start Projekt eine Timer Driver Komponente hinzu.
  • Aktivieren Sie diese über „Module Enable“.
  • Wählen Sie einen Prescaler von 8 über „Clock Selection“.
  • Setzten Sie „Period“ auf 0x01A0.
  • Aktivieren Sie „Include ISR harness in driver_isr.c“.
  • Aktivieren Sie „Overflow Interrupt“.

Schritt #1.5: GPIOs für LED konfigurieren

Um später die LED auf einfache Art und Weise ansteuern zu können, sollte nun auch noch der entsprechende GPIO benannt und konfiguriert werden. Details zu der Beschaltung der LED findet man im ATtiny 1607 Curiosity Nano Hardware User Guide im Kapitel 4.2.1 LED.

  • Konfigurieren Sie den GPIO PB7:
    User label: LED0
    Pin mode: Digital Output
    Initial level: High

Schritt #1.6: Atmel Start Projekt generieren

Nach dem hinzufügen aller Driver Komponenten und dem Konfigurieren des GPIOs sollte das Projekt in etwa so aussehen:

Mit „Generate Project“ kann man daraus nun ein vollständiges Atmel Studio Projekt generieren lassen, das alle vorgenommenen Konfigurationen und Zugriffsfunktionen für die einzelnen Komponenten enthält. Zusätzlich erhält man ein main.c File mit einer main() Funktion, die bereits einen Aufruf der atmel_start_init() Funktion enthält. Damit werden alle Konfigurationen zur Laufzeit angewendet. Danach kann man seine eigene Implementierung einfügen.

  • Starten Sie „Generate Project“ und geben Sie in dem Dialog die erforderlichen Namen und Verzeichnisse an. Um das Tutorial in weiterer Folge möglichst einfach nachvollziehen zu können, empfiehlt es sich, die Angaben aus dem nachfolgenden Screenshot zu übernehmen.

Das Ergebnis dieser Aktion ist eine fertig konfiguriertes Atmel Start Projekt mit Software Interfaces für alle ATtiny Komponenten und ein vorbereitetes main.c File.

Schritt #1.7: User Code Integration vorbereiten

  • Fügen Sie dem Projekt „AsPrjAdc“ ein neues Verzeichnis namens „Code“ hinzu.

Diesem Verzeichnis werden wir späten die von EmStaMaG generierten Files hinzufügen. Um den Code aus diesem Verzeichnis später auch ohne Probleme bauen zu können, sollte dieses Verzeichnis noch in den Projekt-Einstellungen in die AVR/GNU C Compiler > Directories aufgenommen werden.

  • Fügen Sie in den Projekteinstellungen den AVR/GNU C Compiler > Directories das Verzeichnis Code hinzu.

Teil 1 dieses Tutorials ist damit abgeschlossen.

Im nächsten Teil beschäftigen wir uns mit der Modellierung und Codegenerierung der Zustandsmaschinen mit Meta Genius und dem Embedded Statemachine Generator EmStaMaG.

Navigation

Adc Tutorial Gesamtübersicht

Adc Tutorial Teil 1 – Atmel Studio Projekt aufsetzen

Adc Tutorial Teil 2 – Zustandsmaschinen in Meta Genius modellieren und mit EmStaMaG generieren

AdcTutorial Teil 3 – Source Code integrieren und manuell vervollständigen