www.mikrocontroller.net

Forum: Codesammlung Nokia 6100 Ansteuerung in C

Autor: ape (Gast)
Datum: 08.03.2004 04:11
Dateianhang: nokia6100.rar (7,5 KB, 1266 Downloads)

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 :)
Autor: Conlost (Gast)
Datum: 08.03.2004 14:01

Hallo ape,
klingt interessant, ich warte auf die Bilder.
Aber sag mal, wann schläfst du eigentlich? :-))
Gruß,
Arno
Autor: ape (Gast)
Datum: 08.03.2004 15:32
Dateianhang: n61001_l.jpg (125,7 KB, 3913 Downloads)
preview image for n61001_l.jpg

so nu gibs auch bilder z.B. dieses hier :)
Autor: Martink (Gast)
Datum: 08.03.2004 16:46

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
Autor: ape (Gast)
Datum: 08.03.2004 18:00

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
Autor: ape (Gast)
Datum: 08.03.2004 18:14

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.
Autor: Conlost (Gast)
Datum: 08.03.2004 18:40

Könnte es sein, dass es zu warm wird aus irgend einem Grund?
Gruß,
Arno
Autor: ape (Gast)
Datum: 08.03.2004 19:09

ne da wird nichts warm der größte stromabnehmer is die
hintergrundbeleuchtung mit ca. 15mA
Autor: Kay (Gast)
Datum: 08.03.2004 19:54

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 ?
Autor: Kay (Gast)
Datum: 08.03.2004 22:07

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
Autor: ape (Gast)
Datum: 08.03.2004 22:58

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...
Autor: Kay (Gast)
Datum: 08.03.2004 23:04

hi ape,

würde gerne deine main.c mal probieren. ich kenn mich mit c net aus.
wie kann ich das anstellen ?

mfg Kay
Autor: ape (Gast)
Datum: 09.03.2004 00:13
Dateianhang: nokia6100.rar (11,6 KB, 802 Downloads)

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
Autor: ape (Gast)
Datum: 09.03.2004 02:24

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
:)
Autor: Kay (Gast)
Datum: 09.03.2004 12:58

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
Autor: ape (Gast)
Datum: 09.03.2004 19:23

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
Autor: Kay (Gast)
Datum: 09.03.2004 19:55

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
Autor: ape (Gast)
Datum: 09.03.2004 20:06

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
Autor: Kay (Gast)
Datum: 09.03.2004 20:12

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
Autor: Martin (Gast)
Datum: 12.03.2004 11:47

@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
Autor: Hagen (Gast)
Datum: 12.03.2004 11:53

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
Autor: Hagen (Gast)
Datum: 12.03.2004 11:56

Ich meine eine Animation mit 32x32 Pixel ist auch gut, und man kommt auf
akzeptable 40 fps.

Gruß Hagen
Autor: ape (Gast)
Datum: 12.03.2004 12:53

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.
Autor: Dude (Gast)
Datum: 12.03.2004 12:57

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!
Autor: ape (Gast)
Datum: 12.03.2004 13:15

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
Autor: Dude (Gast)
Datum: 12.03.2004 13:24

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
Autor: Dude (Gast)
Datum: 12.03.2004 13:49

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
Autor: ape (Gast)
Datum: 12.03.2004 14:03

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
Autor: Hagen (Gast)
Datum: 12.03.2004 15:56

Das n6100 kann mit 6.5MHz Sclk betrieben werden :)

Gruß hagen
Autor: Robert (Gast)
Datum: 15.03.2004 08:12

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
Autor: Mattias (Gast)
Datum: 15.03.2004 08:34

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
Autor: Kay (Gast)
Datum: 15.03.2004 11:36

hi,

ist schon toll wenn man C kann. ich kann nur Bascom und werde das
wahrscheinlich net hinbekommen.

naja, viel spaß noch

gruß Kay
Autor: Hagen (Gast)
Datum: 15.03.2004 12:50

@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
Autor: ape (Gast)
Datum: 15.03.2004 16:16

@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.
Autor: Hagen (Gast)
Datum: 15.03.2004 20:57

Man sollte bei eBay die Display nehmen die an der Seite keine grüne
Lasche haben !?

Gruß Hagen
Autor: Robert (Gast)
Datum: 17.03.2004 12:28

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
Autor: AVRFreak (Gast)
Datum: 19.03.2004 14:37

Verkauft jemand ein Nokia Display 6100 ????
Autor: ape (Gast)
Datum: 20.03.2004 22:12

***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
Autor: Stefan Seegel (Gast)
Datum: 23.04.2004 00:15

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
Autor: Matthias Friedrich (Gast)
Datum: 23.04.2004 00:51

Da man SPI keine bidirektionalen Leitungen verwendet werden reichen
einfache Spannungsteiler aus 2 Widerständen.
Autor: Roman Rohde (Gast)
Datum: 23.04.2004 08:04

> 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
Autor: Hagen (Gast)
Datum: 24.04.2004 00:42

>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
Autor: Aart (Gast)
Datum: 24.04.2004 23:36

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
Autor: ape (Gast)
Datum: 25.04.2004 00:15

funktioniert doch aber auch nicht bidirektional oder?
und unidirektional gehts mit nur 2 widerständen als spannungsteiler
leichter
Autor: Hagen (Gast)
Datum: 25.04.2004 09:12

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
Autor: Aart (Gast)
Datum: 25.04.2004 12:37

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
Autor: Hagen (Gast)
Datum: 25.04.2004 13:05

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
Autor: Aart (Gast)
Datum: 25.04.2004 13:19

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!!
Autor: Aart (Gast)
Datum: 25.04.2004 13:40

Vielleicht habe ich doch noch was falsch gemacht beim unstellen auf
ATMEGA16..?? oder ist mein 4 MHZ Quarz zu wenig?
Autor: ape (Gast)
Datum: 25.04.2004 13:43

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
Autor: Aart (Gast)
Datum: 25.04.2004 13:47

Hai Ape
Sorry das war mir klar
Habe 6k8 oben und 12 k unten..

und Prog reinschieben geht auch ok
Autor: Aart (Gast)
Datum: 25.04.2004 13:49

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..
Autor: Aart (Gast)
Datum: 25.04.2004 14:17

Da gibts DELAY_ONE_MILLISECOND  ( XTAL  4  1000 )  // Must > 8   in
glcd.inc
und ich habe nur 4 MHZ....
vielleicht?
Autor: Hagen (Gast)
Datum: 25.04.2004 14:37
Dateianhang: glcd.zip (331,3 KB, 17185 Downloads)

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
Autor: Aart (Gast)
Datum: 25.04.2004 15:06

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 !!
Autor: Aart (Gast)
Datum: 25.04.2004 15:36

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
Autor: Hagen (Gast)
Datum: 25.04.2004 16:49

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
Autor: Hagen (Gast)
Datum: 25.04.2004 16:54

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
Autor: Aart (Gast)
Datum: 25.04.2004 17:32

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.
Autor: Aart (Gast)
Datum: 25.04.2004 17:44

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
Autor: Aart (Gast)
Datum: 25.04.2004 18:54

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
Autor: Aart (Gast)
Datum: 26.04.2004 22:45

Da war ich wol Müde , der 4011 ist für den Quarzoscillator
Autor: Aart (Gast)
Datum: 26.04.2004 23:41

@Hagen

Mein ATMEGA16 ist kein L -Type also geht nur auf 5 Volt..

Denke drüber nach doch ein STK500 mit 501 zu kaufen...
Autor: Hagen (Gast)
Datum: 27.04.2004 01:18

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
Autor: Hagen (Gast)
Datum: 27.04.2004 01:28

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
Autor: Aart (Gast)
Datum: 27.04.2004 17:24

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
Autor: Aart (Gast)
Datum: 27.04.2004 20:11

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
Autor: Hagen (Gast)
Datum: 28.04.2004 00:09

> 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&i...


Gruß hagen
Autor: Aart (Gast)
Datum: 28.04.2004 01:15

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
Autor: Hagen (Gast)
Datum: 28.04.2004 07:23

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