Hallo zusammen, Kurz-Intro: Im Rahmen meines aktuellen Projektes brauchte ich ein LCD Display. Allerdings wurden trotz Wechsel auf den ATMega1284 die Beinchen etwas knapp, da dieser jedoch mit einem zweiten UART aufwartet habe ich ein kleines Zwischenprojekt eingeschoben, da... nach Studium der gängigen Distributoren-Kataloge schnell klar war, ein serielles Display ist fast überall verfügbar. Der Blick auf den Preis ernüchterte, für das Geld? Wofür programmiert man denn gerade einen µC? Selber machen, da hat man auch noch mehr Spielraum... Vier Testbestellungen in China platziert, da kostet das HD44780 kompatible 16x2er gerade mal einen Euro, wenn drei verloren gehen, bin ich immer noch billiger weggekommen...(aber es kamen alle an :-)) Da, wie ich meine, das Ergebnis ganz nett ist, will ich es mal nicht vorenthalten und zum Allgemeingut machen: Zum Thema: Also wurde es was es ist, ein eigener Display-Treiber für die serielle Schnittstelle auf Basis des ATTiny2313A, da es sich um ein Eval-Board mit Jumpern und LED´s für RX und TX handelte, habe ich den Footprint des 20x4er Displays gewählt und alles in DIL/DIP ausgeführt. Auch der Anschluss des Displays ist nicht Deckungsgleich zur LCD-Platine, sondern erlaubt mittels Wannenstecker den schnellen Wechsel der Displays. Um in der Entwicklungsphase mit dem PC zu kommunizieren wurde zusätzlich ein Pegelwandler eingeplant, dessen 1. Treiber hängt via Jumper an den RXD/TXD-Leitungen. Der 2. Treiber kann via Jumper an die am höchsten priorisierten Interruptpins (INT0/INT1) angeschlossen werden, um Flußkontrolle mit RTS/CTS zu realisieren, benötige ich zwar nicht, aber da die PINS gerade günstig lagen ist es mit auf der Platine, ebenso der 6-pol ISP-Header. Trennt man den Wandler ab, kann man über die Jumper-PINS auch gleich von µC zu µC kommunizieren. Die endgültige, abgespeckte Version wird dann ein Backpack werden oder gleich mit auf die Hauptplatine wandern. Zusätzlich zu der Ausgabe der empfangenen Daten sind ein paar Spielereien implementiert, so lässt sich der Kontrast via PWM regeln und das Backlight via Mosfet an- und ausschalten. Ebenso ist ein Piezo-Schallwandler auf der Platine, der an den PWM-Ausgang von Timer0 gekoppelt werden kann, das ermöglicht im Gegensatz zu einem reinen An/Aus-Summer sogar verschiedene Tonhöhen (OK, ich vergas diesen bei meiner letzten Bestellung, daher auf den Bildern eine altes, halbes N***a-Headset ;-)) Angesprochen werden diese Bauteile im Moment mit den freien Zeichen im Display-Zeichensatz (so wie vor Jahrzehnten schon die Steuerbefehle übermittelt wurden), sofern der entsprechende Jumper gesetzt wird (PD4 gegen Masse). Sofern man Binärdateien "snifft" hat man sonst ein Rockkonzert auf dem Schreibtisch (Licht&Ton). Da die Firmware im Moment noch Q&D ist, behalte ich diese zunächst für mich, im Moment nutzt Sie den Speicher des ATTiny um den Test zeilenweise zu scrollen, das passt mit kleinem Empfangspuffer so gerade noch bei 20x4. Die frei konfigurierbaren PINS des ATTiny2313 sind PD0 bis PD5, der Rest ist fest verdrahtet, es sei denn, man nutzt den Display-Port gleich ganz anderweitig und schließt noch was an den ISP-Header an. Auf den Bildern im Anhang ist meine aktuelle Testconfig, sowie eine nicht fertig bearbeitete Platine (belichtet, geätzt, aber nicht zugeschnitten, gebohrt oder bestückt). Diese Platine ist "zu verschenken". Wer Zeit und Lust hat, sowie verspricht sie zeitnah zu bestücken und hier einen netten Beitrag dazu schreibt, kann diese haben. Ich würde mich freuen wenn derjenige ein 20x4er Display sein eigen nennt, da man sich dann über die Firmware austauschen könnte, alternativ würde ich auch eine kreative Verwendung begrüßen, etwa etwas in der Art: Die User-Defined-Characters per RS232 mit den Darstellungen der Noten c d e f g a h füllen und dazu der Platine Töne beibringen. (Wäre was für meine kleine Tochter). Wer also Lust hat, bitte hier melden, an den User mit den besten Argumenten schicke ich die Platine kostenfrei raus, Einsendeschluss ist gleitend, jedoch spätestens kommenden Sonntag Abend. Gruß Dominik P.S.: Was noch benötigt wird: ATTiny2313 MAX232 Baudratenquarz (ich nutze 9,216 MHz) LM7805 (Kühlkörper unnötig) 2x6er PIN-Header 2x2x1er PIN-Header Widerständer/Kondensatoren (Die Bestückung kann auch vielfach mit Drahtbrücken vereinfacht werden) 3 LED´s (optional)
Hallo zusammen, die Firmware ist jetzt soweit bereinigt, stelle ich mal hier zur Verfügung. Der LCD-Treiber unterstützt Lesen und Schreiben, das aktuelle Testprogramm mit RX/TX-Funktion ist auch dabei. Passt so gerade zu 100% in den 2313, werde wohl auf den 4313 ausweichen damit noch ein paar Fukntionen Platz haben. Der LCD-Treiber ist recht universell gehalten und kann sicher dem ein oder anderen gute Dienste leisten. Gruß Dominik
Nur damit ich es verstehe... Atmega1284 -> serielle Schnittstelle -> LCD ? Warum nicht i2C? Dafür gibts doch schon etliche Libs...
Mir ist der große Aufwand nicht ganz klar. Ein normales LCD kann man per I2C-Portexpander (PCF...) zu einem seriellen machen. Natürlich dann I2C und benötigt 2 Pins. Aber der Aufwand besteht praktisch nur im verbinden des PCF mit dem LCD und dem Controller. gruß cyblord
Hallo, Dennis Kaufmann schrieb: > Nur damit ich es verstehe... > > Atmega1284 -> serielle Schnittstelle -> LCD > ? > > Warum nicht i2C? Dafür gibts doch schon etliche Libs... im Moment PC->RS232->ATTiny2313->LCD, ich wollte eine eigene Lib, die die normalen ASCII-Co-Steuerzeichen erkennt. So funktioniert das LCD wie ein "Anno-Dazumal"-Terminal mit Beeper und Co. Funktionen für Backlight, Baudrate, Progressbar und das Einspielen des User-Characters sind schon vorhanden, weitere folgen sobald der 4313 ankommt, den musste ich anderweitig beziehen weil bei meinem Standard-Distributor nicht auf Lager und trotz recht sparsamer C-Programmierung ist der 2313 schon randvoll. cyblord ---- schrieb: > Mir ist der große Aufwand nicht ganz klar. Ein normales LCD kann man per > I2C-Portexpander (PCF...) zu einem seriellen machen. Natürlich dann I2C > und benötigt 2 Pins. Aber der Aufwand besteht praktisch nur im verbinden > des PCF mit dem LCD und dem Controller. > > gruß cyblord Grundsätzlich ist das ganze ein Evalboard, soll aber der Entwicklung einer Ein-Ausgabe-Schnittstelle für die vom ATMega gesteuerte Maschine werden, dieser hat auch keine Zeit sich mit der LCD-Ansteuerung zu beschäftigen, da harte Echtzeitbedingungen gegeben sind. I2C und SPI wären möglich gewesen, aber dann hätte ich die Möglichkeit verloren das Gerät auch an den Steuer-PC anzuschließen, auch sind die RS232-Pegel etwas schöner um das Display etwas vom Steuer-µC zu entfernen, wahrscheinlich wird das ganze eher eine Fernbedienung. Den regulären SPI habe ich an die externe Speicherbank vergeben, diese ist auch im permanenten Zugriff, der Bus ist also belegt. Den 2. USART im SPI oder I2C-Modus zu betreiben wäre noch gegangen, aber mittels zweitem µC ist zumindest die Ausgabe der Benutzernachrichten ein Shoot-and-Forget was zum Großteil die Hardware des Atmega im Hintergrund erledigt während dieser mit seiner Takt-Richtungs-Berechnung und Ausgabe beschäftigt ist. Das ganze ist ja quasi ein zwei-Prozessor System. Die einzigen beiden Interrupts auf dem ATMega sind COMPA und COMPB, und diese warten sogar noch auf bestimmte Zählerstände damit Sie zeitgenau die Ausgaben machen können und nicht vom ablegen auf dem Stapel versetzt wirken, der Rest läuft über freie Timeslots. Danke übrigens für den Tip mit dem PCF, ich habe mir den 8574 mal angesehen, der steht beim nächsten Mal auf der Einkaufsliste, scheint sehr brauchbar, wobei bei diesem Projekt der Tiny die Tastatureingaben wohl über Schieberegister einlesen wird. Gruß Dominik
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.