Oftmals möchte man ein LCD anschließen und hat aber nur wenige Pins
frei.
Ein LCD braucht aber mindestens 6 IOs.
Die Lösung, man nimmt nen kleinen ATtiny und kann dann bequem per UART
die Daten ans LCD senden.
Anbei mal der Schaltplan und ein vorläufiger Code mit fester Baudrate
(9600Baud). Ich werds später auf Autobaud erweitern.
Der Code wurde auf nem ATtiny25 entwickelt, sollte mit kleinen
Änderungen auch auf nem ATtiny13 laufen.
Für den UART-Empfang wird ein Pin des AVR doppelt verwendet. Daher der
220R Widerstand, damit nicht 2 Ausgänge gegeneinander treiben.
Man kann aber auch nen RS232 Anschluß verwenden, dann muß der 4,7k
Widerstand rein. Außerdem muß das Macro RX_INVERT definiert sein, damit
die Polarität stimmt.
Da alle 6 IOs verwendet werden, empfiehlt es sich, vorher meinen
Bootloader aufzuspielen, damit man auch in der Schaltung die Software
neu flashen kann.
Peter
Prima Peter! Das kommt mir gerade recht, da ich eine Steuerung mit einem
Atmega8515 gebaut habe und für ein Display kein "Platz" mehr frei war.
Frage: Wärest Du so gut, die fertige .hex-Datei hierher zu posten? Ich
kenne mich mit C überhaupt ´nicht aus und weiß daher nicht, wie und
womit ich das Programm kompilieren kann.
MfG Paul
Hallo Peter,
auch ich habe schon mehrmals einen separaten Käfer für ein LCD verwendet
um Pins zu sparen. Allerdings wird die Analyse Deines Codes bei meinen
C-Kenntissen schon ein paar Tage daueren. Schade dass Du nicht in
Assembler programmierst, da müsste ich nicht alles von C in asm
umsetzen.
Aber 2 Fragen habe ich noch:
1. Auf dem Schaltplan legst Du die Kontrastspannung auf Masse. Ich habe
auch schon das LCD EA DIP162 verbaut und es war bei mir immer ein
Trimmer für VEE nötig. Schade das kein Pin mehr übrig ist, sonst könnte
man die Hintergrundbeleuchtung mittels Transistor ausschalten.
2. Die Diode D2(wichtigste):
Für was ist sie da? Wenn an J2 eine Spannung anliegt dann leitet doch
diese Diode nach Masse ab. Also nach meinem Verständnis eine Art
Kurzschluß. Aber ich habe es schon in mehreren Schaltplänen gesehen nur
leider verstehe ich den Sinn nicht. Ein paare kurze Erklärungen oder
Stichpunkte wo ich suchen soll, würden mir schon helfen.
Gruß
Stevko
@Stevko
>>2. Die Diode D2(wichtigste):<<
Meines Erachtens, sollte sie umgedreht eingebaut werden, damit sie die
logische 1 einer RS232 Verbindung (zwischen -3V und -15V) nach quasi GND
zieht.
siehe auch: http://de.wikipedia.org/wiki/EIA-232
ABC wrote:
> @Stevko>>>>2. Die Diode D2(wichtigste):<<>> Meines Erachtens, sollte sie umgedreht eingebaut werden, damit sie die> logische 1 einer RS232 Verbindung (zwischen -3V und -15V) nach quasi GND> zieht.
Stimmt, es sind sogar beide Dioden falsch rum.
D1 verhindert Spannungen über VCC, funktioniert aber nur in Verbindung
mit dem internen Pullup. D2 verhindert Spannungen unter GND.
Steuerst Du aber mit nem MC an, der an den gleichen 5V liegt, sind die
Dioden überflüssig.
Peter
@Peter:
Vielleicht stelle ich mich heute besonders blöd an aber wenn Du D1
drehst
und mit TTL auf J2 gehst, sperrt die Diode doch immer. So wie D1 jetzt
eingebaut ist kann PB3 nicht nach "drausen" senden und die ankommende
TTL wird um ca. 0,6V abgeschwächt. Das fand ich bis jetzt in Ordnung.
Wenn Du D2 drehst, dann würde ich es verstehen aber auch D1?
RS323 ist doch:
1 = -3V .. -25V
0 = +3V .. +25V
Dann wäre doch eine "0" gleich 4.4V und im Soft-UART drehst Du es wieder
um.
Gruß
Stevko
Hier:
http://elmicro.com/de/seriallcd.html
habe ich industriell hergestellte serielle Display's gefunden. Die sind
ganz anständig teuer. Da ist die Lösung von Peter einfacher.
MfG Paul
Die EA DOGM's sind dagegen mit ca. 10Euronen fuer ein 2x16 Display recht
preisguenstig. Sie laufen mit 4Bit, 8Bit oder SPI Interface und
ausserdem direkt an 3.3V. Nur ein Backlight muss man sich noch dazu
besorgen.
So, ich habs endlich mal fertig gestellt.
Die Baudrate wird von 1000 .. 60000 Baud erkannt.
Obwohl das Programm nur 1k groß ist, muß man den ATtiny25 verwenden.
Das Problem ist ja, daß die Timer nur 8bittig sind, aber möglichst ein
Zählwert >100 für 1% Fehler eingestellt werden sollte.
Das ist bei beliebigen Baudraten nicht mit dem ATtiny13 machbar. Erst
der ATtiny25 kann den Prescaler in 2-er Potenzen einstellen.
Auch hat der ATtiny25 dann Platz für den Bootloader, den man besser
verwenden sollte, wenn man alle 6 IOs benötigt.
Man könnte auch den ATtiny24 nehmen, der hat ja nen 16Bit Timer. Da muß
man dann nicht am Prescaler spielen.
Das Kommandointerface ist ganz einfach, nach 'c' kann man ein Kommando
senden, nach 'd' Daten.
Außerdem kann man nach 'C' bzw. 'D' alles als 2 Hex-Digits senden.
Das ist insbesondere für PC-Modder interessant, die ein LCD einfach über
die UART ansprechen wollen.
Peter
Hallo Peter,
nun habe ich schon das genze Forum durchsucht,
finde aber leider nur dieses hier.
Mit diesem Code kann man nur über das 1wire empfangen, aber nicht
senden,
wie bei deinem Bootloader.
Könntest Du mir da mal etwas auf die Sprünge helfen?
Gruß Tobi
Hi Peter,
tolles Projekt! Ist denn der Schaltplan jetzt so, wie er sein soll. Ich
habe das hin und her mit den Dioden nicht ganz verstanden. Wenn der
Schaltplan nicht korrekt ist, wurde ich mich über eine Aktualisierung
freuen.
Grüße
Christian
Christian. wrote:
> tolles Projekt! Ist denn der Schaltplan jetzt so, wie er sein soll. Ich> habe das hin und her mit den Dioden nicht ganz verstanden. Wenn der> Schaltplan nicht korrekt ist, wurde ich mich über eine Aktualisierung> freuen.
Ja, editieren von Projekten geht hier nicht.
Das aktuelle Projekt findest du hier:
http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_type=project&item_id=1367
Peter
@Peter
Kann man mit der AutoBaud-Funktion in anderen Kontexten auch ohne
externen Oszillator bei guter Qualität über RS232 senden, nachdem der
UART eingestellt ist?
Hallo Forum,
nach einigen Anpassungen läuft nun die 1-Wire LCD Anzeige mit dem 1-Wire
Bootloader "fastboot-2.9" von Peter_Danneggers.
Danke Peter.
Hier noch alle nötige Quelldateien, Ergänzungen und Beschreibung zum
Bootloader "fastboot-2.9".
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang