Soah! war mal wieder fleißig :) und da der andere Thread schon so zugemüllt is mach ich einfach nochmal nen neuen auf :) Im Anhang finden sich ein paar Funktionen, die die Ausgabe von einfachen Grafiken und Text (mit verschiedenen Schriftarten) auf einem (bunten) Nokia6100 Display ermöglichen. das Display läuft im 256 Farben Mode (erleichtert die Ansteuerung enorm und 256 Farben reichen locker aus) und wird zum größten Teil über SPI angesteuert. Ein kleines Test Programm für den mega128 liegt bei. weitere Details und zukünftige Updates gibts auf meiner Seite: http://www.apetech.de/nokia6100.php (Werbung rockt! :P) Konnte leider noch keine Bilder machen aber das ganze läuft schon recht gut (Hab aber noch nicht sehr ausführlich auf evtl. Fehler getestet) Natürlich bin ich für Fragen Anregungen und Kritik offen :)
Hallo ape, klingt interessant, ich warte auf die Bilder. Aber sag mal, wann schläfst du eigentlich? :-)) Gruß, Arno
Hallo Ape das Bild sieht wirklich gut aus!!! Du schilderst auf deiner Homepage, dass das Display sporadisch zu Ausfällen neigt. Genau das passiert auch ab und zu mit meinem Display, wenn ich es einschalte und gleichzeitig meine Schreibtischhalogenlampe an habe. Offenbar stört der Halogentransformator die Initialisierungs- routine des Displays. Martin
mhmm also ich fürchte ich hab mein Display jetzt ganz kaputt gemacht. jedenfalls krieg ich es nun gar nicht mehr gestartet. hab eben ma versuchsweise schreibtischlampe ausgemacht pc und monitor aus, aber das brachte auch nicht den erhofften effekt. allerdings ist mir schleierhaft wie es kaput gegangen sein sollte... bin einigermaßen ratlos. trotzdem danke ape
also anscheinend ist es doch noch nicht den weg aller dinge gegangen eben ist es mir mal wieder gelungen es aufzuwecken jetzt aber wieder nicht mehr schon merkwürdig. hab mitlerweile auch die kabellänge verkürzt, das brachte auch kleine verbesserung. ein timing problem dürfte es auch nicht sein da ja sonst eigentlich die reduzierung der taktrate des prozessors abhilfe schaffen sollte - tutsie aber nicht.
Könnte es sein, dass es zu warm wird aus irgend einem Grund? Gruß, Arno
ne da wird nichts warm der größte stromabnehmer is die hintergrundbeleuchtung mit ca. 15mA
hallo ape, habe das nokia 6100 display mal angeschlossen. hängt bei mir an nem AT90S8535 mit 4 Mhz an Portc. Wenn ich einen Reset am AVR mache, dann kommt das testbild. aber nur ca. 1 sekunde lang. dann geht das display wieder aus ( also die hintergrundbeleuchtung bleibt an ). was kann das sein ?
hi nochmal ich, also ich habe vergessen zu erwähnen, das ich das Bascom Beispiel vom Martin benutze. ich hab jetzt mal ein bisschen rumgespielt und mein Fehler ist weg. lag an der letzten Zeile im Code. die hab ich gelöscht un siehe da, das testbild bleibt. habe aber eben auch den aussetzfehler den ape schon angedeutet hat bemerkt. komisch. naja. würde mich auf jedenfall mal brennend interessieren, ob ape auch ein paar beispielcodes für Bascom rausrücken könnte :-))) oder benutzt du gar kein Bascom ape ? würde gerne nen Bild oder nen Text aufm Display stehen haben. help ... mfg Kay
sorry hab 0 ahnung von basic :) daher ja das ganze in C... wenn ich muße hab werd ich mal versuchen die leitungen noch nen ende kürzer zu machen und das ganze ein wenig zu schirmen, aber was mir ein bisschen sorgen macht ist, das der fehler am anfang gar nicht auftrat dann ab und zu mal und mittlerweile gehts nur noch ganz selten :/ Heute ist recht trockene Luft und ich hol mir ständig irgendwo nen schlag, aber wenn ich da esd mäßig was verbrutzelt hätte sollte es ja eigentlich gar nicht mehr gehen und nicht nur meistens nicht oder? alles sehr merkwürdig...
hi ape, würde gerne deine main.c mal probieren. ich kenn mich mit c net aus. wie kann ich das anstellen ? mfg Kay
1) du lädst dir winavr runter und installierst das. 1 1/2) möglicherweise neu starten 2) du lädst dir dieses archiv runter und entpackst das irgendwohin und führst das batch file aus, wenn alles glatt geht hast du danach u.a. ne datei namens n6100.hex in deinem verzeichnis, die du 4) mit dem programmier-programm deiner wahl in den chip brennst. du hattest oben gesagt das du nen 8535 benutzt, hab mein programm entsprechend geändert, es wird ohne fehler übersetzt aber habs natürlich nicht getestet obs auch wirklich funktioniert. ich musste aber die texte auskommentieren die hat das RAM nich mehr gepackt (war zu faul die jetzt ins Flash zu verfrachten) ansonsten is der 8535 ja ganz schön klein.... nur 8kb. der is mit dem programm fast voll :) (aber nur weil die stdio noch drin is, die man jetzt eigentlich nich mehr braucht da texte eh nich gehen) Musst das Display jetzt aber an PortB hängen. SCLK an PortB.7, SDATA an PortB.5, CS an PortB.4, und Reset an PortB.3
also hab das kabel jetzt nochmal erheblich gekürzt (hab ein paar drähte gedreht und kann jetzt das display direkt auf den portb stecker vom stk500 stecken) brachte wie erwartet auch nichts. hätt mich auch gewundert da es anfangs ja auch ohne problemlos ging. also scheint tatsächlich das display kaputt zu sein. ich hatte gestern aus versehen mal kurz 5V und für längere Zeit 4V als Versorgungsspannung dran danach gings aber eigentlich immer noch. nur wurden die ausfälle immer häufiger. ich vermute ma das der booster etwas gelitten hat und nun nicht mehr richtig anspringt, anders kann ich mir dieses langsame kaputtgehen nicht erklären. leider lässt sich meines wissens bei diesem display nicht die kontrastspannung an einem pin abgreifen, wie beim 3510i, oder kennt da jemand einen trick? mfg ape PS: Ich schlafe nie Muhahahahaha Nein ich muss mich ja für mein zukünftiges Studentendasein vorbereiten :)
hey ape, also es funzt. aber ich würde gern Bascom weiterverwenden. gibt es denn keine möglichkeit, mir beizubringen, wie ich nen text mit hilfe von Bascom aufs display schreiben kann ? :-)) mfg Kay
lol naja du musst halt erstma ne schriftart definieren das machst du mit einem ziemlich großen array. 1 bit steht dann jeweils für ein pixel, also eine 1 pixel malen eine 0 kein pixel malen, brauchst dann also bei ner 6x8 pixel schriftart 6 8-bit werte für jedes zeichen. naja und dann hast du halt ne funktion der du nen zeichen übergibst die holt sich dann die entsprechenden werte aus deinem array und malt die entsprechenden pixel. wie gesagt ich hab keinen blassen schimmer von basic, frag mich also nich wie das im detail geht. ansonsten mein rat: lern C is die bessere Sprache :P
hi, dann erklär mir mal bitte , wie ich den Text "Hallo Welt" mit C auf mein Display bekomme. display hängt am porta. :-) ich blick bei den vielen c dateien net durch mfg Kay
du benutzt aber nich meine ansteuerung oder? die funktioniert an porta nämlich nich. ich verwende die SPI Schnittstelle das is ca. doppelt so schnell wie wenn du die daten per software zum display schaufelst, solltest du vielleicht mal drüber nachdenken. ansonsten naja wie ichs oben geschrieben hab nen array in dem die zeichen definiert sind findest du in der font6x8.h und die funktion die die zeichen aufs display bringt ist die n6100DrawChar(char) in n6100.c du übergibst der funktion das zeichen das du schreiben willst und die holt sich dann aus dem array die pixel daten für dieses zeichen und schreibt die aufs display. wenn du aber von C nicht so die ahnung hast solltest du vielleicht nicht gerade mit der Ansteuerung eines bunten GrafikLCDs einsteigen. das is vielleicht ein bisschen viel für den anfang... mfg ape
hi, ich hab zwar keine Ahnung von C aber ich bin ehrgeizig :-) ich hab nen anderen AVR wie du, also muss ich die ports anders definieren. werde das mal am ISP Port testen. merci mfg kay
@ape Hi ape, wie erfolgt bei Dir die übertragung via SPI? Darüber werden doch nur 8 bit übertragen also fehlt ja noch eines denn das Display will ja 9 haben. Sendest du das Command oder Data bit vorneweg Software technisch und dann hinterher die restlichen 8 über SPI? Wieviele Bilder(132x132 Pixel) kannst Du damit pro Sekunde übertragen? Ich schaffe in Assembler mit Softwaretechnischer übertragung über die Ports gerademal ~2/s, was mir eigentlich zu wenig ist. Gruß Martin
Rechne es aus: 400KHz SPI maximal, sind 400.000 Bits pro Sekunde. Bei 256 Farben pro Pixel (8 Bit + 2 Bit) 132 312 = 174.240 Bits. 400.000 / 174.240 = ca. 2 fps. Gruß Hagen
Ich meine eine Animation mit 32x32 Pixel ist auch gut, und man kommt auf akzeptable 40 fps. Gruß Hagen
hi also wie gesagt weitere experimente fallen bei mir erstma aus bis ich nen neues display hab, framerate hab ich noch nich getestet. aber die clearscreen funktion die ja das ganze display beschreibt hat 100ms gebraucht. ja ich erzeuge das erste bit in software und mache dann das spi an und übertrage den rest damit, wobei ich das ganze mit etwas mehr als 400kHz betreibe :) hab den spi prescaler so niedrig wie möglich eingestellt und das spi2x flag gesetzt (gibs glaub ich nur bei den neueren megas) damit ist ein spi takt 2 prozessor takte lang. bei 8MHz macht das 4MHz SPI Clock. da kommt man mit Software nich hin :) Bin jetzt zu faul auszurechnen was die maximale framerate damit is, zumal ja noch ne ganze menge programm overhead dazu kommt aber es geht schon recht fix. das display hat übrigens nur 130x130 pixel auch wenn der controller 132x132 ansteuern kann.
Mahlzeit! Habe mir gerade das Board von Kai Sachsenheimer mit obigem AVR zusammengebaut und mit einem HD44780 Display "aufgewertet". Kann ich auch das Nokia 6100LCD anschließen. Und wenn ja, [bin absoluter Neuling!] an welche Ports kommt das ganze. Habe noch keine Schlatung für den Anschluss an einen mega128 gesehen. Muss der C-Code von Apetech.de stark abgeändert werden? Danke!
also "das Board von Kai Sachsenheimer" sagt mir nich sonderlich viel, aber im prinzip lässt sich das display ganz einfach an den mega128 anschleißen, dafür musste am code auch gar nichts ändern, da der auch schopn für den mega128 ist. hab mir nich die mühe gemacht nen schaltplan zu zeichnen, da der anschluss echt trivial ist. steht übrigens auch auch apetech.de. hardware -> nokia6100 LCD. einfach die pins vom display an die entsprechenden spi pins, den reset dran und gut is :) hat allerdings den nachteil das sich die pinbelegung nicht ändern lässt du musst auf jeden fall ans spi (beim mega128 PortB), wenn du meinen code benutzen willst
Soory, ich habe den AVR 90s8535. Meine frage ist nun ob das überhaupt funktioniert? Da der Mega128 ja das ein oder andere feature zusätzlich hat! |bin halt ein Neuling!| Danke
Ergänzung: SPI hat der AVR 90s8535 auch; was vom Display kommt den zB.: - MISO /PortB6 - MOSI /PortB5 - SCK /PortB7 - SS /PortB4. (obige Ports beziehen sich auf den 90S8535) Danke
achso na dann sind ein paar änderungen notwendig. um die port pins anzupassen musst du in der n6100.h die nummern der portbits entsprechend ändern. also SDATA auf 5, SCK auf 7 die andern kannste so lassen oder auch ändern je nach belieben, darfst halt nur nich MISO belegen. ansonsten hat der 8535 glaub ich kein spi2x flag, das wird irgendwo in der n6100Init() Funktion gesetzt wenn ich mich jetzt nich täusche. das kannst du einfach auskommentieren. im zweifel eifach mal kompilieren und gucken wo der fehler kommt :) der rest sollte so gehen. wobei du mit nem 8535, wahrscheinlich etwas in platznöte kommen dürftest, wenn da noch was anderes rein soll als die eigentliche ansteuerung des displays mfg ape
Hallo, habe via ebay zwei LCD für das 6100 bekommen. Leider gibt es bei diesen Anzeigen keine Möglichkeit ein Flachbandkabel anzulöten. Die flexible Leiterplatte sieht anders aus als die hier gezeigten. Hat jemand eine Idee wo man so einen superkleinen Stecker für die Anzeige bekommen kann oder wo man evtl. Schrott-Handys findet zum Steckerausbau? Danke Rob
Hallo, also ich habe mir jetzt auch mal so ein Display (6100) gekauft und betreibe es jetzt schon einige Tage erfolgreich mit einem Mega8 der mit dem internen 8 Mhz läuft. Habe keinerlei Ausfälle bemerkt. Ich habe den originalen Code von ape verwendet. Lediglich die printf Funktionen habe ich weggelassen und eine eigene Funktion erstellt, der man einen String geben kann. Wenn ich die beiden Schriftarten einbaue habe ich dann noch über 2k Speicher frei. Ich betreibe den mega8 mit genau 3V und habe die Ports direkt mit dem Display verbunden. Nur die LEDs bekommen ihre 6,5V. Läuft prima. Grosses Lob an den Entwickler (ape) Gruss Mattias
hi, ist schon toll wenn man C kann. ich kann nur Bascom und werde das wahrscheinlich net hinbekommen. naja, viel spaß noch gruß Kay
@Mattias, versuche mal die Spannungsversorgung schnell hintereinander ein/auszuschalten. Unter bestimmten Bedinungen wird dann das LCD nicht anspringen. Ich nutze ebenfalls ein ATmega8L, 8MHz auf einem STK500 Board. Ich vermute mal das das STK500 beim Abschalten der Stromversorgung die Spannung noch hält. Gruß Hagen
@mattias: danke für die Blumen :) so hab mir eben auch 2 neue bestellt, mal sehen ob ich auch nur noch den stecker habe. habe vor kurzem an einem ähnlich kleinen stecker (0,5mm pitch) ein paar kupferlackdrähte angelötet. War ziemlich anstrengend aber es ist möglich :) haba aber keine ahnung wo man den passenden stecker herbekommt.
Man sollte bei eBay die Display nehmen die an der Seite keine grüne Lasche haben !? Gruß Hagen
Stimmt, die Displays die eine grüne fexible Leiterplatte haben, habe keine Möglichkeit ein Flachbandkabel anzuschliessen. Bei denen mit brauner Farbe (Kapton?!) geht das anscheinend. Habe erste mal Fädeldraht an den Stecker am Display gelötet (Leiterplatte). Das geht, ist aber keine leichte Arbeit! Wenn man Stecker auftreiben würde, bestünde Interesse daran? Man muß leider eine größere Stückzahl abnehmen! (und ein Platine zum Umsetzen auf einen Stecker mit größerem Raster braucht man ausserdem) Rob
***WICHTIG*** Hab heute einen ziemlich bösen Fehler in meinem Programm gefunden. Und zwar setzt der AVR die Datenleitung zu dem Zeitpunkt zu dem der Display-Controller sie sampelt (und zwar zur steigenden Flanke von SCLK). Werde erst morgen dazukommen nen entsprechendes Update zu machen und hochzladen, das ganze lässt sich aber auch einfach beheben, in dem in sendData() und sendCommand() im SPI Control Register das CPHA Bit gesetzt wird. mfg ape
Geile Sache mit dem Nokia-Display! ...ist vor allem auch günstiger als so ein 128x64 Grafik Display mit KS0108 o,ä., und in Farbe & Bunt !:-) Aber nun Frage: Ich muss meinen Controller mit 5 Volt betreiben, aber das Display verträgt ja nur bis 3.3 Volt. Die Versorgungsspannung für das Display runterzusetzten sollte nun nicht das Problem sein, aber wie krieg ich den SPI Bus von 5 V <> 3 V ? Mit Z-Dioden und Widerstand ? Jemand sowas schon mal gemacht ? ...und vor allem hängt ja an der Schnittstelle auch noch ein Programmiergerät dran, dass sollte natürlich auch noch funktionieren ohne dass man das "Umspannwerk" jedesmal abklemmt... Viele Grüße Stefan
Da man SPI keine bidirektionalen Leitungen verwendet werden reichen einfache Spannungsteiler aus 2 Widerständen.
> aber wie krieg ich den SPI Bus von 5 V <> 3 V ? z.B. mit dem 74VHCT244: http://www.farnell.com/datasheets/9545.pdf Gruss Roman
>Da man SPI keine bidirektionalen Leitungen verwendet werden reichen > einfache Spannungsteiler aus 2 Widerständen. Das stimmt in diesem Falle nicht ganz. Die MOSI/MISO Leitung ist zusammengelegt, d.h. das Display hat intern beide Leitungen verbunden. In der neuen GLCD Library wird davon Gebrauch gemacht um den Status des Displays, eg. BOOSTER usw. abzufragen. Alle anderen Leitungen sind Oneway. Für I2C Busse gibt es bei Philips extra solche Level-Shifter, dort mal suchen. Die scheinen eh die beste Lösung zu sein und arbeiten auch bidirektional. Gruß Hagen
Ich habe soche levels immer mit Dioden entkoppelt. Mit BAT 45 Dioden in richtung Atmel und 10 k widerstände in reihe nach 3Volt , dann zwischen die Dioden und Widerstände die 3,3 Volt anschlüsse vom Display, so ist 0 Level 0 ( Diode leitet ) und die 5 V vom Atmel Port steigen bis max 3,3 Volt am Display...( Diode sperrt) Ging mit dem Bakke Soft für 7110 Display prima... Müsste doch hier auch gehen oder? sieht ihr Probleme? Gruß..Aart
funktioniert doch aber auch nicht bidirektional oder? und unidirektional gehts mit nur 2 widerständen als spannungsteiler leichter
Ich weiß nicht so recht. Man möchte doch den Vorteil das das Display eben bis runter auf 1.8V funktioniert und dabei weniger als 0.8mA verbraucht doch nicht verschenken ?? In meinem derzeitigen Projekt, ein relativ universelles Steuerungsboard mit ATmega8L, RS232, PWM Backlight, Software RTC, Beeper, 4 Taster und I2C EEPROM's, habe ich absichtlich 3.2V als Spannungsversorgung benutzt. Nach bisherigen Messungen und Berechnungen benötigt das Board im Power Save Mode nur 30µA und bei vollem Betrieb mit Backlight on und RS232 aktiv eben 36mA, bei 2.8 - 3.2 Volt. Da die Ansteuerung des Displays doch ziemlich aufwändig ist, sprich Grafik Fonts benötigen einiges an Speicher, ein grafisches Menusystem benötigt einiges an Code und Konstanten, glaube ich das es besser ist dem LCD eben ein eigenes Board zu geben. Gruß Hagen
Hi alle @ ape .. dummerweise war + LED und - LED in dieser Anschlußplan vertauscht , deswegen gabs kein Licht... OK Werde meine Dioden rausschmeissen , und Spannungsteiler nehmen 10k und 680 ohm ok? @ Hagen Ja nen extra board ist prima , allerdings müssen die Boards wieder mit einander kommunizieren .. Mein Problem ist das LCD erstmal an mein ATmega16 ans rennen zu kriegen ( Ist eben auf mein Testboard druff ) habe SPI auf Port B umgestellt .. aber mein 5V > 3 V Interface lief noch mit Dioden und Widerstände ( Bakke design 7110 Display ), das ist bei 0 V aus dem Display nicht bidirektionell.. da hatte ape recht , löte gerade um.. mal sehen obs läuft. Ich hatte dummerweise ein Display mit grüne Folie bekommen , also stecker runter und Strippen dranngelötet.. fummelei eben.( Neues bestellt) Stromsparen kommt später , werde dann auch mal ein ATMEGA128 bestellen und nen neues Testboard ätzen.. Dann brauche ich noch nene Rotary encoder routine und nen DDS Chip drann um mein eigenbau KW-Funkgerät eine neue Frequenzaufbereitung zu günnen. weiter wollte ich das Display für ein eigenbau Tauchcomputer verwenden , da muß Stom gespart werden weil der Strom aus nen 7,2 Volt Lio Accu von nen Siemens S4 kommen soll.. Es gibt viel zu tun..also ich löte jetzt die Widerstände drann und hoffe auf Bild. Gruß Aart
Den meisten Saft zieht das Display 0.8mA + Backlight ca. 30mA. Darum habe ich in meinem Board von vornherein folgende Idee verfolgt. Der Anwender benötigt das LCD nur wenn er vorhat es abzulesen. Es stellt sich also die Frage WIE bekommt das Board mit das der Anwender es ablesen will ? Ich werde es so lösen das ich ca. 2-4 mal pro Sekunde eine IR Reflexions-Lichtschranke ansteuere. Die IR Diode sitzt links neben 4 Tastern, der IR Transistor eben rechts. Bewegt der Anwender die Hand ca. 5-20 cm vor dem Display so wird es aktiviert und das Backlight/LCD hochgefahren. Die 30mA und -3.2V / +3.2V Versorgung des Backlight habe ich inklusive über den RS232 Chip gelösst. Ein Tx Kanal wird dabei per PWM durch den ATmega8L angesteuert. Vom Tx_Out zu V- am RS232 Chip sind -LED und +LED des LCD's angeschlossen. Die Spannung für's Backlight kann also stufenlos per PWM von 0 bis ca. 11 Volt eingestellt werden. zZ. habe ich die PWM auf maximal 25% Dutycycle eingestellt um auf 6.4 Volt zu kommen. Da ich in meinem Board einen MAX3224ECCP drinnen habe, der das Auto Shutdown Plus Feature hat, sparrt selbst dieser Chip enorm Strom. Nach ca. 30 Sekunden ohne Rx/Tx Activation fährt der Chip in den Power Down Mode runter und verbraucht wenige µA. Wie gesagt, mein erstes Projekt mit diesem Board ist meine "Four Seasons Clock". Ein Wecker mit RTC, 16 individuellen Weckzeiten, Piezo Beeper, frei Konfigurierbarem Kalender (zeigt also Geburtstage an), Alarm Abschaltung per Handbewegung und eben 4 verschiedenen grafischen Layout's der Uhr, je nach Jahreszeit :) Alles konfigurierbar über RS232 und PC Software, und über noch 4 freie Pins eventuell erweiterbar um einen DCF Empfänger, Thermometer, Backup Goldcap, oder kapazitive Taster. Allerdings ob ich das bis Ende Mai fertig habe ?!? Für dieses Projekt benötige ich eben minimalen Stromverbrauch. Nach bisherigen Rechnungen würde eine CR2032 ca. 1 Jahr reichen. Das "Board" ist schon fertig gesteckt (Steckbrett :), RS232, I2C EEPROM, Backlight, Taster, ISP funktionieren. Gruß Hagen
Klingt gut.. Widerstände sind drann , nix Bild.. Werde vielleicht doch auf nen neues Display warten müssen. Bin schon grau . und es wird nicht besser!!
Vielleicht habe ich doch noch was falsch gemacht beim unstellen auf ATMEGA16..?? oder ist mein 4 MHZ Quarz zu wenig?
ja is schon immer doof wenn man sowas zusammensteckt und es nich funktioniert und man keinen anhaltspunkt hat warum nicht. Allerdings sind 10k und 680R auch noch nich wirklich passend. Die Spannung teilt sich immer im gleichen Verhältnis auf wie die Werte der Widerstände. wenn du also deine 5V hast da den 680R Widerstand dranhängst und hinter den dann den 10k hast du zwischen den beiden Widerständen immernoch (5V/10680R)*10000R = 4,68V ... Möglicherweise hast du damit schon den Controller geschrottet. um von 5V auf 3,3V zu teilen wären zum Beispiel wären z.B. ein 3,3k und ein 6,8k Widerstand geignet (ergäbe dann 3,37V) Die Schaltung sähe so aus: +------------o AVR (5V Pegel) - | | | | 3,3k | | - | LCD (3,3V Pegel) o----+ | - | | | | 6,8k | | - | _ GND
Hai Ape Sorry das war mir klar Habe 6k8 oben und 12 k unten.. und Prog reinschieben geht auch ok
Es stehen auch pulse an , aber data ist mir viel zu ruhig.. steht was , aber müsste doch ständig andere Data ausgeben.Gucke mit ´m Oscar auf die Leitungen..
Da gibts DELAY_ONE_MILLISECOND ( XTAL 4 1000 ) // Must > 8 in glcd.inc und ich habe nur 4 MHZ.... vielleicht?
rechne mal nach, 4000000 4 1000 = 1000, also bei weitem > 8 :) Ich habe mal die neueste Version 2.2. angehangen (natürlich einige bugfixes enthalten, siehe readme.txt). Diese Version habe ich dir auf den ATmega16 mit 4Mhz eingestellt und compiliert. Du musst also nur glcdlib.a und die Header laut readme.txt kopieren und kannst sofort das Testprojekt erzeugen. Leider kann ich nur auf Atmega8L und Atmega32 testen. Allerdings habe ich beide MCU's mit jeweils 16/8/4 MHz getestet und das lief alles einwandfrei. So müsste deine Konfiguration dann aussehen: Pin LCD Desc. ATmega16 1 Vdigital 1,8V - 3,3V 2 RESET LCD_RESET, SPI MISO PB6 3 SDATA LCD_SDA, SPI MOSI PB5 4 SCLK LCD_CLK, SPI SCK PB7 5 ~CS LCD_CS ~SS PB4 6 Vdisplay 1,8V - 3,3V 7 n/c 8 GND GND 9 LED- GND or -3.2V 10 LED+ +6.4V or +3.2V, 15 - 30mA 11 n/c Falls du NICHT ~SS benutzt dann muß ~SS denoch als Ausgang definiert werden oder IMMER auf High stehen. Dies wird durch das HW-SPI bestimmt da ansonsten bei Low auf ~SS das SPI in den Slave Mode umschaltet. Wenn du ein STK500 Board hast dürfte die Testphase eigentlich easy sein. Man muß vor dem Anschließen des LCD's halt nur das Board auf 2.7 - 3.2 Vcc einstellen. Gruß Hagen
Danke Hagen Hatte schon nen 8 Mhz probiert , solche Teilchen fliegen hier rumm Ja habe es genauso angeschlossen !! Pin 5 auf PB4 und es stimmt 100 ist mehr als 8 , aber aus lauter verzweiflung.. Nein ich haben nicht so ein edles STK500 Board Vielleicht sind meine Leitungen zwischen Controller und Display zu lang? Wie lang dürfen die sein? ( bei mir 40 cm Flachband.. ) Der Sonntag ist noch lang ;-)) Und alle Spannungen kommen gleichzeitig ursprung = 8 V Netzteil, ist das ein Problem?? ( Also 3,3 und 5 V von eigene Spannungsregler ) Werde die neue Version mal reinschieben , und sehen was passiert .. Danke !!
So Kabel verkürzt , Neue Soft rein.. Nix Warte jetzt auf neues Display.. Vielleicht hats nen Macke , und ich werde noch grauer Hihi.. Wäre doch schade drumm Bye..Aart
Meine Kabel sind über 55 cm lang, ebenfalls Flachband allerdings haben die Leitungen einen geringeren Querschnitt als normales Flachbandkabel !! Daran kann es also nicht liegen bei dir. Eventuell ist aber die SPI Taktfrequenz zu hoch. Öffne mal glcd00.S, gehe zu glcdDisplayInit() und kommentiere wie nachfolgend aus. #ifdef SPI2X // sbi LCD_SPSR, SPI2X #endif Dies reduziert die SPI Frequenz auf die Hälte, bei 4Mhz Takt wird das LCD so mit 1MHz SPI angesteuert. Das wäre dann 6.5 mal weniger als maximal möglich. Wenn du bei eBay ersteigerst dann schau dir die Angebote von Xulux an. Bei dem habe ich für 22.99 mein LCD ersteigert. Er bietet die LCD's mit der braunen flexiblen Leiterbahn an. Es wäre sowieso mal interessant zu wissen ob zwischen den zwei verschiedenen LCD's dies bei eBay gibt Unterschiede sind, eben nicht nur in der Leiterplatte. Wer also schonmal ein LCD mit grüner flexibler Leiterplatte mit der Library zum laufen gebracht hat, könnte sich hier mal melden. Eventuell entstehen ja hier die Unterschiede und Probleme. Gruß Hagen
Lass den ATmega16 mal mit 3.2 Volt laufen und schließe das LCD direkt an, ohne Spannungsteiler usw. Das Backlight LED+/LED- dann über separate 5-6 Volt laufen lassen. Am Anfang habe ich auch nur eine 9V Blockbatterie mit Z-Diode als Backlightversorgung benutzt. Gruß Hagen
Ja kann ich machen aber alle signale sehen eigentlich gar nicht so schlecht aus ausser PB6 MISO welches an Reset vom Display hängt , der geht auch schon ausm Controller nie in richtung 0 V es ist lediglich so ein kleiner dip zu sehen Dieses ist auch sogar so wenn die Strippe zwischen den Spannungsteiler abgelötet ist.. also ein wenig nach Masse belastet. Vielleicht geht das beim Einschalten kurz auf 0 V aber das kann ich nicht sehen , dann bräuchte ich ein Logicanalyser.So fix ist der Oszi nicht. die Backlight LEDs hängen bereits komplett von alles getrennt an ein 8V Spannungsregler mit 100 Ohm Vorwiderstand.
Warte mal da ist aufm Testboard noch was drann... ein 4011 der zwischen Controller und Programmiermimik hängt.. wie ist das bei so ein STK500 entkoppelt? werde da gleich ein Leiterbahn trennen.... Aart
Bei mir ändert sich nix wenn ich das auskommentiere.. merkwürdig Wie groß muss das Hex file werden ? Bei mir gehts von 0 bis 1008 Hex Fehlt wieder mal was? habe keine errors beim Compiler.. Aart
@Hagen Mein ATMEGA16 ist kein L -Type also geht nur auf 5 Volt.. Denke drüber nach doch ein STK500 mit 501 zu kaufen...
Hm, wäre es dann nicht billiger einen L Typ zu Testzwecken zu kaufen ? Ok, ich persönlich habe mir auch das STK500 gekauft, da ich dessen "Drumherum" an Elektronik als komfortabel empfand. Zudem bestand von Anfang an kein Zweifel darüber das es im Zusammenspiel mit AVRStudio auch läuft. Allerdings, gerade in der Hardware würde ich mich als Anfänger bezeichnen :) Ich vermute aber mal des entweder deine Hardwareanbindung oder aber dein LCD nicht funktioniert. Bisher habe ich noch keine weiteren Berichte das die Library ansich nicht funktioniert. Aber Ape hat schon ein LCD mit Überspannung zerschossen. >Ja kann ich machen aber alle signale sehen eigentlich gar nicht so > schlecht aus ausser PB6 MISO welches an Reset vom Display hängt Dann konfiguriere doch diese Leitung einfach um, auf einen anderen Pin. Das RESET Signal wird ausschließlich nur in glcdDisplayInit() benötigt, ist aber denoch wichtig. D.h. es kann nicht dauerhaft auf Low/High liegen. Aber an welchem Pin es ist ist egal, es muß nicht an MISO hängen, solange es auf PortB liegt. Man könnte es auch auf einen anderen Port legen, nur dann müsste der Code in glcdDisplayInit() entsprechend leicht angepasst werden. Die Library geht erstmal generell davon aus das alle Leitungen auf PortB liegen und das Hardware SPI vorhanden ist. Alle AVR's die kleiner sind machen mit dem Nokia eh keinen Sinn. Man müsste insgesammt 3 Funktionen ändern, glcdDisplayInit(), glcdDisplayCommand() und glcdDisplayRead() um eine komplett andere Port Konfiguration benutzen zu können, oder per Software SPI zu arbeiten. Gruß Hagen
Achso, natürlich liegt auf RESET scheinbar dauerhaft der gleiche Pegel. Nur einmal, in glcdDisplayInit() wird sehr schnell dieser Pegel geändert. Nur dafür ist das RESET eigentlich gut, aber ohne diesen RESET Impuls läuft das Display nicht an. Gruß Hagen
Ja danke Hagen ist eine gute Idee.. Ich werde diesen Pin umlegen auf PB1 oder so.. stimmt auch. Überspannung hatte ich keins , weil mit Festspannungsregler gearbeitet wird. Da ist irren ausgeschlossen , regelbare Netzteile sind da nicht so toll. Heute abend probiere ich dieses und dann melde ich mich wieder. Merkwürdig ist das dieses auskommentieren ifdef SPI2X // sbi LCD_SPSR, SPI2X #endif kein änderung im Clock bringt . lediglich beim reinschieben des Hex file tut sich da was. sonst sind die Clocksignale immer gleich. naja heut abend weiter.. Danke... Aart www.aart.de.vu
So jetzt Reset an PB3 .. Null resultat.. Warte also jetzt mal auf das neue Display mit Brauner Folie..( Lernfähig eben habe vorher beim Anbieter nachgefragt )wird wol ende der Woche kommen. Dein anbieter habe ich bei Ebay nicht gefunden. Vielleicht hat das Display nen Macke , und wirds nie was..Hagen wieso soll dein Projekt bis ende Mai fertig sein? Immer noch die Frage ..Wie groß muss das Hex file werden ? Aart
> soll dein Projekt bis ende Mai fertig sein? Weil ich meiner Freundin endlich mal einen cleveren Wecker schenken möchte :) Wichtig sind dabei die variablen Weckzeiten, denn zur Zeit hat sie zwei Funkwecker die 30 Minuten nacheinander eingestellt sind. Jeden Samstag klingen mich die Scheißdinger um 5.30 Uhr und 6.00 Uhr aus dem Bett und jeden Montag verschläft sie weil sie Sonntags vergessen hat die Wecker wieder einzuschalten. Desweiteren weckt sie mich Wochentags automatisch weil mindestens jeden zweiten Morgen einer der Wecker beim ausschalten runterfällt. Bei meiner Lösung würde eine Handbewegung reichen um den Alarm auszuschalten, vorrübergehend natürlich. Allerdings ich schaff es nicht das Ding fertig zu bauen, da nun kurzfristig eine 2 Wochen Geschäftsreise dazwischengekommen ist, tja das liebe Geld. Mal davon abgesehen habe ich meine letzte Leiterplatte von 20 Jahren geätzt und entworfen. Auch dafür beötige ich erstmal wieder 2-3 Wochen Einarbeitung. Meine IR refrexionslichtschranke funktioniert auch noch nicht, es existiert noch kein Schaltplan gesweige denn ein Layout. Das einzigste was einigermaßen seit 2 Wochen läuft ist meine Testschaltung auf dem Steckbrett. Schon traurig das ganze :( ABER keine RS232 funktioniert, der Code ist perfekt fertig und getestet, die RTC läuft mit Schaltjahr, Wochentag etc, die Automatische Kalibrierung des internen Taktgenerators läuft perfekt und ermöglicht eine stabile RS232, das Backlight per PWM arbeitet vollständig und es ist erhebend zuzusehen wie sich langsam das Display runterdimmt, und finally mein I2C EEPROM ist fertig angesteuert und mit Fonts vollgepropft. Hat sich also schon was getan seither. Nur das Board, das Layouting und das ätzen der Platine macht mir Bauchschmerzen. Achso, ganz nebenbei kann ich später das Board ansich auch für andere Aufgaben benutzen, Thermometer, Terminal oder sonstwas was ein fetiges 4 tasten Gafikmenu benötigt und mit wenig Power auskommen muß. > Immer noch die Frage ..Wie groß muss das Hex file werden ? Auf der Platte belegt es 23.074 Bytes, im Hex File steht am ende .... :101FD0001B81AA81B981CE0FD11D0FB6F894DEBF47 :081FE0000FBECDBFED01089515 :101FE8002900FC0091B60000000001018282010175 :0C1FF8000101828237478AE3115B061F5B :00000001FF so, wo lese ich jetzt die Größe ab ? Bei deaktivierung des obigen Code dürfte sich das HEX nur um 2 Bytes verkleinern. Kuckst du hier http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&item=4185124233&category=40570 Gruß hagen
Danke Hagen Bei mir ist das Hex File auf der Pladde 23127 Byte also kann das stimmen , ist natürlich wenig anders mit dem Mega16 Libs so jetzt Heia ..warte auf neue Displays , habe dein Anbieter jetzt auch gefunden und noch eins gekauft.. Platinen mache ich gelegentlich auch .. ja ist viel Arbeit .. deswegen arbeite ich gerne mit SMD Bauteile , 1 Chipfläche oder auch mehrere und viele hunderte inselchen drummherumm , da kannste dan die SMD Teile druff löten alloe Inseln haben 1206 Raster , nix bohren ..ist fast so einfach wie Pullis stricken.. haha auch normale Bauteilchen lassen sich so auch auf die Beinchen stellen.. alles so wie man die halt gerade vorrätig hat . und auch ablöten geht wunderbar die platine ligt auch prima aufm Tisch unten ist Masse , brauchste nen kurze Masse , kannste durchbohren , und nen Drähtchen einfach dadurch auf Masse löten Rings rumm zwei Stromversorgungsleiterbahnen und auch noch nen Masse Bahn , da kannste dann mit Povin Draht Saft anzapfen.zB 5 und 3 Volt und es passen unmengen Bauteile auf eine Europlatine. So mache ich das, nur für Fertige sachen da wird nen richtige Platine entworfen. Gruß..Aart
Ich hatte mich schon kurze Zeit mit Eagle beschäftigt. Aber exakt bei der Aussage "...haben 1206 Raster" komme ich mit dem Ding nicht klar. D.h. 1.) finde ich in der Bibliothek nicht die Bauteile die ich suche, bzw. meistens weis ich garnicht wo ich suchen sollte, und 2.) komme ich mit dem Raster-Einstellungen im Layouten nicht klar. Ok, bisher habe ich nur ein par Stunden rumprobiert ohne Plan und Ziel. Später habe ich's erstmal verschoben und mich um die Schaltungsentwicklung der Clock gekümmert. Wenn alles schief läuft dachte ich mir das ich ne Euro Platine nehme, fürs 1. Projekt dürfte das reichen. Löten ansich ist kein Problem, da war ich schon damals in der Lehre ziemlich fit. Gruß Hagen
Schick mir mal deine Adresse dann kriegste nen anderes Programm.. Auf CD
Oder auch dein dein Plan .. könnte ich schon mal ein Anfang machen Die Frage ist welche Bauteile nimmste da? oder ich mache dir schon mal nen Testplatine..( Für SMD ) Dann aber Angaben welche Chips drauf sollen.. weil Mai ist bald!
Jaa und auf meine Homepage ist die von T-online druff.. Kriege hier bei MSN auch immer nen mail wenn du hier was schreibst.
Tja, ich hab dir ne Mail geschickt scheint wohl nicht angekomen zu sein. Anbei das compilierte HEX für deinen ATMega16 bei 4Mhz. Bei mir hat es 23.119 Bytes. Gruß Hagen
Warte mal auf welchen Pin haste Reset? Kann ich zwar auch messen aber..
#elif defined (_AVR_ATmega16_) #define LCD_PORT _SFR_IO_ADDR(PORTB) #define LCD_PIN _SFR_IO_ADDR(PINB) #define LCD_DDR _SFR_IO_ADDR(DDRB) #define LCD_CS PB4 // SS #define LCD_SDA PB5 // MOSI #define LCD_RESET PB6 // MISO #define LCD_SCL PB7 // SCK #elif Gruß Hagen
JA stimmt.. OK ..Danke ich warte auf neues Display.. hoffentlich morgen...
@Hagen: Du schreibst: "Leider kann ich nur auf Atmega8L und Atmega32 testen. Allerdings habe ich beide MCU's mit jeweils 16/8/4 MHz getestet und das lief alles einwandfrei." Wenn ich mir das Datenblatt des ATmega32 anschaue, dann steht dort zu "Operating voltages" und "Speed grades": Atmega32L: 2,7 - 5,5V / 0..8MHz Atmega32: 4,5 - 5,5V / 0..16MHz Wenn Du also einen ATmega16 mit ca. 3V bei 16MHz betreibst, wird der doch außerhalb der Spezifikation betrieben und es ist mehr oder weniger Zufall, ob der so läuft oder nicht. Oder liege ich da falsch? Gruß Michael
Ja, ich habe ihn ausserhalb der Spezifikationen betrieben :) Man kann das ja mit einem STK500 ganz komfortabel und schnell testen. Der ATMega32 ohne L lief mit 16Mhz auch bei 3.0Volt "sauber". Wobei man kann sich eben darauf NICHT verlassen das dies immer so ist und das es eben auf die Dauer keine Probleme gibt. Zudem, wäre dieser Test nur in engen Bereichen aussagekräftig. Denn nur der AVR selber und das SPI des AVR's wurden ja getestet. Kein ADC, keine Timer usw. usw. Den ATmega8L habe ich natürlich nur bis 8MHz getaktet, logisch. > es ist mehr oder weniger Zufall, ob der so läuft oder nicht. Ich glaube eher daran das es mehr oder weniger Zufall ist das er auf die Dauer immer korrekt arbeitet. Aber ich meine das es wahrscheinlicher ist das die meisten AVR's auch ausserhalb ihrer Grenzen SCHEINBAR stabil laufen statt überhaupt nicht. Zb. habe ich einen ST24C64 als W und normale Version. Die normale Version dieses EEPROM I2C Chips soll laut Doku mit 5V und max. 400KHz I2C betrieben werden. Nur die W version kann runter bis auf 2.8V laufen. Nun, zu Testzwecken habe ich mal die 5V version getestet mit 500KHz I2C. Seit ca. 2 Wochen läuft das Ding ohne Probleme. Heist lesen und schreiben ohne Probleme oder nur einen einzigsten Fehler. Und noch mehr, statt externe 10KOhm Pullups für den I2C Bus nutze ich nur die internen Pullups des AVR's. Du siehst alles ist relativ, aber auf solche Elektronik wollte ich mich im Ernstfall nicht verlassen wollen. Bei meinem Wecker kann ich bis jetzt noch keinen Schaden anrichten :) Gruß Hagen
Ich habe noch eine Frage zur Verwendung des ATmega128: In glcd.inc steht dort: #elif defined (_AVR_ATmega128_) #define LCD_PORT _SFR_IO_ADDR(PORTB) #define LCD_PIN _SFR_IO_ADDR(PINB) #define LCD_DDR _SFR_IO_ADDR(DDRB) #define LCD_CS 0 // SS #define LCD_SDA 2 // MOSI #define LCD_RESET 3 // MISO #define LCD_SCL 1 // SCK Bei den anderen ATmega-Typen steht dort bei LCD_CS usw. immer PBx Warum steht da beim Mega128 z.B. bei LCD_CS nur 0 statt PB0? Wenn ich den Mega128 verwenden möchte, dann muss ich in beiden Makefiles bei MCU jeweils atmega128 angeben, richtig? Gruß Michael
Aus irgendeinem Grunde sind beim mega128 die einzelnen IO-Pins nicht durchdefined. Probiers aus und änder die 0, 2, 3 und 1 in PB0, PB2 usw. Ich hab dann eine Fehlermeldung bekommen, allerdings weiß ich nicht wiues mit der neuesten avr-gcc version aussieht, bin noch nich dazu gekommen diese auszuprobieren
> akefiles bei MCU jeweils atmega128 angeben, richtig? Korrekt. Du musst sogar, wenn du dein Projekt mit der GLCD auf einem anderen AVR benutzen willst, sogar die Library jedesmal erneut compilieren. Man könnte dies vereinheitlichen, mit nur einer Einstellung, allerdings greift dann die Konfiguration=Makefile der Library in die Konfiguration DEINES Projektes ein. Dies ist ja auch nicht Sinn und Zweck der Sache. Da die Library aber im precompilierten Format benutzt wird, kann man auch nicht die Konfiguration des aktuellen Projektes dynamisch benutzen. Egal wie man es dreht und wendet, du MUSST immer zwei Konfigurationen pflegen. Gruß Hagen
Jetzt isses passiert neues Display drann , kein Bild !! Ich teste weiter .. Ape haste wirklich die Widerstände da zo zwischen von 5 nach 3,3 Volt Atmel >> LCD?? Hat dieses noch jemand so gemacht?
Ape sein altes Programm läuft !! Hurraa.. aber warumm Hagen seins nicht?? Aart
Gute Frage, erhöhe mal in glcdDisplayInit() den Delay, statt also 5 ms nimm dort mal 64ms. Gruß Hagen
Ja ok Hagen..Werde weiterprobieren . Post ist unterwegs ,Ich weiss jetzt das das Display wenigstens arbeitet , habe auch diesen DDS 9832 jetzt funktionierend !! Wieder 3 Serielle leitungen am PB 0,1,2 es kommt prima 3,1 Mhz raus. Nur noch mein Rotary encoder und nen Tastatur. Langsam machts Spaß !! Aart
Hallo Auch 64 ms nützt gar nichts.. denke es liegt vielleicht doch am interfacing zwischen 5 und 3 Volt . So richtig sagt mir hier auch keiner ob dieses bei ihm läuft oder nicht . Habe dafür ein neues Problem ( Mit Ape´s prog) bei ein Interrupt auf PC4 ( INT1 ) kriegt das das Display ein reset,mache ich da was falsch? Habe ein Rotary encoder an Port C angeschlossen ( 3 und 4 ) Gibt es dann probleme mit SPI ?? Gruß..Aart
Ja jetzt läuft das auch <avr/signal.h> muß rein .. Mann muß sich erst alles durchlesen hier , habe ich bereits gemerkt.
Wo rein ? In den GLCD Sourcen ist das header doch schon eingebunden. Gruß Hagen
Hallo Hagen Stimmt das bei Ape´s Prog?? weiss ich nicht..Deins lief ja erst nicht Habe das Interfacing von 5 V nach 3,3 Volt geändert. Auf jedenfall habe ich heute Abend DEINE Software am laufen !! Hurraaa!! Interface zwischen Display und ATMEGA16 MEGA16 3,3V ---- | ------- | | | 4k7 | | | | | |--|<|---+--------| Display ----- -------- Diode Bat 41 ( Shottky) Widerstand nach 3,3 V 4k7 Jetzt muß ich nur noch rausfinden wie PRINTF bei deine Routinen gehen.. Lesen ....Lesen Probieren..
fdevopen(..., glcdPutChar,...); glaube ich, habe momentan selber nicht die Sourcen verfügbar. Allerdings, printf() hat einen enormen Overhead an Code der eingelinkt wird. Wenn nur einfache Strings ausgegeben werden sollen ist glcdPrint() besser. Gruß Hagen
Hi Hagen Nein ich soll Variablen ausgeben.. 4 Byte groß.. Die version 2.2 ist doch auch hier oben im Anhang .. Aart
Hallo, das hört sich ungemein cool an, was ihr hier macht! Da werde ich wohl demnächst auch mal in die Welt der Avrs einsteigen.. gibt's irgendwo noch mehr infos über die displays, auch anderer hersteller? und noch weiter off-topic: wo ist der unterschied zwischen dem atmel isp programmer, und der homebrew lösung über parallelport? gerne auch per mail.. danke! -leif
Einige Infos zu den Nokia-LCDs: Es gibt zwei Typen mit unterschiedlichen LCD-Controllern: 1) Philips-Controller PCF8833, erkennbar an einer braunen Leiterplatte beim Anschlußstecker bzw. an den Lötpads unter der weißen Folie 2) Epson-Controller S1D15G10, erkennbar an einer grünen Leiterplatte beim Anschlußstecker, das Datenblatt ist im Anhang zu finden. Die beiden Controller haben leider unterschiedliche Befehlscodes!! Die Nokia-Library von Hagen unterstützt bisher nur den Philips-Controller. Im Handy selbst wird zunächst per Philips-Identifikationskommando RDID1 geprüft, ob es sich um den Philips-Controller handelt, wenn nein, dann wird der Epson-Befehlssatz verwendet. Beim LCD mit dem Epson-Controller ist kein Lese-Mode möglich. Das passende Gegenstück zum 10-poligen LCD-Steckverbinder gibt's von Hirose http://www.hirose.de: DF23C-10DS-0.5V Das Datenblatt gibts hier: http://www.hirose.co.jp/cataloge_hp/e68801060.pdf Weitere interessante Hinweise und Tipps zu diesen LCDs gibt's hier: - Yampp-Forum: http://www.myplace.nu/mp3/yabbse/index.php?topic=1.0 - Sourcecode für MP3-Player mit color LCD: http://www.myplace.nu/mp3/download/files/yampp7_usb_color_v310.zip - LCDInfo-Forum: http://www.skippari.net/phpBB2/viewtopic.php?t=586&postdays=0&postorder=asc&start=0 - Datenauswertung aus Nokia-Handy (LCD mit Epson-Controller) per Logicanalyzer: http://planetsab0tage.altervista.org/programming/nokialcd/nokialcd.html http://www.republika.pl/romek_by/download/Nokia_Color_LCD.zip Gruß Michael
Hallo, ich habe vor einigen Wochen mir die glcd fürs Nokia6100 gezogen und bin begeistert. Da ich aber kein 6100 sondern ein (bzw. mehrere) 3150i mein Eigen nenne, habe ich die Libraries an das 3150i angepaßt. Dort wird auch ein Epson-Controller verwendet, so daß diese Anpassungen vielleicht auch für die Epson-Variante des 6100 verwendbar sind. In meinem Aufbau verwende ich einen Mega128 (5V) der über eine Widerstandskombination an das Display angeschlossen wird. Dabei stellte ich fest, daß die Verwendung der MISO-Leitung für den Reset nicht funktionert. Bei der SPI-Aktivierung wird der Pin als Eingang geschaltet und prompt erhält das Display über die Widerstandsbeschaltung einen Reset :-( Habe daher den Pin verlegt und damit funktioniert es (Mit der Dioden-Beschaltung sollte es gehen). Neben den notwendigen Änderungen habe ich auch noch eine weitere Funktion eingefügt um den Kontrast einzustellen. Nun habe ich heute gesehen, daß eine Version 2.2 vorliegt. Ich werde meine Änderungen nun an die 2.2 anpassen und könnte sie dann hier veröffentlichen. Man kann über ein Define-Statement auswählen, welches Display angeschlossen ist. Volkmar
Das wäre wunderbar Volkmar , da wie Du bereits gelesen hast ich mich schon gut mit ein grüne FolienDisplay gequält habe, und das liegt hier beiseite, jetzt brauche ich vielleicht die 25 Euro nicht wegwerfen.. Sag mir bitte mal wie ich nen 4 Bytes Variable auf eine Stelle ausgebe... Vielleicht mit der itoa Funktion.. Ich bin nicht der C-Profi...irgendwie kriege ich das nicht hin , und Kreise und Rechtecke sagen nicht viel aus , ( Sehen schön bunt aus.. aber was hilft mit das?) Aart
Das Nokia 3510i verwendet den Controller S1D15G14. Datenblatt: http://www.mikrocontroller.net/attachment.php/60010/D15G14E_14_030526.pdf Dieser ist nicht befehlskompatibel zum S1D15G10 des Nokia 6100, einfach mal den Befehlssatz in den beiden Datenblättern vergleichen. Gruß Michael
@Volkmar, klasse. Könnte ich schonmal einen vorab Code von dir bekommen ? Ich würde nämlich schon ganz gerne den GLCD Source stetig erweitern. Natürlich ist dies dann nicht so einfach wenn man nicht selber praktisch jedes LCD testen kann. Aber was softwaretechnisch möglich ist das man die hardwarespezifischen Funktionen möglichst unabhänig gestaltet und eben gut konfigurierbar sind. n den Source hatte ich ja schon angedeutet das ich dies auch versucht habe umzusetzen. Zur Zeit sollte es mit geringem Aufwand möglich sein Display bis zu einer Auflösung von 255x255 Pixeln zu unterstützen, bei Farbtiefen von 256 oder 2^16 Farben. Es wäre nun interessant für mich an deinen Erfahrungen zu partizipieren. @Michael: Danke für diese tollen Links und Infos. Ich dachte mir schon das es eventuell zwei unterschiedliche Displaytypen gibt. Wenn ich die Zeit finde werde ich natürlich beide Typen unterstützen. Wie hast du diese Infos aufgespürt ? Gruß Hagen
So nach langer onlinemäßiger lethargie hab ichs nun auch mal wieder geschafft meine Finger zu bewegen. Auf meienr Seite gibs jetzt auch die Version 2.2 zum Download (ja jetzt schon!) und außerdem, weil ein paar leute danach gefragt hatten, auch die ältere C-Version. Zum Thema außerhalb der Spezifikationen: Hab jetzt meinen mega128L mit 18,432MHz laufen bei 3,0V (also mehr als doppelt so schnell als im Datenblatt angegeben) Das SPI läuft dementsprechend mit ca. 9,2MHz über etwa 40cm ungeschirmtes Kabel... Das einzige Problem, das von Zeit zu Zeit auftritt ist, dass sich das Display beim einschalten manchmal mit Falschfarben initialisiert. Das hat es aber auch schon als noch alles innerhalb der Spezifikationen lief. Ich vermute das es weggeht wenn ich die Startup-Delay Zeit etwas erhöhe. Außerdem benutze ich übrigens ziemlich viel vom RAM des Prozessors und den A/D Wandler mit 8-bit Auflösung bei 44kHz. Wofür das ganze? Ich bin gerade halbherzig dabei einen Spectrum Analyser mit dem Display zu basteln und hab dafür mal mit ner FFT mit 128 Samples experimentiert. Das ganze ist aber noch recht unbefriedigend, weil zum einen recht langsam (ich verwende furchtbar uneffizienten Code mit Fließkommarechnungen, schaffe damit jetzt aber immerhin ca. 10 Bilder pro Sekunde) und zum andern sind die Frequenzen der 64 Ergebnis Werte linear, also soll heißen die Auflösung im unteren Frequenzbereich ist viel zu gering. Werde jetzt mal mit digitalen Filtern nach Atmel Appnote experimentieren.
>Werde jetzt mal mit digitalen Filtern nach Atmel Appnote > experimentieren. Das hätte ich dir auch empfohlen. Eine FFT mit 128 Punkten bei zB. 22KHz Samplinmg frequenz liefert dir 64 Freqeunzauszüge in Schritten a 344Hz. Dies ist für die Bässe nicht ausreichend. Ein SIR/SFIR Filter Kaskade kannst logarithmisch aufbauen und somit dem menschlichem Soundempfinden besser anpassen. Zudem sollte die Kaskade effizienter sein. Gruß hagen
@Hagen: Auf deine Library mit Epson-Controller Support freue ich mich schon! -leif
@Leif und andere: Sorry für die späte Antwort, aber ich hatte es vorher einfach nicht geschafft. Habe nun meine Änderungen an Hagen geschickt und es macht sicherlich mehr Sinn wenn er weiterhin die SW pflegt als wenn ich da jetzt eine spezielle 3510i-Variante poste. @Aart: Um variable Werte auszugeben verwende ich die printf-Funktionen aus der stdio. Wie Hagen schon schrieb, braucht die etwas Platz aber bietet auf der anderen Seite etliche Möglichkeiten für unterschiedliche Formate. Wenn Du nur ein spezielles Format hast, kannst Du sicherlich auch itoa() verwenden. Ich mache das so: //Einbinden der StdIO-Lib: #include <stdio.h> //In main() (oder wo auch immer ;-) fdevopen(glcdPut, NULL, 0); //Ausgabe printf_P(PSTR("%02i:%02i"), minute, second); Im Makefile mußt Du darauf achten die richtige Version zu nehmen. Wenn ich mich recht erinnere, wird in der derzeitigen WinAVR-Distribution die minimale stdio-Lib eingebunden. D.h. Du bekommst zB keine führenden Nullen im obigen Beispiel. Dann bin ich noch auf der Suche um ein Bild (BMP oder GIF oder so) verwenden zu können. A) müßte das Bild in eine include-Datei transferiert werden. Ich meine sowas schon mal gesehen zu haben, kann ich auch noch mal bei avrfreaks suchen. B) Wie sieht das mit der Farbkonvertierung aus? Bei Verwendung des 8Bit-Modus kann man ja nicht wirklich 256 Farben auswählen, man kann ja nur 8 Rot, 8 Grün und 4 Blautöne aussuchen aus denen man dann die 256 Farben zusammensetzt. Dies müßte auch berücksichtigt werden. Hat da hemand eine Idee? Volkmar
Ich hatte mir ma testweise nen Prog geschrieben das vom PC aus Bilder übers UART an das Display geschickt hat. Die Farbdarstellung lies aber in der tat zu wünschen übrig. Um vorhandene Bilder zu konvertieren müsste man also nen Prog schreiben das das irgendwie geschickt umrechnet, dürfte aber recht aufwendig sein... wenns nur ein, zwei Bilder sein sollen kannste den FontEditor missbrauchen und selber malen. ape
@Volker, wie Ape schon sagte sollte der FontEditor auch gut für Bilder oder Icons mit Transparenz geeigent sein. Die GLCD Font Routinen würden mit minimaler Erweiterung dazu in der Lage sein und sogar die Bilder komprimiert in kompakterer Form speichern. Bisher ist bei Bildern/Icons nur ein Problem, nämlich die Farbtabelle. Diese müsste derzeitig extern über glcd_Colors[] manuell mit den richtigen Farbwerten versehen werden. Eine nun vorstellbare Neuerung könnte sein das der FontEditor Bilder/Icons so wie die Windows-Fonts importieren kann. Als zweite Neuerung müsste der FontEditor die Farbtabellen aus den Bildern ermitteln und als Header-Include speichern oder sogar gleich in die FontDaten einrechnen. Aber, auf Grund der limitierten Resourcen der AVR's würde ich immer versuchen die Bilder/Icons mit gleicher Größe in einem Font zusammen zufassen. Dadurch steigt der Effekt der Komprimierung, als wenn die Bilder eben nur einzeln betrachtet. Da die Fonts von Hause aus ihre Farbinformationen indiziert verwalten wäre es so auch ein leichtes das gleiche Bild in unterschiedlichen Farben anzuzeigen. Dazu muß vor der Darstellung des Bildes/Fontzeichens eben nur das glcd_Color[] array modifiziert werden. Die Vorteile liegen wohl auf der Hand, man hat nur einen Code für Fonts, Images und Icons, dieser Code kann jetzt schon gedrehte Ausgaben, berücksichtigt das Clipping und eigene Textwindows. Die Ausgabe dieser Fonts, Images und Icons ist über glcdDrawChar() oder sogar printF() als Texte sehr komfortabel möglich. Die Berechnung der Dimensionen eines Zeichens/ Images/Icons ist ebenfalls schon möglich. Durch den Austausch der einzelnen Fonts wären auch verschiednene Layouts der Software möglich. In meinem, so langsam dahindümpelndem Weckerprojekt, mache ich exakt von diesen Features Gebrauch. Meine Button-Glyphes und Gimmecks-Bildchens basieren auf austauschbaren Fonts. Ich nutze 4 Fonts, für jede Jahreszeit ein anderer. @Leif, jo das könnte aber noch ein bischen an Zeit verbrauchen. Grundsätzlich kann ich ohne zusätzliche Hilfe die Library nicht alleine weiterentwickeln. Zb. habe ich für Testzwecke eben kein LCD mit Epson Kontroller. Was ich aber als erstes machen könnte ist die GLCD so umzuschreiben das zukünftige Anpassungen an andere LCD's wesentlich leichter sind und einem dokumentiertem Konzept folgen. Die Library selber kann im jetzigen Zustand mit bis zu 255x255 Pixel LCD's arbeiten, was ich auch nicht geplant habe zu erweitern. Dies wäre also eine Grenze die erstmal bestehen bliebe. Vom Farbformat her gesehen würde ich ebenfalls nur 8 und 16 Bit unterstützen wollen. Gruß Hagen
@Volkmar Ja danke hatte von Hagen schon mail , war einige Tage ausser Haus. Habe meine Ausgabe erstmal am laufen ( ltoa ) , beobachte dieses Forum weiter und werde meine Anwendung erstmal weiterentwickeln. Aart
Weiß jemand, wo man an ein paar der von michael erwähnten LCD Stecker bekommen könnte? Habe hirose mal angeschrieben, aber unter muster verstehen die eine 2k rolle für 200Euro :-) es gibt im lcd-info forum, das michael erwähnt, einen link zu nem polnischen shop, wos die displays angeblich für 15e und auch die stecker gibt. aber gibt's die dinger auch in D? leif
hallo wo bekommt man dann solche displays?? und was brauch man noch alles dazu ausser nen avr mfg mathias
Hallo Matthias Wie bereits hier zu lesen war .. bei Ebay ersteigern und auf brauner Folie bestehen.. Nen AVR Testboard oder so etwas und ein Lötkolben.Und ein C-Buch, und eine Anwendung ..und eine Stromversorgung und... und.. Ist ein wenig eine schwierige Frage .. Gruß... Aart
Hallo ich hab da noch ne Frage. Ich hab da weiter oben gelesen das die mit der günen Folie nicht so gut sind! Aber bei Ebay gib es laut Fotos fast nur solche. Funktionieren die jetzt überhaupt nicht oder ist das mit dem Stecker das einzige Problem?? Denn Fädeltechnik behersche ich eigentlich ganz gut! wenn das das einzige ist! danke im voraus mfg mathias
hallo mathias, such erstmal das ganze forum nach nokia display, 6100 und so ab. guck auf apes seite apetech.de, lad dir die bibliothek runter, lies dich ein! da steht dann zum beispiel, daß die mit grüner folie einen epson controller haben, den du mit hagens lib nicht benutzen kannst. yampp.com hat aber auch firmware-support für die epson displays, glaube ich. viel erfolg, leif
Hi, ist es auch möglich daß man den Bildinhalt in 90-Grad-Schritten drehen kann? Ich denke daß man da doppelt so viel Speicher dafür braucht. Was meint ihr dazu? Also zuerst normal anzeigen, dann 90 Grad drehen, nochmal 90 Grad drehen und dann nochmal 90 Grad drehen. Ist das programmtechnisch ohne viel Aufwand möglich? Armin
Wieso denn das? Da gibt es glcdSetOrientation(x); Mit x = 0 und dann zum 2. Male x=1 wird die Ausgabe um 90 grad gedreht , also eine Zeile und dann nochmal ausgeben.. Für mich wäre ein drehen um 1 Grad interressanter für z.B. ein Kompass , aber das ist mehr arbeit...
Korrekt, mit glcdSetOrientation() kann die KOMPLETTE Ausgabe in Schritten von 90 Grad gedreht werden. Wichtig dabei ist der Punkt das man mit dieser Funktion das gesammte Koordinatensystem dreht. D.h. eine Grafikausgabe mit hardcodet Korrdinaten für Linien, Kreisen und Fonts muß in keinster Weise geändert werden. Es reicht der Aufruf von glcdSetIOrientation() und schwups wurde die komplette Ausgabe rotiert. @Aart: Für einen Kompass oder andere winkelbasierende Ausgaben ist es immer besser wenn man die Zeichroutinen von vornherein mit Winkelberechnungen ausstattet. Eine Rotation des Displays ist nicht so günstig. Es bleibt aber eben noch das Problem der rotierten Fonts bestehen. Die Frage ist ob es dann nicht besser ist einmalig einen Bitmap zu zeichnen die diese Informationen enthält. Die glcdSetOrientation() Funktion ist primär dazu gedacht das man das Display hardwaretechnisch so einbauen kann wie man es möchte, ohne das man am Source was ändern muß. Oder um die Anzeige der Daten abhänig von der Displaylage zum machen, wie beim Thungsten T3 den man ja auch senkrecht oder waagerecht halten kann. Gruß Hagen
Ja Hagen habe ich verstanden .. Habe nämlich mein Uwatec Tauchkompass verloren ( der See nimmt und gibt ) und spiele noch mit der Idee nen neues zu bauen , da wäre ein rotierende Rose schön .. Allerdings gabs das beim Uwatec auch nicht , lediglich ein Gradanzeige als Zahl und Pfeile die der abweichung vom Kurs zeigten. Aber zuerst mein Funkgerät , dann weiter. Gruß.. Aart
Hallo so jetzt hat man mir das falsche display geschickt!! Vorsicht bei Ebay gibt es anscheinend Verkäufer die einem Sagen sie haben eines mit brauner Folie und dann schicken sie aber eines mit grüner!! kann mir jemand vielleicht von dem grünen die pin belegung sagen!! mfg mathias
Da Nokia das Display mit dem grünen Kabel als 2nd source einsetzt, sind die stecker und damit auch die Pinbelegungen identisch mit denen vom Display mit dem grünen Kabel...
Könnte mir vielleicht jemand sagen was ich für ein Display kaufen muss? Auf apetéch.de steht das ich das mit der braunen flexiblen Leiterplatine kaufen soll. Was meint er da? Soll die Quadratförmige Erweiterung braun sein oder die Folie nahe dem Display. Ich frage weil ich schon alle Kombinationen auf ebay gesehen habe und ich mir wegen des Controllers dann doch sehr unsicher bin
@olli hab es bisher noch nicht ausprobiert, aber soweit ich hier alles richtig lese, muss unten das quadrat braun sein,damit man den phillips hat
Hallo, an Alle ! Probiere schión seit 2 Tagen das Display anzusteuern, leider bis jetzt ohne Erfolg. Kann mir vielleicht einer ein Screenshot des Signalverlaufs zuschicken ? Meine Messung ist im Anhang. mfg Daniel
hallo, kann leider nichts konstruktives beitragen allerdings hätte ich eine Frage. Und zwar finde ich bei Ebay nur Displays mit grüner Platine unten. Weiß vielleicht noch jemand eine andere Quelle wo ich eins mit brauner Platine herbekommen könnte? Wäre echt nett :) Danke, mfg hannes
Hallo, hier scheint das richtige zu sein: http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&category=40571&item=6313740611&rd=1 mfg Daniel
Hallo, die Auktion habe ich auch gefunden gehabt - und habe den Verkäufer auch angeschrieben aber das Bild scheint nicht zu stimmen: "Nein, soweit ich das sehen und beurteilen kann, sind sie da grün." Mfg
Hallo ape, hab das gleiche Prob wie Kay: >hallo ape, >habe das nokia 6100 display mal angeschlossen. hängt bei mir an nem >AT90S8535 mit 4 Mhz an Portc. Wenn ich einen Reset am AVR mache, dann >kommt das testbild. aber nur ca. 1 sekunde lang. dann geht das >display >wieder aus ( also die hintergrundbeleuchtung bleibt an ). >was kann das sein ? Die Dauer ist etwa 6 Sekunden bis das Display ausgeht... Ich benutze aber die neue lib v2.2 mit dem mitgelieferten Testfile compiliert für mega8 @ 4MHz mit 3,2V.
Habe mir jetzt auch bei Ebay so ein Display ersteigert aber natürlich ist es mit diesem kleinen grünen Anschluß, den ich nicht so einfach handhaben kann. Wo sind da Pin 1 und die weiteren denn nun genau? So schön das hier ansonsten beschrieben ist, ohne wirkliche Beschaffungstipps für das Display mit brauner Anschlußleitung bleibt das hier eher eine schöne Fiktion. Zumal ich die Version mit Lesemöglichkeit (Philips-Controller) als sehr sinnvoll erachte, um Grafik in das bestehende Bild reinzuodern oder ähnliches.
Man muß die Anbieter vorher fragen ob es braune Folien sind , ich habe letzte Woche so 4 stück gekauft , kein Problem. Frage am besten mal ob er noch welche hat ... Artikelbezeichnung: LCD Farb Display f. Nokia 6100 6610 6610i 7250 7250i Artikelnummer: 6335546383 Sofort-Kaufen-Preis: EUR 22,99 Menge: 4 Zwischensumme: EUR 91,96(Ohne Verpackung und Versand) Mitgliedsname des Verkäufers: wwcomshop E-Mail-Adresse des Verkäufers: ww.com@t-online.de Name: Wolfgang Wermter Straße: Weidertsweg 4 Ort: 63517rodenbach Und gegen das ausgehen muß man Chip select Definen !! Lesen in der Anleitung von Hagen hilft ! ( Da wird einiges beschrieben in bezug auf seine Schreibtischlampe ) Gruß..Aart
> Zumal ich die Version mit Lesemöglichkeit (Philips-Controller) als > sehr sinnvoll erachte, um Grafik in das bestehende Bild reinzuodern > oder ähnliches. Vergiß es, das geht nicht. Der DisplayRAM des Controllers kann NICHT gelesen werden. Der beim Philips-Controller kann man nur einige, fast schon unwichtige, Statusinformationen lesen, und auch nur dann wenn der Hersteller des LCD's die durch die OTP Programmierung des Controllers freitgeschaltet hat. D.h. über diese OTP Zellen wird das LCD getuned beimHerstellungsprozess. Desweiteren wird darüber eingestellt was man später per Softweare mit demLCD so machen kann. Nun, die Displays die ich in der Zerre hatte unterstützten nicht alle möhlichen Features des Controllers, eben auf Grund der spezifischen Programierung der OTP Zellen. Der Epson Controller unterstützt so weit ich weis keienrlei Auslesemöglichkeiten, noch nicht mal den Status. Deshalb versucht die Firmware des Nokia Handys zu allererst das LCD als Phlips-Typ anzusprechen. Reagiert es nicht so wird es als Epson-Typ angesteuert. Aber, den DisplayRAM auslesen um dann Bilder XOR/OR/AND zuverknüpfen, unterstützen diese LCD's nicht. Man müsste einen 16KByte DisplayRAM extern im AVR/SRAM implementieren damit dies funktioniert. Und gerade weil dies nicht möglich ist mit dem LCD, wird es sehr wichtig das die GLCD ein Soft-Clipping unterstützt. Gruß Hagen
Nach Durcharbeit des Philips-Datenblatts wäre das Auslesen aber bei einer parallelen Ansteuerung kein Problem. Schade, dass die seriellen Modi so beschränkt sind. Kennt denn jemand ein Farbdisplay meinetwegen auch als TFT in Handyformat mit paralleler Ansteuerung. Beschäftige mich im Rahmen meiner Diplomarbeit mit dem Themengebiet und hab schon was mit parallelem Anschluß erstellt - anderer Controller(SSD1781), anderes Display, was aber leider kaputt gegangen ist und ich keinen Ersatz des Distributors kriegen kann. Suche deshalb geeigneten anderen Lösungsansatz.
>hallo ape, >habe das nokia 6100 display mal angeschlossen. hängt bei mir an nem >AT90S8535 mit 4 Mhz an Portc. Wenn ich einen Reset am AVR mache, dann >kommt das testbild. aber nur ca. 1 sekunde lang. dann geht das >display >wieder aus ( also die hintergrundbeleuchtung bleibt an ). >was kann das sein ? >>Die Dauer ist etwa 6 Sekunden bis das Display ausgeht... >>Ich benutze aber die neue lib v2.2 mit dem mitgelieferten Testfile >>compiliert für mega8 @ 4MHz mit 3,2V. Bei solchen Problemen helfen verschiedene Überlegungen: 1.) SPI Takt reduzieren ? 2.) PullUp's am SPI ? 3.) Länge der Kabel zum LCD ? 4.) ISP noch am SPI verbunden ? 5.) ~CS des LCD's am ~SS Pin des AVR's ? wenn ja mal auf einen anderen Pin legen und in der Datei glcd.inc umkonfigurieren. 6.) Wie sauber ist die Spannungsversorgung ? Schon mal an einer Batterie betrieben statt einem Netzteil ? 7.) XTAL define in glcd.inc auch richtig ? 8.) was hängt noch am SPI ? Gruß Hagen
9.) falls der ~SS Pin NICHT als ~CS am LCD benutzt wurde dann muß der ~SS Pin trotzdem als Ausgang definiert werden, da ansonsten das HW-SPI des AVRs unkontrolliert in den Slavemode schalten kann. 10.) MISO == ~RESET des LCD mal auf einen anderen Pin legen. Angeblich soll es schon vorgekommen sein das bei einigen AVR Typen das was bei MOSI gesendet wird Störungen intern am MISO Pin produzieren. Ich persönlich konnte das nicht nachvollziehen und vermute mal eher das am SPI noch der ISP-Programmer Probleme verursacht hat. Gruß Hagen
>Nach Durcharbeit des Philips-Datenblatts wäre das Auslesen aber bei >einer parallelen Ansteuerung kein Problem. Schade, dass die seriellen >Modi so beschränkt sind. Ich weis nicht im welchem Datenblatt du das gelesen haben willst. Im Datenblatt des PCF8833 wird zwar ein SPI und paralleles Interface beschrieben aber beide können nicht den DisplayRAM lesen, sondern nur die verschiedenen Identifikation/Status Register. Gruß Hagen
Hallo, >>hallo ape, >>habe das nokia 6100 display mal angeschlossen. hängt bei mir an nem >>AT90S8535 mit 4 Mhz an Portc. Wenn ich einen Reset am AVR mache, dann >>kommt das testbild. aber nur ca. 1 sekunde lang. dann geht das >>display >>wieder aus ( also die hintergrundbeleuchtung bleibt an ). >>was kann das sein ? >>>Die Dauer ist etwa 6 Sekunden bis das Display ausgeht... >>>Ich benutze aber die neue lib v2.2 mit dem mitgelieferten Testfile >>>compiliert für mega8 @ 4MHz mit 3,2V. >Bei solchen Problemen helfen verschiedene Überlegungen: >1.) SPI Takt reduzieren ? >2.) PullUp's am SPI ? >3.) Länge der Kabel zum LCD ? >4.) ISP noch am SPI verbunden ? >5.) ~CS des LCD's am ~SS Pin des AVR's ? wenn ja mal auf einen anderen Pin legen und in der Datei glcd.inc umkonfigurieren. >6.) Wie sauber ist die Spannungsversorgung ? Schon mal an einer Batterie betrieben statt einem Netzteil ? >7.) XTAL define in glcd.inc auch richtig ? >8.) was hängt noch am SPI ? >Gruß Hagen Ich hatte mit einem Monochrom Display ein ähnliches Problem. Als Ursache stellte sich Infrarotstrahlung heraus. Der Grafikcontroller auf dem Display wird nur durch diesen transparenten Gummi geschützt, ansonsten hat man direkte Sicht auf das "nachte" Silizium. Anscheinend verursacht die Infrarotstrahlung im Sonnenlicht und von div. Lampen Kurzschlüsse auf dem Chip, wodurch sich der Grafikcontroller aufhängt. Bei mir hat es gereicht, das ich den Chip (zwischen Anschluss und Display) mit einem lichtundurchlässigen Klebeband abgeklebt habe. Gruß Bernhard
Hallo, sorry das ich nochmal nachfrage aber ich möchte mein display nicht unbedingt gleich wieder beerdigen :-) Ich möchte das Display an mein STK500 anschliesen, mit einem ATMEGA16. Meine Frage nun wäre der Anschluss so richtig wie ich ihn hier deklariert habe?? 1 Vdigital 2,7V - 3,3V = STK = VTG über spannungsteiler 3,3k + 6,8k 2 RESET AVR PORTB.3 = STK = PORTB.3 3 SDATA AVR PORTB.2 (SPI MOSI) = STK = PORTB.2 4 SCLK AVR PORTB.1 (SPI CLK) = STK = PORTB.1 5 ~CS AVR PORTB.0 (SPI ~SS) = STK = PORTB.0 6 Vdisplay 2,7V - 3,3V = STK = VTG über spannungsteiler 3,3k + 6,8k 7 n/c --- 8 GND GND = STK = GND 9 LED- GND = STK = GND 10 LED+ 15mA - 30mA (ca. 6,4V) = STK = VTG (5V) 11 n/c ---
So wie ich das sehe wird der Controller auf dem Display bei deiner Beschaltung mit VDisplay = 5V * 3.3 / 6.8 = 2.4V betrieben und der ATmega16 im STK mit VTG=5V. Schön, d.h also das an den Pins RESET, SDATA, SCLK und ~CS durchaus 5V anliegen, sprich also 2.6 Volt mehr als an VDigital. Das könnte dann deinen Display Controller zerstören. Ich würde als erstes an deiner Stelle das STK500 auf 3.3 Volt einstellen,VTG = 3.2V. Die meisten AVR's laufen auch damit noch. LED+/LED- lässt'e erstmal unbeschaltet. Wichtig ist nur das jetzt VDigtal alle Pins des Controllers UND der AVR mit der gleichen Spannung laufen. Später kannste dann mit Spannungsteilern versuche zu arbeiten. Dabei muß VDisplay, RESTET, SCLK und auch SDATA mit jeweils einem Spannungsteiler versehen werden. Gruß hagen
Hi Leute, ich habe mir zwei Displays bei E-bay bestellt. Mit brauner Folie so wie hier angegeben. Leider sind die Lötpins unter der braunen Folie nicht vorhanden. Es gibt 2 Stk aber da steht A und K also Anode und Kadode für die Hintergrundbeleuchtung nehme ich an. Was für ein Controller ist da drauf? Phillips oder der andere? Hat jemand ein gleiches Display und Erfahrung? Wenn ich die Anschlusspins der Erweiterung nehme. Gilt dann die selbe Belegung? Gibt es ein Datenblatt zu der Belegung der Pins des Displays? Viele Grüße Ford
Hi, keine Ahnung was Du da für ein Display erwischt hast. Jedenfalls vermute ich schwer, dass Du den Epson-Controller drauf hast. Meines Wissen werden nämlich keine 6100 Displays mehr mit Philips-Controller gefertigt. Auch ich habe vor kurzem ein zweites Display bei eBay ersteigt, mit brauner Flexplatine und Goldpads und trotzdem ist der Epson-Controller drin. :-/ Gute Nachricht: Pinbelegung ist bei allen Displays gleich. Gruß, Markus
Hallo Leute, habe Displays mit dem EPSON-Contoller. Habe nun zwei Fragen: 1. Hat einer schon einen C-Code für das Ansteuern des EPSON-Controllers geschrieben? Falls nicht, dann werde ich mich wohl versuchen müssen. 2. Hat einer ne Ahnung wo man das passende Gegenstück zum 10-poligen LCD-Steckverbinder gibt (HIROSE: DF23C-10DS-0.5V, Datenblatt: http://www.hirose.co.jp/cataloge_hp/e68801060.pdf Zu 2: Ich weis, dass es bei einigen Distributoren nur 2000 Stück auf einer Rolle für ca. 450 EUR gibt. Mir reichen aber ca. 10 Stück aus! Ich denke , dass auch eine Sammelbestellung keinen Sinn macht - oder? Hat jemand ein total kaputtes Handy mit diesem Steckverbinder zum ausschlachten. Bin nicht bereit bei Ebay >20 EUR für so nen blöden Stecker (Handy) zu bezahlen. Weis einer, wo dieser Stecker noch eingesetzt wird (Gerät zum ausschlachten)? Danke für eure Mühe
Hallo Wie ich das so sehe werden wir demnächst dann auf andere Display´s gehen müssen.. leider :-(( gut das ich noch 3 habe.
@MYMeisle: den Stecker gibt es auch einzeln bei eBay (6,90 + 4 Versand): http://cgi.ebay.de/ws/eBayISAPI.dll?ViewItem&category=9397&item=6355752883&rd=1
Mit fast 11 pro Stück ein exorbitanter Preis würde ich sagen. Hab inzwischen von einem Händler wohl seine letzten Posten Displays mit brauner Folien erworben. Ich wollte gerne 5, er hatte nur noch 4.
Siehe meinen Post oben. Eine braune Folie und Goldpads bedeuten nicht (mehr) automatisch, dass es sich um ein Display mit Philips-Controller handelt. Und ehrlich gesagt sind die Epson-Controller auch nicht viel schlechter (wenn man sie verdrahten kann, also Gegenstecker oder Goldpads hat). Es ist einfach nur ein anderer Befehlssatz und Lesen über den SPI-Bus ist nicht möglich. Gruß, Markus
Hallo. Hat jemand von euch eine Bezugsquelle für das Epson-Datenblatt? Hab' hier leider nichts gefunden. Mein Display hat zwar eine Braune Platine aber keine Lötpads. Ist das ein Display mit Epson-Controller? Mfg, Moritz
Das Epson-Datenblatt findest Du hier in diesem Thread: http://www.mikrocontroller.net/forum/read-4-71176.html#85128 Volkmar
moin, hab auf ebay gekauft. 18,70 euro. zuerst hab ich es mit den widerständen und dioden versucht. keine reaktion. nun hab ich mit spannungsteiler gemacht und es funtz einwandfrei. grüsse
Hallo Martin ! Also Controller auf 5 Volt ? Alle Leitungen mit Spannungsteiler und Philips Display ? Welche Widerstandwerte?
hi, also eigentlich läuft es garnicht mehr einwandfrei. controller ist mega32 mit 8MHz auf 5V. zuerst hab ich die version mit pull up R und dioden gebaut. da hat garnix funktioniert. dann hab ich auf spannungsteiler umgebaut. dann hat die V0.5 und V2.2 funktioniert, also das demo und die testseite. allerdings hat das display nach ein paar sekunden ausgesetzt. da auf dem testport noch jede menge anderes zeug an den SPI port dran waren, wie pfostenstecker für LCD, ISP, und 3310 LCD, und jede menge kupferlackdraht, und das 6100 60cm kabel hatte, hab ich gedacht es würde an dem zuviel kabelgedöns liegen, das das display aussetzt. gesagt getan, alles vom testboard runtergeschmiessen und nur noch den anschluss und spannungsteiler für 6100 LCD. und das ergebnis war, kein bild mehr, nicht mehr mit V0.5 und auch nicht mit V2.2. dann hab ich in der V0.5 ein bischen rumgespielt: void n6100SendCommand(uint8_t cmd) { // CS auf Low setzen PORTB &= ~(0x01 << CS); // 1. Bit (Command/Data) per Software erzeugen PORTB &= ~(0x01 << SCLK); PORTB &= ~(0x01 << SDATA); // logisch 0 für Command //asm volatile ("nop"); PORTB |= 0x01 << SCLK; asm volatile ("nop"); asm volatile ("nop"); // Command byte übers SPI senden SPCR=(0x01<<SPE)|(0x01<<MSTR)|(0x01<<CPOL)|(0x01<<CPHA); SPDR = cmd; // Auf Übertragung warten und CS wieder auf High setzen while(!(SPSR & (0x01 << SPIF))); PORTB |= 0x01 << CS; // CS wieder auf 1 SPCR = 0x00; // SPI wieder disablen } erstmal hab ich das CPHA bit gesetzt. dann kamm ein bild mit der V0.5. sodass ich auf die idee gekommen bin, das es mit dem timing zu tun haben muss. mein vermutung ist/war das die per software gesetzte erste bit nicht zum denen von der hardware bits von der SPI past. ich hab nach dem SCLK auf high dann ein NOP eingesetzt ( bzw 2 ). darauf hin hats scheinbar funktioniert. aber nur für eine längere zeit ca 2 min, dann setzt das display aus. naja ganz aussetzten tut es nicht, sondern die farben ändern sich unkontolliert. ich hab dann eine schleife programmiert, sodass auf dem display einfach eine zahl hochgezählt wird. so nach 2min ändern sich die farben. dann nach 1min wirds dunkel, aber man kann sozusagen im hintergrund noch das hochzählen der zahl sehen. nach einer weiteren minute ist plötzlich wieder alles OK und die farben sind wieder wie gewollt und die zahlt zählt weiter. dann fängt das spiel von vorne an. da stimmt doch was mit dem timing nicht ? die V2.2 bekomme ich garnicht mehr ans laufen, da ich kein asm kann ( bis auf den "NOP" ), und da das timing nicht ändern kann. was sagt ihr dazu? läuft das display bei euch einwandfrei mit der unveränderten Lib von ape ? grüsse
Genau die gleiche Probleme habe ich mit der letzte Version von Hagen und mit Diodes ( BAT45) und Widerstände, binn z.Z. eine Platine am machen mit alles auf 3,3 Volt , das hatt Hagen nämlich auch so ohne irgendwelche Bauteile zwischen Controller und Display , vermutlich gibt es da doch interfaceprobleme . Danach sehen wir weiter obs dann endlich ohne aussetzer funktioniert.
Hab einen ATmega128L in 3Volt-Umgebung genommen und es klappte auf Anhieb. Ich vermisse bei dem multimedialen Testspekatkel nur reines Weiß auf dem Display. Ist alles etwas gelblich oder soll das so sein?
Es scheint wohl tatsächlich problematisch zu sein mit Spannungsteilern uä. zu arbeiten. Das Display ist elektrisch ziemlich sensibel, selbst mit reiner 3.3V Ansteuerung. Nungut, als erste Alternative würde ich immer den SPI Takt runtersetzen, da das LCD mit max. 6.5MHz laufen kann. Bei 16Mhz MCU Takt läuft das SPI mit 8Mhz und überaktet so das LCD. Meine GLCD Library ist vom SPI her auch nicht besonders SPI-Multi-Slave fähig. In der Datei "glcd00.S" bei #ifdef SPI2X sbi LCD_SPSR, SPI2X #endif diese Zeile auskommentieren. Damit würde das SPI mit halber Frequenz arbeiten. Im Source kurz darüber kann man auch die SPI Grundeinstellungen und Ports ändern. Das ist syntaktisch nicht anders als mit einem C Source. Gruß Hagen
>Hab einen ATmega128L in 3Volt-Umgebung genommen und es klappte auf >Anhieb. Ich vermisse bei dem multimedialen Testspekatkel nur reines >Weiß auf dem Display. Ist alles etwas gelblich oder soll das so sein? Bei mir ist das Weiß bläulich !!?? Gruß Hagen
Hallo, nur zur Info: Bei mir läuft das Display mit 15 MHz SPI-Clock. Allerdings muss ich zugeben, dass ich das Display in diesem Zustand nie länger als ca. 15 min habe laufen lassen, ohne es dazwischen zu resetten. Ich bin eben noch im Entwicklungsstadium... ;-) Gruß, Markus
Mich würde jetzt aber echt mal interessieren, ob ihr einen weißen Hintergrund hinbekommt. Dieses gelbliche finde ich etwas blöd. Auch einen Blaustich find ich eher unpassend. Gibt's da noch Einstellmöglichkeiten?
Ich weis nicht so recht, aber die GLCD Library initialisiert den Bildschirm-Hintergrund in einem gelblichen Farbton (ich fand dies gut). Um dies zu ändern einfach in Datei "glcd.inc" SCREEN_COLOR0 = YELLOW ändern in SCREEN_COLOR0 = WHITE, oder SCRENN_COLOR = SCREEN_COLOR0 auf SCREEN_COLOR = WHITE ändern und die GLCD neu compilieren. glcdClearScreen() benutzt nun SCREEN_COLOR als Füllfarbe zum Aufruf von glcdFillRect(). Du kannst den Bliedschrim mit zb. glcdFillRect(0,0,130,130, RED); in Rot füllen. Dies alles wäre dann ein Softeare-Problem. Mein obiges Posting bezog sich aber auf ein Hardware-Problem. D.h. wenn man mit echtem Weiß zeichnet so erscheint dies bei mir immer leicht blaulich. Das hängt sehr wahrscheinlich mit den benutzen weißen LEDs im Backlight zusammen. Gruß hagen
In kurz: die GLCD geht standardmäßig von 4 Farben aus: Hintergrund, Vordergrund, Rahmenfarbe, Schatten zu finden in Datei "glcd.h": #define glcdBkColor glcd_Colors[0] #define glcdFgColor glcd_Colors[1] #define glcdFrColor glcd_Colors[2] #define glcdShColor glcd_Colors[3] in Datei "glcd.inc" findet man die Initialisierungswerte mit #define SCREEN_COLOR0 YELLOW #define SCREEN_COLOR1 BLACK #define SCREEN_COLOR2 GRAY #define SCREEN_COLOR3 SILVER die benutzt werden um die ersten 4 Werte im array glcd_Colors[] zu initialisieren. glcd_Colors[] wird also schon standardmäßig im Program mit diesen Farbwerten vorinitialisiert. Das sollte natürlich für das eigene Projekt angepasst werden. #define SCREEN_COLOR SCREEN_COLOR0 definiert nun die Farbe die in glcdClearScreen() benutzt wird. Das nun SCREEN_COLOR == YELLOW ist liegt einfach daran das ich dies für mein Testprojekt als schön empfand :) Gruß Hagen
Hi, habe mir jetzt auch das Display bei ebay ersteigert. Es läuft wunderbar an meinem Mega8. Es soll das 3310 Display in meinem im anfangsstadium befindlichen mp3 player ablösen. Nun die frage, Wie erzeuge ich möglichst ohne zusätzliche spezial ic's die backlight spannung? Einen MAX pegelwandler soll nicht mit ins projekt, deshalb fällt diese lösung weg. PWM soll aber schon verwendet werden. Hat jemand eine idee?? Vielen dank schonmal im vorraus.. MFG Jörn
Probiers mit einer einfachen Charge Pump, Kondensator + Diode zur Spannungsverdopplung, allerdings mehr als 20mA wirst aus einem AVR Pin nicht ziehen können. Gruß Hagen
Bei 15mA ist die Beleuchtung zwar ausreichend stark, diese Stromstärke wird bei mir aber erst bei >7Volt erreicht. Bei knapp 8V ist die 30mA Obergrenze erreicht. Ich denke, man sollte dem ganzen zwecks Lebenserhaltung eine ordentliche Spannungsversorgung geben, die man dann mittels Transistor und PWM auch dimmen kann. Meine ersten Tests mit 6,2V aus einem Steckernetzteil für Digitalkameras führten zu gut 2mA und eher Dunkelheit. Wichtig für die Helligkeit ist der fließende Strom und nicht die Höhe der Spannung.
Hallo, Das mit dem Color LCD vom 6100 istb sehr interessant. Aber ich hab da mal ne Frage und zwar: 1) Hat das schon mal jemand in AVR Assembler versucht ?? 2) Wäre die Ansteuerung in AVR Assembler möglich ?? Vielen Dank schonmal in voraus. mfg. Karl
1) es gibt hier im Forum eine Library in Source -> GLCD. Ab Version 2.0 ist die vorwiegend in Assembler geschrieben. 2) ja, ist natürlich möglich. Gruß Hagen
hallo, ich hab das problem eingegrenzt. das display scheint übelst empfindlich auf überspannung zu sein. ich verwende einen 3,3V festspannungsregler. der bringt 3,35V. die 50mV scheinen schon zuviel zu sein. ich hab jetzt einen 180Ohm/4,7Kohm spannungsteiler davor gesetzt sodass die spannung 3,15V ist. nun scheint es einwandfrei zu funktionieren, bisher aber nur mit der von mir geänderten version. hät ich nicht gedacht. grüsse
Servus, habe genügend 6100 displays mit grüner Leiterplatte (an andere komme ich nicht...). Jetzt habe ich einige Fragen: 1) Dieses hat den Epson controller, oder ? 2) Hat jemand schon den Link zu dem entsprechenden Datasheet gepostet ?? Wenn nicht, könnte das bitte mal jemand machen ? 3) Wenn ich den mcu (ich nehme den Mega8L) und das Display mit 3 Si-dioden in Reihe versorge, sollte das doch auch ohne Regler gehen, stimmts ? (weil doch etwa 3x0.7V abfallen würden) 4) Wo ist eigentlich PIN 1 auf dem mini-Stecker ? Ich will ja nix falsch rum dran löten... 5) kann ich auch erstmal mit dem internen 1MHz resonator des M8 arbeiten ? Wäre supi lieb, wenn jemand die ein oder andere Antwort hätte.. Danke im Voraus !
Hi, 1) Höchstwahrscheinlich ja. 2) http://www.mikrocontroller.net/forum/read-4-71176.html#85128 4) Da ich die Quelle gerade nicht mehr finde: Pinout im Anhang Gruß, Markus
3) wenn du die anderen Leitungen per Spannungsteiler steuerst könnte das uU. funtionieren. Allerdings sind die LCD's ziemlich sensible Teile und reagieren verärgert auf Überspannung etc. 5) ja. Gruß Hagen
Tach, bin total beeindruckt, nachdem ich mich hier eingelesen habe. Hab auch schon ein Dispi. Hab mir heute alle Beiträge in diesem und in dem anderen Thread durchgelesen, aber noch nicht mit der Bastelei angefangen. Die Frage ist schon mal gekommen, hab aber die Antwort nicht gefunden: Wo bekomme ich den Hirose Stecker zum Anschluss des Dispis (mit grüner Leiterplatte) her? Gibt es andere Möglichkeiten da ein Kabel dran zu bekommen? Wenn's nicht anders geht, dann werde ich das versuchen zu löten, aber die Kontakte sehen echt klein aus. zween
Hi, habe das display zusammen mit meinem mp3 dekoder vs1001k am spi port. Mein problem ist das der vlsi und das display einen genau invertierten spi clk brauchen.. also das wenn das CPOL bit gesetzt ist funzt der mp3 dekoder nicht und anders herum. Als einzigste lösung ist mir bis jet ein inverter eingefallen.. habe mal einen mit transistor aufgebaut, http://de.wikipedia.org/wiki/Inverter für Rb hab ich 10 k und für Rc auch 10 k verwendet... leider funzt es weder mit dem vs1001k noch mit dem display :-( woran kann das liegen... oder gibt es noch eine einfacherere methode? PS: den code vom display hab ich soweit angepasst das er ohne cpol arbeitet... MFG Jörn
Hi, ich kenne mich mit Atmels nicht aus, aber warum passt Du das "CPOL Bit" nicht jeweils an das anzusprechende Peripheriegerät an? Markus
Hi, I guess you forgot to disable the SPI module by (re)setting SSPEN in order to manually set the SCK and SDO pins. Try sth. like: static void glcdDisplaySend(byte data, boolean cmd) { SSPEN = 0; SCK = 0; CSDSP = 0; SDO = (cmd == true) ? 0 : 1; SCK = 1; SSPEN = 1; spi_write(data); CSDSP = 1; } HTH, Markus
Also ich hab da mal ne Frage. Ist es auch möglich, das Nokia Display was hier angesprochen wird, direkt mit einer kleinen Kamera zu versehen, und die Videodaten der Kamera wiederzugeben. Würde mich mal interessieren. Denn wenn das ginge, könnte ich ein kleines Rechner unabhängiges System aufbaun, was für mich von Vorteil wäre, als das über den Rechner laufen zu lassen. Danke schonmal im Vorhinein. :-)
Jaime, Shouldn't you set up your SPI module for SPI mode 1,1? That would mean you have to set CKP = 1 and CKE = 0. Furthermore SMP bit should be 0, I guess. Markus PS: Your gclcd_init() seems to be okay. PPS: Watch out that you have exactly 3.3V max on all pins that are wired to the LCD.
Hi Markus, ive put rights config bits CKP=1,CKE=0,SMP=0 ... but nothing append. in other hand, lcd its power with 3.3v, but lines form PIC was directly connected to lcd... but ive put a zeners diodes to limit 3.3v and same results (i think that control lines could be at 5v... im not sure). Well, when i power up pic leds intensity goes a bit down...i dont know if this is right. With a stupid debugger (printf function via RS232)Ive resolved a pair of problems with spi, spi_write() seems doesnt works (at least with my version of compiler), ive done this function manually, now program runs completly..but lcd its black and intensity goes down when i connect it. here you are the actual code, tell me if there is something stranger please... thank you very much Markus Jaime.
errrr ive found a 'little' error... the way to put output bits... now the display seems to do something... but... no background color yet! :( i dont understand...seems to be ok!... Regards
Hallo, ich wollt mal fragen ob schon jemand eine Ansteuerrung für den Epson Controller geschrieben hat?? Mfg Ulle
Hallo zusammen! Wie habt ihr bei euren Displays verhindert, dass die braune Folie auf der Seite abreisst? Als ich heute mein Display ausprobieren wollte hab ich das ganz vorsichtig angelötet, weil ich schon gesehen hab, dass die Folie nicht sehr viel aushält und danach noch ein Stück Klebenband drüber. Sauber gelötet, Schaltung überprüft und genau in dem Moment als ich das Display anstecken wollte reisst die Folie zum Display auf der Seite ab. Mir war (ist) zum heulen. Beim 2ten Versuch will ich nicht auch wieder auf die Art ein Display ruinieren, deshalb wollt ich fragen, wie ihr das ganze sichert. Kann man den oberen Teil mit Kleber am unteren ankleben vorm löten, sodass sich das ganze nicht mehr bewegen kann. Welchen Kleber sollte man dann nehmen (Superkleber ist glaub ich ein wenig zu aggresiv oder)? mfg Fasti
Hallo! Ich habe vor das Gerät an einen ARM7 zu hängen. Auf dem Board habe ich per Festspannungsregler einmal 1,8 und einmal 3,3V. Das Display verbinde ich 1:1 mit dem ARM-SPI-Controller. Sollte ich Vdigital und Vdisplay an 1,8 oder 3,3V hängen? Muß die Reset Leitung auf MISO gelegt werden? Wie verdrahte ich das LCD+ und - mit meinem MAX323 auf dem ein Rx-Tx Port noch frei ist? mfg D.C. PS: das die bibliothek um-/ neugeschrieben werden muss ist klar und stellt kein problem dar.
Hi Daniel, > Sollte ich Vdigital und Vdisplay an 1,8 oder 3,3V hängen? An 3,3V. > Muß die Reset Leitung auf MISO gelegt werden? Nein, nur MISO hast Du eben noch frei, da die Datenleitung des (Philips-)Displays bidirektional ist. Du kannst den Reset aber auch auf einen anderen digital Outputpin legen. Gruß, Markus
> Wie verdrahte ich das LCD+ und - mit meinem MAX323 auf dem ein Rx-Tx > Port noch frei ist? Für die Hintergrundbeleuchtung? naja den - an GND und den + mit nem Vorwiderstand an den Tx-Out vom MAX323. Den Tx-In dann an nen PWM-Pin vom Controller, oder wenn keine Helligkeitsreglung benötigt wird direkt auf GND (Der MAX invertiert das Signal ja, so dass bei Eingang low der Ausgang high ist). Die Größe des Vorwiderstandes hängt von der Spannung ab die der Max am Ausgang macht. Bei 12V müssten 180Ohm ganz gut passen... Im Zweifel nen Poti und so einstellen das es passt :)
Danke für die Antwort. Müßte nicht nach dem TxOut dann ein Spannungsteiler mit zwei Widerständen kommen der die 12V aufteilt? Wie errechnen sich die 180 Ohm? Danke, Karl
Ich habe das Backlight anders am MAX angechlossen MAX.TX1_out -> LCD.LED+ MAX.V- -> LCD.LED- An V- liegt normalerweise C4- an. Erst wenn TX1_in auf +Vcc geht kann so eine Gesamtspannung von ca. 10 Volt an den LEDs anliegen. Schliesst du LED- an GND an so hast du nur die halbe Spannung. Klar, Vorwiderstnd nicht vergessen um den LED Strom zu begrenzen. TX1_in habe ich am OC1A Pin des AVR's angechlossen und kann so das Backlight dynamisch dimmen. Der Gesamtstrom den man über V- entnehmen kann liegt nur bei ca. 30-40 mA laut MAXIM Application Note. Die PWM die ich auf OC1A ausgebe hat einen maximalen Dutycycle von 60%. Gruß Hagen
hi, heute hab ich endlich ein board mit einem 128L gebastelt und alles läuft mit 3,3V. nun endlich läuft das display einwandfrei. grüsse
@fasti: schau dir das Foto an: ich habe eine Zwischenplatine an das Display geklebt, wo dann die großen Kabel dran sind. Dann können auch keine Kabel abreißen. Peter
@Peter: Danke, die Idee is gut! Werd ich dann auch mal so machen. mfg Fasti
Hallo Kann jemand sagen bis wann das Philips Display verbaut wurde und ab wann das mit dem Epson? Ich brauche noch dringend so ein Teil da meines gestern leider runtergefallen is! :-( Andreas
Hallo Andreas, kanst du bei megaboss in polen bestellen, kostet 18 euro: http://www.magboss.pl/product_info.php?products_id=638 Gruß, Andre
Witam Może wiecie jak zrobić zeby S1D15G14 wyświetlał ruchome obrazki (gify)
Hallo, zuerstmal super Code funktionierte auf anhieb! Nun zu meinen Fragen: Also ich habe 4 Displays, eines wie beschrieben mit brauner Leiterfolie und Goldpads, zwei mit brauner Leiterfolie ohne Goldpads und eines mit grüner Leiterfolie. Das erste was wohl den Phillips Controller hat das funktioniert 100% Die anderen beiden mit der Braunen Foilie ohne Goldpads funktionieren auch, allerdings mit enormen Farbunterschieden, das Grüne funktioniert logischerweise nicht. Nun meine Frage hat schon jemand mit den Displays ohne Goldpads gearbeitet? Oder kann mir jemand erklären wie genau die Farbeinstellung vorgenommen wird? Bei diesen Display ist z.b. Orange = Blau was bei dem Display mit Goldpads richtig angezeigt wird. Wäre über Infos dankbar euer Tom
Also wenn du dich auf die GLCD Version 2.2 beziehst: In glcd00.S findest du: #ifndef USE_HIGHCOLOR #ifdef USE_ORGINALCOLORS COLOR_RED: // original color table .byte 0x00, 0x02, 0x04, 0x06, 0x09, 0x0B, 0x0D, 0x0F COLOR_BLUE: .byte 0x00, 0x04, 0x0B, 0x0F #else COLOR_RED: // modified color table .byte 0x00, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F COLOR_BLUE: .byte 0x00, 0x08, 0x0B, 0x0F #endif #endif Du kanst also zb. in glcd.inc #define USE_CLIPPING // support clipping // #define USE_HIGHCOLOR // 65536 color mode // #define USE_ORGINALCOLORS // in 256 color mode use original color table // #define USE_AUTOINIT // call glcdDisplayInit() automaticaly on startup das #define USE_ORIGINALCOLORS wieder aktivieren und dann die komplette Library neu kompilieren. Das bewirkt dann das in Datei glcd00.S eine andere Farbtabelle geladen wird. Du kannst aber auch in glcd00.S deine eigene Farbtabelle definieren. Das alles bezieht sich natürlich nur auf den 256 Farben Modus der LCD's. Das LCD mappt dabei 256 Farben in sein internes 12Bit Farbformat. Dazubenötigt es 3 Bits für den Rot und Grün und 2 Bits für den Blau Anteil. 3+3+2 = 8 Bit -> 256 Farben. In den obigen Tabellen also 8 Einträge a 4 Bit für Rot und Grün und 4 Einträge für Blau a 4 Bit. Ergibt also 4+4+4 = 12Bit effektive Farbe. Wenn man also einen 8Bit Pixel setzt, so wird dieser in 3r+3g+2b Bit zerlegt. Diese Bits ergeben dann den Index in die geladene Farbtabellen -> 8r,8g,4b Einträge und dort stehen dann 4r+4g+4b Bits = 12Bit an Farbinformation zum setzendes Pixels. So funktioniert das Colormapping im 256 Farben Modus in die internen 4096 Farben. Man benötigt also nur 20 Bytes als Farbtabelle. Gruß Hagen
So wandle ich Pegel von 5V auf 3.3V (bidirektional!) C --------------Controller 5V-Pegel 10K | / 3.3V--[]--B| BC847 fix | \ v E ------------- Display 3V-Pegel Läuft einwandfrei bei LCD für 3210....
Hallo, gibt es eine (einfache) Möglichkeit bei der Ausgabe von Strings eine bestimmte Anzahl von Pixeln zu überspringen? Hintergrund ist der, das ich einen relativ langen Text auf dem Display in einer Zeile ausgebe und dieser dann hin und her scrollt. Momentan mach ich das so, das ich das Clipping des Displays auf die Breite des Scroll-Feldes beschränke und dann die X-Start-Koordinate der String Ausgabe nach links rausschiebe. Problem dabei ist, das wenn der Text breiter als 256 Pixel ist, wandert er auf der rechten Seite wieder rein. Eine mögliche Lösung wäre einfach die ersten Zeichen, die schon nicht mehr zu sehen sind, wegzulassen. Das ist aber eigentlich keine schöne Lösung, da die Zeichen ja unterschiedliche Breiten haben können und ich daher nicht weiß wieviele Zeichen ich weglassen muss, wenn der Text eine bestimmte Anzahl von Pixeln aus dem Bild gewandert ist. Lange Rede kurzer Sinn: lässt sich die Lib auf einfachem wege so anpassen das einfach eine bestimmte Anzahl von Pixeln bei der Text-Ausgabe weggelassen wird?
>> wandert er auf der rechten Seite wieder rein.
Das liegt an deinen Koordinaten, diese sind ja intern nur 1 Byte breit,
ergo 255 ist die höchste Koordinate.
Du möchtest beim Zeichnen eines Strings einen Offset angeben können der
sozusagen Pixelorientiert innerhalb des Strings zeigt. Ab diesem
Pixeloffset soll dann der Text an der X Koordinate gezeichnet werden.
Ok, glcdPrint() ruft intern ja glcdCharsCallback(text, flashstored,
glcdDrawChar()); auf. D.h. du kannst deine eigene glcdPrint() funktion
schreiben die nun mit einem Offset arbeitet, etwa so
void glcdPrintAtOffset(char *text; int16_t offset) {
uint8_t charwidth;
while (offset >= charwidth = glcdCharWidth(text)) {
offset -= charwidth;
text++;
}
glcd_Cursor.x -= offset;
glcdPrint(text, 0);
}
ich glaube so ähnlich müsste es gehen. Im Grunde rechnest du von Hand
mit Hilfe der Breite der Zeichen selber den Start des sichtbaren Textes
und dessen Pixeloffset innerhalb des gerade noch sichtbaren Zeichens
aus.
Gruß Hagen
sorry in der schleife muß noch auf den Null-Terminator im Text geprüft werden: void glcdPrintAtOffset(char *text; int16_t offset) { uint8_t charwidth; while ((text^ != #0) and (offset >= charwidth = glcdCharWidth(text))) { offset -= charwidth; text++; } glcd_Cursor.x -= offset; glcdPrint(text, 0); }
Ok danke funktioniert hab das noch ein wenig editiert um auch Strings im Flash zu unterstützen, außerdem übergebe ich noch die Länge des zu zeichnenden Stücks und pute die Zeichen einzeln, da sonst beim Zeichnen des Strings mit offset=0 mit glcdPrint(), der String ja wieder auf der linken Seite ins Bild wandert. Meine Funktion sieht jetzt so aus: void glcdPrintOffset(const char *text, uint8_t flashstored, int16_t offset, int16_t length) { uint8_t width; char c; if(flashstored) { c = pgm_read_byte(text); } else { c = *text; } // So viele Zeichen überspringen, bis offset erreicht ist while(c != 0 && offset >= (width = glcdCharWidth(c))) { offset -= width; if(flashstored) { c = pgm_read_byte(++text); } else { c = *++text; } } glcd_Cursor.X -= offset; length += offset; // so viele Zeichen puten bis length erreicht ist while(c != 0 && length > 0) { glcdPut(c); width = glcdCharWidth(c); length -= width; if(flashstored) { c = pgm_read_byte(++text); } else { c = *++text; } } }
kleine Verbesserung in der Performance, glcdDrawChar() = glcdPut() mit dem Unterschied das glcdDrawChar() die Pixelbreite des gezeichneten Zeichens zurückgibt. glcdPut() ist eher als Callback für die C Runtime Funktionen gedacht. // so viele Zeichen puten bis length erreicht ist while(c != 0 && length > 0) { width = glcdDrawChar(c); length -= width; if(flashstored) { c = pgm_read_byte(++text); } else { c = *++text; } Ansonsten habe ich mal deinen Source in meine GLCD intergiertum sie in einer eventuell neueren Version mit einzubauen. Und eventuell am Anfang deiner Routine noch uint8_t flags = glcd_Flags.All; glcd_Flags.AutoLineFeed = 0; und am Ende dann glcd_Flags.All = flags; einfach um den automatischen Zeilenumbruch zu deaktivieren, da dieser ja für diese spezielle Anwendung eher störend sein dürfte. Gruß Hagen
Möchte nochmal wegen dem Levelshifting nachhaken. Ich lese hier im Thread von diversen Problemen mit der Umsetzung von 5 auf 3 Volt. Die einen schwören auf den Spannungsteiler, der aber auf dem Osszi nicht so doll sein soll, die anderen gehen den Weg mit den Dioden (entweder Z-Dioden oder BATs) und dann seh ich die Sache auch noch mit nem Transistor, wobei mir die Bidirektionlität nicht klar ist. Was ist denn nun die wirklich beste Lösung? Das Gesamtsystem mit 3V laufen zu lassen scheidet bei meinem Vorhaben definitiv aus. Ich möchte meinen ATmega128 mit 16 MHz laufen lassen und so ein Maximum an Rechenzeit bei stabilem Betrieb rausholen.
Nachtrag: Geht die Sache nicht auch mit 'nem richtigen Levelshifter wie dem 74LVX244 oder dem SN74LVC4245 von Texas Instruments?
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.