Pfad: Home => AVR-DE => Anwendungen => Experimentell => Experimentierboard m324pa   This page in english: Flag EN Logo
Experimentalboard m324pa AVR-Anwendungen

Experimentalboard mit ATmega324PA und LCD


Entwicklungsprojekt! Unfertig! Ungetestet! Software noch in Entwicklung!

Experimentalboard mit ATmega324PA und LCD

Manchmal braucht man drei, vier oder mehr PWM-Kanäle, um was zu steuern. Oder man braucht eine oder zwei RS232-Schnittstellen. Oder man braucht drei verschiedene Timer. Oder auch zwei oder (fast) drei ganze 8-Bit-Ports. Oder man braucht eine serielle Schnittstelle zu einem Rechner. Dann braucht man dieses kleine Projekt hier.

Schaltbilder, Flussdiagramme und andere Zeichnungen gibt es in der LibreOffice-Draw-Datei hier, Berechnungen in der LibreOffice-Calc-Datei hier.

Top Funktionsweise Hardware Aufbau Software Algorithmen

1 Funktionsweise

Die folgenden Bestandteile hat das Entwickerboard hier:
  1. Ein Experimentier-Board mit ganz viel interner Hardware und flexiblen Anschlüssen.
  2. Eine fest angeschlossene LCD an Bord, damit man auch sieht, was vor sich im Innern des Prozessors so tut.
  3. Mit dem internen RC-Oszillator taktbar oder mit einem zusteckbaren Quarz mit beliebiger Frequenz ausrüstbar.
  4. Fast alle Anschlüsse an einem 26-poligen Flackkabel-Anschluss extern verfügbar (soweit sinnvoll).
  5. Mit einem ISP6-Anschluss zum Programmieren des Controllers in der fertigen Schaltung.


Top Funktionsweise Hardware Aufbau Software Algorithmen

2 Hardware

Schaltbild des M324PA-Experimentierboards Das ist das Schaltbild des Experimentierboards. Es hat
  1. den Prozessor ATmega324PA,
  2. einen per Fuse zuschaltbaren (steckbaren) Quarz als Taktgeber,
  3. eine LCD, deren Datenport an Port C angeschlossen ist und deren Kontrollpins E (PA7), R/W (PB6) und RS (PB7) von drei Portpins gesteuert und deren Kontrast mit einem 10k-Poti eingestellt werden kann, die Helligkeitseinstellung erfolgt mit einem 220Ω-Widerstand,
  4. einen bidirektionalen RS-232-Anschluss mit einem 10-poligen Steckverbinder, an den eine DB9-Buchse passt und dessen Empfangs-Leitung per Jumper auf den RXD0-Eingang durchgeschaltet werden kann,
  5. einen 26-poligen Flachkabelstecker, an den Peripherie angeschlossen werden kann,
  6. einen 6-polige ISP-Steckverbinder, über den die Programmierung des Prozessors innerhalb der Schaltung erfolgen kann.

2.1 Mögliche Modifikationen

Statt des ATmega324PA kann man auch den pin-kompatiblen ATmega1284P einsetzen. Der hätte dann auch noch einen vierten Timer, dessen Anschlüsse OC3A und OC3B aber schon vom LCD-Interface verwendet werden und nicht an X26 anliegen. Soll also der vierte Timer mit seinen externen Anschlüssen verwendet werden, ist es Essig mit LCD. Die Signale OC3A und OC3B liegen eh am 16-poligen LCD-Weibchen an und können dort abgegriffen werden.

Betreibt man die Schaltung ausschließlich mit dem seriellen Interface und ohne LCD, dann stehen an dem einzeiligen 16-poligen LCD-Anschluss auch die Ports PB6 und PB7 sowie PA7 und der gesamte Port C zur Verfügung. In diesem Fall könnte man die 16-polige Buchse auch durch einen 2-mal-8-Pin-Stecker ersetzen, der mittels Flachkabel verbunden wird.

Wer einen ganzen Port D in 8-Pin braucht, nimmt das serielle Interface nicht in Betrieb und steckt einfach den Jumper zu PD0 nicht. Dass PD1 nun den MAX232 klappern lässt, dürfte unschädlich sein.

Wer hingegen ein zweites RS232-Interface braucht, z. B. für einen Baudraten-Umsetzer, kann einfach RXD1 und TXD1 dazu verwenden. Sollen das oder die RS232-Schnittstellen weitere Handshake-Steuerungen erhalten: es gibt dafür reichlich freie Pins am X26-Stecker.

Top Funktionsweise Hardware Aufbau Software Algorithmen

3 Aufbau

3.1 Layout auf einer Rasterplatine

Aufbau des Expermentierboards So kann man das Entwicklungboard auf einer halben Euro-Platine stricken. Die LCD überdeckt alles, alle Bedienelemente sind am unteren Rand platziert.

3.2 Stückliste

Stueckliste fuer das Experimentierboard Das hier ist die Stückliste. Mit 40 Euronen bist Du dabei. Bei der LCD lässt sich noch am ehesten sparen, ohne die halbieren sich die Kosten.

3.3 Adapter zu einem Breadboard

Verbindung Breadboard mit Experimental-Board Interface adapter zu einem Breadboard Wenn Du Deine externe Schaltung auf einem Breadboard aufbauen möchtest, dann brauchst Du einen Adapter für das 26-polige Flachbandkabel zum Breadboard. Hier ist so ein Adapter zu sehen. Nur einfach einen 26-poligen Stecker in ein 4x13 großes Stück Rasterplatine einlöten. Dann die beiden 13-poligen Pinleisten von unten her in die zwei Außenreihen einlöten, wobei die Plastikreihe von der Platine wegzeigt. Nach dem Verbinden der jeweiligen Nachbarpins auf Verbindung und Kurzschlüsse testen. Ist alles ok, kann die Plastikreihe zur Platine hin geschoben werden.

Der Adapter auf dem Breadboard Einstecken und sich wohlfühlen.

Top Funktionsweise Hardware Aufbau Software Algorithmen

4 Software

Die Software zu dem Projekt gibt es in zwei Geschmacksrichtungen:
  1. zum Betrieb mit der LCD, und
  2. zum Betrieb mit der RS232-Schnittstelle.
Alle folgenden zwei Assembler-Quellcodes realisieren nur die Grundfunktionen.

4.1 Grundgerüst der Ansteuerung mit LCD

Experimentalboard mit LCD-Skelett Die Assembler-Quellcode-Datei m324pa-exp-lcd_v1.asm stellt eine rudimentäre Vorlage bereit für den Fall, dass der Controller die LCD benutzen soll. Die Include-Datei lcd.inc ist zum Assemblieren nötig und sollte sich im gleichen Verzeichnis befinden. Die Details zu dieser Include-Datei gibt es hier.

Die Quellcode-Datei vollführt folgende Schritte:
  1. Sie initiiert den Stapel.
  2. Sie enthält alle Interrupt-Vektoren des M324PA.
  3. Sie definiert die beiden Register rmp und rSreg.
  4. Zum Ende der Initialisierungsphase wird der Schlafmodus des Controllers aktiviert.
  5. Sie enthält alle Konstanten, die zur Initialisierung und zum Betrieb der LCD nötig sind, alle Konstanten sind auf die Schaltung im Schaltbild zugeschnitten.
  6. Sie initiiert die LCD (Einstellen von Ports und Pins der LCD, Wartezyklus von 50 ms vor dem Ansprechen der LCD, Einstellen auf 8 Bit, Löschen der LCD).
  7. Danach stellt der Quellcode das Blinken der LCD und des Cursors ab.
  8. Die LCD-Ausgabeposition wird auf Zeile 1 und Spalte 1 der LCD gesetzt.
  9. Dann wird eine im Quellcode definierte Textausgabe in allen vier Zeilen ausgeführt.
Achtung! Es wird davon ausgegangen, dass der externe Quarz nicht angeschlossen ist und die Fuses des Controllers auf dem internen RC-Oszillator mit CLKDIV8 eingestellt sind (clock = 1 MHz). Das ist der Fall bei frisch beschafften ATmegas.

Meine LCD nahm es nicht krumm, wenn ich den Takt des Controllers auf 2,4576 MHz eingestellt habe und die E-Aktivierung ohne zusätzliche Wait-Zyklen ausgeführt habe (clock auf 1 MHz). Die LCD ist folglich schneller als ihre Dokumentation und ihre Spezifikation.

4.2 Grundgerüst mit serieller RS232-Schnittstelle

Bevor man diese Software in Betrieb nehmen kann, braucht man einen passenden Quarz, damit es auch mit dem Takt klappt.

An den 10-poligen Stecker kommt die DB9-Buchse. Außerdem muss zum Empfang der Jumper J gesteckt sein, sonst kommt beim M324PA nix sinnvolles an. An die DB9-Buchse kommt ein DS9-Stecker von einem USB-Seriell-Wandler, und an den USB-Stecker ein Laptop oder Desktop. Das darin laufende Terminalprogramm, z. B. RealTerm, muss die RS232-Schnittstelle auf 19k2 mit 8N2 einstellen.

4.2.1 Auswahl des Quarzes

Auswahl des Quarzes fuer die RS232-Schnittstelle Für eine serielle Schnittstelle braucht man einen geeigneten Quarz, denn der eingebaute RC-Oszillator mit 8 MHz ist dafür nur bedingt geeignet.

Die Auswahl erleichtert das LibreOffice-Calc-Datei-Tool namens "crystals". Es zeigt in Spalte A alle kommerziell verfügbaren Quarze mit ihren Gehäuseformen in Spalte B an. In Zelle C5 kann man eine gewünschte Baudrate angeben (hier: 19k2) und erhält für jeden Quarz den UBRR-Teiler bei dieser Baudrate. Ist dies eine Ganzzahl, dann ist dieser Quarz für diese Baudrate geeignet und in Spalte D mit "Yes" gekennzeichnet. Weicht der UBRR-Teiler nur geringfügig von einer Ganzzahl ab, dann ist er bedingt geeignet ("Limited") und man kann es damit mal versuchen.

Die beiden folgenden Spalten zeigen die Spannbreite an Baudraten, mit denen die Quarze noch funktionieren. Spalte G und H zeigen die UBRR bei den beiden Extremen.

Wie man sieht, sind 1,8432 und 2,4576 MHz eine gute Wahl, 4 MHz geht auch noch ein wenig, aber nur in einem eingeschränkten Baudraten-Bereich, und mit einer gutmütigen RS232-Schnittstelle.

Wählt man im Ausklappfeld in Zelle B3 einen der Quarze aus, dann kriegt man dessen Eigenschaften bequem in den Spalten F und H, jeweils die Zeilen 3 bis 5, und das ohne Blättern in der Tabelle.

4.2.2 Hardware

Die DB9-Buchse verbindet man mit dem 10-Pin Stecker. Um RS232-Signale auch empfangen zu können, muss der Jumper gesetzt sein, der den RXD-Ausgang des MAX232 mit dem PD0-Eingang des Kontrollers verbindet.

Wenn Dein Computer gar keinen RS232-Port hat, kannst Du einen USB-zu-seriell- Wandler verwenden. Das Terminalproragmm, z. B. RealTerm, sollte den RS232-Port auf 19k2 und 8N2 konfigurieren.

4.2.3 Ändern der Fuses

Fuses im Originalzustand Fuses fuer den Quarz Wenn man den Quarz anschließt, muss man den Quarz durch Umstellen der Fuses aktivieren. Links sieht man die Fuses im Originalzustand, rechts sind die Fuses rot umrandet, die´man umstellen muss. Ich habe hier einen 2,4576-MHz-Quarz verwendet, falls Deiner eine höhere Frequenz hat, musst Du SUT_CKSEL dementsprechend umstellen.

Achtung beim Rück-Umstellen der Fuses: wenn man beim Zurückstellen der Fuses auch das JTAG-Interface wieder einschaltet (wie es im Originalzustand ist), dann fehlt dem Port C ein Bit. Das Testprogramm zum LCD-Testen l¨uft dann nicht korrekt.

4.2.4 Ablauf des Testprogrammes

Die Software vollführt Folgendes:
  1. Sie stellt den Pin PD0 als Empfangspin ein, mit einem Pull-Up, falls dort kein Signal ankommt.
  2. Der Pin PD1 wird als Ausgang konfiguriert und auf Null eingestellt.
  3. Der Sendeteil des UARTs 0 wird mit 8N2 konfiguriert und die Baudrate auf 19k2 eingestellt.
  4. Nun sendet das UART nach einigen 0x55 einen Erkennungstext.
  5. Danach wird das UART auf Senden UND Empfang eingestellt, der Empfang erfolgt mittels RXCIE-Interrupt.
  6. Alle auf RXD eingehenden Zeichen werden von nun an an die RS232 zurückgesendet (Echo), sofern die drei Fehler-Bits ok sind.


Top Funktionsweise Hardware Aufbau Software Algorithmen

5 Algorithmen

TBD

Top Funktionsweise Hardware Aufbau Software Algorithmen

6 Anwendungen

Eine mögliche Anwendung ist erst in einem frühen Stadium der Entwicklung: ein Batterie- oder Akku-betriebener Datenlogger für das Mitzählen der Infrarot-Impulse Deines Stromzählers, zum Speichern für bis zu neun Tage und das Auslesen der gespeicherten Tage via RS232. Zu dem Projekt geht es hier.

Lob, Tadel, Fehlermeldungen, Genöle und Geschimpfe oder Spam bitte per Email an mich (info und die Web-URL-Adresse), ich freue mich über alle Arten von Rückmeldungen.

©2023 by http://www.avr-asm-tutorial.net