PROGMEM

English version.

Als PROGMEM bezeichne ich den Programmspeicher auf dem ATMega. Dieser hat zum einen den Programmspeicher, also den Flashspeicher, auf welchem das geschriebene Programm liegt. Man kann diesen Speicher mit der Festplatte am PC vergleichen. Zum anderen braucht der ATMega einen Arbeitsspeicher, welcher die Variablen beinhaltet. Streng genommen gibt es noch einen dritten Speicher, den veränderbaren Datenspeicher EEPROM, auf diesen gehe ich hier jedoch nicht ein.

Der Aufbau

PROGMEM_Breadboard

Der Aufbau ist sehr einfach. Man benötigt folgende Komponenten:

  • Arduino UNO Rev3
  • Pushbutton (Kurzhubtaster)
  • 16×2 LCD (HD44780)
  • 10kΩ Widerstand (Pull-Down Widerstand für Taster)
  • 220Ω Widerstand (Für LCD Hintergrund LED)
  • 10kΩ Drehpotentiometer (Kontrast)

Wichtig! Das Arduino erst verdrahten, wenn der Programmcode erfolgreich übertragen wurde, und danach die Spannungsversorgung getrennt wurde.

Der Code

Der Programmcode kann von GitHub heruntergeladen werden. Alle wichtigen Bereiche sind ausreichen kommentiert. Sollte es doch Unklarheiten geben, bitte einfach unten Kommentieren.

Kompiliert und getestet habe ich das Programm mit der Arduino IDE 1.6.6.

Ein Resümee

Manch einer fragt sich nun, warum man diesen Aufwand betreiben soll, nur um ein paar Zeilen Text auszugeben, wo es doch auch einfacher möglich wäre – etwa via lcd.print(„TEXT“);

Der Grund ist, dass das Wort TEXT in C++ als String, also als Zeichenkette deklariert wird. Eine Solche Zeichenkette benötigt verhältnismäßig viel Arbeitsspeicher. Das Arduino UNO ist mit einem ATMega328 ausgestattet, welcher einen Arbeitsspeicher von 2kB hat. Diese zwei Kilobyte sind sehr schnell voll, wenn man etliche dieser Strings im Quellcode hat, da jeder String im Sourcecode bei Programmstart in den Arbeitsspeicher geladen wird. Aus diesem Grund lege ich alle Strings in den Programmspeicher, da dort wesentlich mehr Platz ist, und rufe diese Zeichenketten nur bei Bedarf auf.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s