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.
Die kommerzielle 2-Draht Konkurrenz: http://www.channaa.com/html/i2c_lcd_adapter.html http://www.channaa.com/html/rs232_lcd_adapter.html
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, ich habe den Quellcode mal auf avr-gcc mit einem Makefile angepasst. Sind diese Fuse-Bits ok:
1 | # 8MHz, mit Bootloader von Peter und RESET ist noch enabled. |
2 | -U lfuse:w:0xe2:m -U hfuse:w:0xdd:m -U efuse:w:0xfe:m |
3 | |
4 | # 8MHz, mit Bootloader von Peter und RESET ist disabled. |
5 | -U lfuse:w:0xe2:m -U hfuse:w:0x5d:m -U efuse:w:0xfe:m |
Orginal Code stammt von hier: http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_type=project&item_id=1367
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".
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.