Forum: Projekte & Code Nokia 3310 Lcd Ansteuerung in AVR-GCC


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Deramon (Gast)


Angehängte Dateien:

Lesenswert?

Ansteuerung über hw SPI des Grafik LCD vom Nokia 3310.
Features:
Textausgabe, Pixel, Bilder zeichnen.
Displayram wird im AVR zwischengespeichert.

Der Code wird noch erweitert(vorerst Linien zeichnen und Textscroll).
Updates gibt es demnächst bei http://www.deramon.de

von MNR (Gast)


Lesenswert?

Hallo Deramon,

habe deinen Code mal gerade auf einem 3.3V ATMega16 laufen lassen,
funktioniert (nach Änderung der PINS natürlich) super! Danke dafür!

Gruß Matthias

von Deramon (Gast)


Lesenswert?

auf meiner Homepage gibt es jetzt auch ein kleines Tool zum umwandeln
von 1bit Bitmaps 84x48pixel in eine header Datei für mein Script bzw.
in eine binäre Datei.

von Sascha (Gast)


Lesenswert?

@Matthias:
Kannst du evtl. die Datei von dir Posten, oder einen Auszug, welche
Pinne du beim Mega 16 verwendet hast?
Habe es nämlich mit einem Mega 16 versucht und nicht am laufen
bekommen, einen Mega 128 habe ich nicht, und wollte es halt auf einem
16 versuchen...
Gruss Sascha

von Andreas (Gast)


Lesenswert?

hallo Deramon!
Wir machen in der Schule als Projekt einen GPS-Empfänger und wollen die
Daten über ein 3310-Display ausgeben.
Meine Frage: Ist es möglich das Display mit einem AT89C2051
anzusteuern?
Wird dein Bsp. von jedem µC-Compiler unterstützt und wieviel Speicher
benötigt die Ansteuerung??
mfg 2 überforderte HTL-Schüler

von Deramon (Gast)


Lesenswert?

@ Andreas:

Das Bsp. ist für AVR MCs. Mit 8051ger MCs hab ich nicht allzuviel
bisher gemacht, aber ich vermute das mit einer Anpassung der Ports und
des HW SPI es funktionieren sollte.

Zum Speicherverbrauch. Da man das Displayram nicht auslesen kann cached
der MC die 504 bytes. Für eine reine Textausgabe kann man sich das
cachen und somit 504 bytes SRAM sparen(ist eigentlich nur für
Grafikfunktionen interessant, da man immer 1 byte also 8 Pixel an das
LCD senden muss und ohne Cache beim setzen eines Pixel die restlichen 7
überschrieben werden)
Im Programmflash werden mit PROGMEM die Bilder abgelegt, pro Bild 504
bytes. Ob es so eine funktion bei den 8051ger MCs gibt weis ich leider
nicht, zur not muss man die Bilder dann im SRAM ablegen.
Hier ein Auszug des gesamten Speicherverbrauchs:
Size after:
drm3310test.elf  :
section    size      addr
.data        70   8388864
.text      2632         0
.bss        588   8388934
.noinit       0   8389522
.eeprom       0   8454144
.stab      3444         0
.stabstr   2947         0
Total      9681

Ich habe mir das eben mal in der Anleitung zu AVR-GCC angeschaut und
wenn ich das richtig verstanden habe benötigt das Programm + 1 Bild
2632 bytes Programmflash, SRAM wären dann 588+70 = 658 bytes. .stab und
.stabstr müssten dann die Debuginfos sein die aber nicht auf den MC
geflasht werden.

von Volkmar (Gast)


Lesenswert?

Die Berechnung Flash/SRAM ist nicht ganz korrekt:

.text + .data = ROM (Flash) Usage
.data + .bss + (.noinit) + (stack) + (heap) = RAM Usage

.text is your code
.data is your variables with initialized values
.bss is your variables without initialized values

Also Flash = 2632 + 70 = 2702 Bytes
     RAM   = 70 + 588 = 658 Bytes + (stack) + (heap)

Für einen '51er kann der Speicherverbrauch (zumindest Flash) aber ganz
anders aussehen.

Volkmar

von Roman (Gast)


Lesenswert?

Für was ist eigentlich der 74LVC245DW zuständig?

von Kai Markus Tegtmeier (Gast)


Lesenswert?

@Roman:

Der macht die Pegelwandelung zwischen dem mit 5V laufenden AVR und
dem mit 3,3V laufenden Display.

KMT

von Roman (Gast)


Lesenswert?

Da der 2051er mit 3,3V lauft kann ich das somit weg lassen.. perfekt..
danke

von Daniel Lancelle (Gast)


Lesenswert?

Hallo Leute!
Ich hab auch so ein Nokia 3310 display bei mir rumliegen. Ich hab schon
versucht es anzusteuern, aber irgendwie funktioniert es noch nicht.
Braucht man wirklich 3,3V Pegel oder reichen auch 3V?

Gruss Daniel

von Thorsten (Gast)


Lesenswert?

Es sollte eigentlich ab 2.7V funktionieren (bis 3.3V).

Thorsten

von Robert (Gast)


Lesenswert?

Hallo,

Habe das 3310 Display am Mega8 angeschlossen, Pins in die
Header file angepasst, und klappt (toll), aber nur für 50%.
Mit Wiederstände die Logiknivo's angepasst, und mit eine
LED die Versorgungsspannung vom Display auf 3,2V bekommen.

Habe aber die Zeichen auf das Display in Spiegelbild ....?????.....
Und nein, habe das Display richting montiert.......

Jemand der weiß was hier das Problem ist???

MfG,

Robert

von Thorsten (Gast)


Lesenswert?

Softwarefehler. Schau mal hier in der Codesammlung, da gibts fertige
Routinen. Auf www.microsyl.com gibts auch was.

Thorsten

von Deramon (Gast)


Lesenswert?

Ich weis nicht wo da der Fehler ist. Ich habe das Display eben nochmal
angeschlossen und 2 Bilder von der Ausgabe gemacht und da wird es
richtig angezeigt:
http://www.deramon.de/avr/nokia01.jpg
http://www.deramon.de/avr/nokia02.jpg

von Robert (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Anbei was ich sehe, aber dann viel scharfer.....
Leider ist mir das Foto nicht so gelungen.

Benützte avr-gcc (GCC) 3.3.2, Pins umdefiniert
nach Mega8....

Die zwei Grafiken auf das Schrim werden auch falsch
wiedergegeben... Veilleicht das das Display selbst
das Problem ist.....

MfG,

Robert

von Armin Kniesel (Gast)


Lesenswert?

Hallo,

kann jemand sagen wo man diese Displays AUSSER BEI EBAY kaufen kann?
Ich meine da größere Stückzahlen.
Wo kauft die Nokia ein? Am liebsten direkt vom Hersteller.

Armin

von PIC-User (Gast)


Lesenswert?

Probiersmal mit Sammelbestellungen aus China. Kostet Dich dann 3€ inkl.
Steuern und Versand. Aber!!! ab 1000 Stück!

Ebay Tipp:
Kauft bloss nicht bei Chipgigant!, Xullu! (EBAY) Das sieht auf den
ersten Blick günstig aus, verlangt aber unkosten von 2€ extra pro
Display. Bei grösseren Mengen kann es auch passieren das über 40%
defekt sind und der Typ Sie nicht zurück nimmt.
Also meidet diesen Typen!

von Armin Kniesel (Gast)


Lesenswert?

>Probiersmal mit Sammelbestellungen aus China. Kostet Dich dann 3€
inkl.
>Steuern und Versand. Aber!!! ab 1000 Stück!

Gibts da einen Namen des Herstellers bzw. dieser Firma?
Wäre toll.

Armin

von Harald Uliczka (Gast)


Lesenswert?

Hallo zusammen,

habe einen Mega8L mit 3.68 Mhz an das Display angeschlossen, und das
Programm von Deramon geladen. Leider kann ich weder x noch y Addr
setzen. Das Display zeigt zwar den Text, aber dann fogen ein Punkt in
der untersten Zeile danach ein Punkt eine Zeile höher.(0x80 und 0x40)
D.h. Setxy wird nicht als Command sondern als Daten zum Display
gesendet. Writecommand geht aber ansonsten, da das DSisplay ja
initialisiert wird. Weiß jemand einen Rat ?

Harald

von Andreas Oyrer (Gast)


Lesenswert?

Hallo Harald,

ich hatte anfangs auch Probleme mit der Displayansteuerung. Auch bei
mir wurde der Text nicht wirklich richtig dargestellt. Das Problem bei
mir war, dass ich die MISO Leitung des ATmega als Steuerleitung für das
Display verwendet habe. Nun habe ich einen anderen Portpin für dies
Steuerleitung verwendet, MISO ist nun nicht mehr am Display
angeschlossen, und der Text/Bild wird richtig angezeigt.

Andi

von Harald Uliczka (Gast)


Lesenswert?

Hallo Andi,

danke für die schnelle Antwort. Ich habe jetzt PB4 auf PB2
geändert und jetzt geht es einwandfrei.

Gruß
Harald

von tomafa (Gast)


Lesenswert?

Hallo,

jetzt habe ich da mal die frage ob die ansteuerung was mit dem
hardware spi macht oder es auf allen ports laufen würde.

mfg

tomafa

von Andreas Oyrer (Gast)


Lesenswert?

Hallo tomafa,

die Ansteuerung wird mit dem Hardware SPI gemacht. Deshalb kann nicht
jeder beliebige Port verwendet werden.

mfg
Andi

von Harald Uliczka (Gast)


Lesenswert?

Hallo tomafa,

ja, die Ansteuerung findet über Hardware SPI gemacht, aber im Internet
gibt es aber Libraries, die auch Software gesteuerte SPI machen. Wenn
ich zufälliger weise was finde, poste ich es. Aber schau mal mit
google.

Gruß
Harald

von LittleCB (Gast)


Lesenswert?

Hi Deramon,

ich habe vor ebenfalls eni Nokia-display an einem AVR zu betreiben.
Habe auch aufmerksam deine Seite durchforstet und mir beide bibo's
runtergeladen für 3310 und 6100.
Weist du zufällig, ob das Display vom 3330 baugleich mit dem vom 3310
ist und ich deine Funktionen vom 3310 fürs 3330 verwenden  kann?!

Oder vielleicht hat es sogar schon jemand gemacht, und kann mir was
dazu sagen.

Danke im Voraus
LittleCB

von Andreas Oyrer (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

hab mir gerade ein 3310 Display ins Auto eingebaut. Momentan werden
noch keine richtigen Daten empfangen, daher "no data", aber in
Zukunft (spätestens nächste Woche) werde ich dort Aussentemperatur,
Batteriespannung, Seehöhe, Speed, Richtung in Grad,.... (GPS-Daten)
anzeigen. Momentan habe ich die Anzeige in den Rückspiegel eingebaut,
ist aber nur eine 7-Segment. Also freue ich mich schon auf die neue
Anzeige.

Ansteuern und Programmieren kann ich den Controller, ein ATmega8, über
die serielle Schnittstelle mit Bootloader. Weiters werde ich mir noch
ein Protokoll überlegen, mit CS usw. um Daten gezielt auszugeben.
Unterstützt wird zur Zeit große Schrift (12x16), kleine Schrift (5x7),
Display löschen, Text rechts, oder zentriert schreiben,....

mfg
Andi

von emil (Gast)


Lesenswert?

@ andreas:

sieht täuschend echt aus, wie ein richtiger boardcomputer, bravo!

wie hast du es mit der hintergrundbeleuchtung gemacht, el folie?
oder leds-dann hast du aber vielleicht das plastikteil darunter
abgeschnitten und als lichtleiter benutzt, oder wie?

also, nochmals, sieht gut aus, ich wurde aber doch ein nokia 6100 color
lcd nehmen und min. mega32, besser direkt mega128, kostet ja nur noch 10
eur; du wirst bestimmt mit float rechnen wollen und dann war mein mega16
mit 14 float-gleichungen 1.ordnung gleich voll :-(

von LittleCB (Gast)


Lesenswert?

@emil

du scheinst dich ja ein wenig auszukennen. Wiest du vielleicht ob des
Display eines Nokia 3330 dem Protokoll der Funktionsbibliothek eines
Nokia 3310 gehorcht?! Möchte auch demnächst unbedingt loslegen.

Applikationen gibt es ja sichtlich mehr als genug.

LittleCB

von Andreas Oyrer (Gast)


Lesenswert?

@emil

das mit der Hintergrundbeleuchtung war gar nicht so einfach. Anfangs
wollte ich SMD LEDs verwenden, doch ich habe noch einige 5mm LEDs im
Kasten gehabt. 4 davon genügen vollkommen. Den Lichtleiter, der über
das Display hinausragt habe ich abgezwickt, da ich nicht von unten,
sondern von der Seite hineinleuchten wollte. Doch die Leds haben einen
so starken Leuchtkegel, dass das nicht sehr schon ausgesehen hat.
Deshalb habe ich die LED Linse abgezwickt. Damit streut das Licht viel
mehr und ich habe eine relativ gute Ausleuchtung ohne direkte
Leuchtkegel. Ist zwar brutal, aber es funktioniert....

Das Problem bei der blauen Beleuchtung ist, dass diese relativ dunkel
ist, hellblaue LEDs wären vielleicht besser, oder auch die weiße HG
einen 6610 Displays...

Ich hatte auch überlegt, ein Graphikdisplay zu verwenden, aber das wäre
mir zu teuer gewesen. Ausserdem habe ich noch einige ATmega8 zuhause,
die ich verwenden wollte.

Das Display mit Controller wertet nur die seriellen Daten aus und zeigt
diese an. Somit brauche ich dort keine große Rechenoperationen
durchführen. Das erledigt die "Zentrale". Dort habe ich einen uralten
89S8252 verbaut, der die GPS Daten auswertet, Temperatur und
Bordspannung mißt, und seriell an das Display sendet.

Freut mich wenn es dir gefällt, war auch ziemlich viel Arbeit, das
Display dort hineinzubringen.

@LittleCB
meiner Meinung nach ist das Display vom 3310 das selbe wie im 3310.

mfg
Andi

von Andreas Oyrer (Gast)


Lesenswert?

@LittleCB

meine natürlich: meiner Meinung nach ist das Display vom 3330 das selbe
wie im 3310

von technology_madness (Gast)


Lesenswert?

Hallo!

Ich habe gerade einige Zeit damit verschwendet nach dem 74LVC245DW zu
suchen, aber ausser Datasheets nicht wirklich was gefunden...
Wo kann man den wohl beziehen? Gibt es auch Alternativen im
DIL-Gehäuse?

Danke für Antworten!

von Robert Everts (Gast)


Lesenswert?

Habe mir jetzt ein anderes Display genommen,
und klappt. Kein Spiegelbild oder anderes Fremdes
verhalten. habe nur den Reset extern gemacht mit
Wiederstand und Capacität. Tolle Sache das es so klappt.

Zu die ganze 74LVC245 Geschichte, habe einfach die
Wiederstände genommen als SpannungsTeiler. Dies ist
schon hier irgendwo gemeldet.

3 Wiederstande von je 10K in Serie vom Atmel Pin nach Masse,
und zwischen den ersten und zweiten gezählt ab die Atmel Pins
die Nokia Pins angeschlossen. Klappt auch wunderbar, gemessen so
etwa 3,1 - 3,2 Volt.

Zu Spannungsversorgung ein LED in die Versorgungsleitung vom 3310
Display, und das klappt auch wunderbar. Gemessen so etwa 3,3 Volt.
Dies alles nur im Fall der Mega nicht auf 3,3, Volt lauft....

MfG,

Robert

von Sebastian Ortmann (Gast)


Lesenswert?

Hi@all,

ich such schon ewig lange nach einer möglichkeit texte auf einem handy
LCD anzeigen zu lassen. Am besten über den Computer. Braucht man dafür
noch was bestimmtes, oder geht das nur mit den Teilen von dem Handy?
Ich hab noch n Nokia 3310 übrig und würde das auch gern machen...kann
mir da jmd helfen?

THX!
MfG Sebastian O.

von Robert Everts (Gast)


Lesenswert?

Google,

http://forum.lcdinfo.com/viewtopic.php?p=2453

Nur das Display, andere Sachen vom Handy sind nicht nötig.

Falls Sie Holländsich lesen könne, hier gibt es eine Lange
Diskussion

http://gathering.tweakers.net/forum/list_message/22326725

MfG,

Robert

von Sebastian Ortmann (Gast)


Lesenswert?

Danke für die schnelle Antwort. Ich hab bei google mehrmals gesucht,
aber ich komm damit einfach nicht zurecht - ich hab keine Ahnung von
den Controllern und so ein zeug. Ich hab vor ein paar Wochen mit dem
LTP rumgespielt und ne LED steuerung gebastelt um die schaltung mit
einem selbstgemachten Programm zu steuern.

Mit dem ersten Link kann ich auch nicht so arg viel anfangen, weil
jetzt die ganzen Abkürzungen usw. auch noch in Englisch sind :-) nicht
dass ich kein Englisch kann, aber sowas in englisch...mhhh....naja. Was
muss ich denn wo anschliessen? Ich hab 8Pins an dem Display.

MfG Sebastian O.

von Sebastian Ortmann (Gast)


Angehängte Dateien:

Lesenswert?

noch was:

hab mal das Bild angehängt. Das ist doch die Schaltung von Display zu
LTP. Was ist das in der Mitte? Das Ding, wo alle leitungen
durchgehen??? Und was brauch ich dazu alles? Sind die Teile "C1
2.2µF" und "C2 1µF" ELKOS? Ich raff da nicht durch. Bitte helft
mir!

Danke.
MfG Sebastian O.

von Elektrikser (Gast)


Lesenswert?

Das Ding in der Mitte ist ein IC (Integrierter Schaltkreis). Er heißt
7445. Da gibt es verschiebene Arten 74LS45, 74HC45,.... die aber alle
die gleiche Funktion haben sollten.
C1 und C2 sind zwar nicht als Elkos gezeichnet, aber du könntest welche
verwenden.

Gruß Elektrikser

von Sebastian Ortmann (Gast)


Lesenswert?

Danke für deine Antwort, aber mir ist vorher was dummes passiert. Ich
wollte einfach mal n paar Kabel dranlöten, dann is mit das Display
gerissen! :-(

Frage2:

Kann ich das LCD vom Siemens C25 auch nehmen? Ich hab da vor kurzem mal
was im I-Net gelesen, dass das irgendwie geht!?! :-/


MfG Sebastian O.

UND FROHE WEIHNACHTEN AN ALLE! ;-)

von Jens123 (Gast)


Lesenswert?

dafuer musst du dir eine Libary bauen dann gehts ja oder auf dem Siemand
Display ist auch der PCD8544 Controller dann kannst du auch diese Libary
nutzen

Gruss Jens

von Sebastian Ortmann (Gast)


Lesenswert?

was ist eine Libary? :-/ Ich kenn mich da nicht so aus. Kann mir
vielleicht jemand so ein Display zusammen bauen (wenn jmd noch eins
übrig hat) und mir dann per post schicken? Ich zahl auch dafür ;-)

MfG Sebastian O.

von montero (Gast)


Lesenswert?

Hm wenn du ein Display am LPT betreiben willst würd ich dir nicht das
Nokia display empfehlen, der aufwand ist zu gross und du scheinst schon
am anschlag zu sein.

Nimm stattdessen ein Handelsübliches Display mit 5 Volt pegel und
Standart HD44780U Kontroller. Dazu erhälst du auf Wunsch eine
zusäzliche serielle schnittstelle. In der Schweiz ist das bei
www.vtec.ch erhältlich, müsste aber in deutschland auch zu bekommen
sein.

von montero (Gast)


Lesenswert?

So nach langem basteln läuft nun auch mein 3310 auf nen Atmega16. Tolles
erstes Projekt g

von Rufus T. Firefly (Gast)


Lesenswert?

@Sebastian: (und alle anderen, die ähnliches versuchen)

Das Display des Siemens C25 ist kein Graphikdisplay, sondern ähnlich
wie die Displays mit HD44780-Controller eines, das nur Zeichen an
bestimmten Positionen darstellen kann.
Daher kann dieses Display nicht anstelle der üblichen Nokia-Displays
verwendet werden.

Graphikdisplays sind von Siemens erst in der 35er-Serie verbaut worden,
ein kleineres im C35 und M35 und ein etwas größeres im S35.
Weiß wer, wie die Dinger anzusteuern sind?

von Sebastian Ortmann (Gast)


Lesenswert?

@Rufus T. Firefly

Danke für deine Antwort. Ich bekomm jetzt bald ein Display von einem
Nokia 3210 und hab auch schon so eine Anleitung zum Löten von Display
zu LTP. Ich hoffe ich bekomme da hin, sonst werde ich euch nochmal nach
Hilfe beten ;-)

MfG Sebastian O.

von Michael Rubitschka (Gast)


Lesenswert?

Hallo

BITTE UM HILFE

Ich spiele mich jetzt schon seit  Stunden,...
Auf einm Mega128 läuft die Library hervorragend, auf dem Mega8 nach
umdefinieren der Pins, nichts,...

Ich verwende folgende Pins für den Mega8:
#define GLCD_SER_PORT    PORTB
#define GLCD_SER_DDR    DDRB
#define GLCD_SCLK    PINB5
#define GLCD_MOSI    PINB3
#define GLCD_SS      PINB2

#define GLCD_CTRL_PORT    PORTB
#define GLCD_CTRL_DDR    DDRB
#define GLCD_DC      PINB0
#define GLCD_CE_    PINB1
#define GLCD_RES_    PINB4

Was ist an der Belegung falsch ?
Muß man sonst noch was ändern ?

LG
Michael

von john (Gast)


Lesenswert?

der fehler liegt in ->>
#define GLCD_RES_    PINB4

pb4 ist miso der pin steht dir nicht mehr zur verfügung da der spi
aktiv ist.

du musst nen anderen port nehmen z.b.-->
#define GLCD_CTRL_PORT    PORTC
#define GLCD_CTRL_DDR    DDRC

oder du schliesst die reset leitung mit an die des uC an

von Michael Rubitschka (Gast)


Lesenswert?

Hallo

Habe jetzt folgendes probiert, hat aber auch nichts geändert,...

#define GLCD_SER_PORT    PORTB
#define GLCD_SER_DDR    DDRB
#define GLCD_SCLK    PINB5
#define GLCD_MOSI    PINB3
#define GLCD_SS      PINB2

#define GLCD_CTRL_PORT    PORTC
#define GLCD_CTRL_DDR    DDRC
#define GLCD_DC      PINC0
#define GLCD_CE_    PINC1
#define GLCD_RES_    PINC2

LG
Michael

von john (Gast)


Lesenswert?

pin AVCC angeschlossen ?

von Michael Rubitschka (Gast)


Lesenswert?

Hallo John

Nein AVCC habe ich nicht angeschlossen.
Wo gehört der hin ?

VCC bekomme ich vom STK500, welches ich auf 3,3 V gesetzt habe.
Wie gesagt, mit der orig Pinbelegung und STK 501 funktioniert es
wunderbar. Mit nur dem STK500 und dem Mega 8 ist das display wie tot.

LG
Michael

von Michael Rubitschka (Gast)


Lesenswert?

HI

Also mit dem AtMega8 gebe ich jetzt auf.
Hat jemand von euch es mit einem Atmega16 probiert ?
Welche Pins habt ihr für das Display verwendet?

LG
Michael

von Harald Uliczka (Gast)


Lesenswert?

Hallo Michael,

am Anfang hat's auch nicht mit einem Atmega8 geklappt,
aber nachdem ich die pins (speziell PB4) geändert hatte und ein neues
Display genommen hatte gings. Leider war mein Lötkolben beim ersten
Display zu heiß gewesen.AVCC ist übrigens Analog Spannung für den
internen Analog Digitalwandler. Muß an Spannungsversorgung. Bei mir
3.3V, denn ich habe einen Mega8L8 genommen, damit fällt die
Pegelwandlung zum Display weg.
Allerdings wundert es mich, daß noch keiner eine Platine gemacht hat,
die einfach hinten auf das Display aufgeklebt wird, damit würde man
viele Fehler beim löten vermeiden.Wäre sicherlich ein Hit. Man könnte
darauf auch LED's für die Hintergrundbeleuchtung vorsehen.Leider hab
ich bis jetzt noch nicht selber geätzt, aber daß soll sich mal ändern.

Gruß
Harald

von Michael Rubitschka (Gast)


Lesenswert?

Hallo Harald

Mein Dispplay ist auch defekt. WEIN,WEIN,...
Noch dazu war es ein blaues.
Habe noch ein 2es und damit genau das gleiche,
am 128er funktionier es am 8er nicht.
Wärst Du so nett und mailst mir dein "Port Mapping" für den
Atmega8.

Platine ist kein Problem.
Spiele derzeit noch mit dem STK, sobald das aber beendet ist,
mache ich eine.

LG
Michael

von Harald Uliczka (Gast)


Lesenswert?

Hallo Michael,

Ja, das kenn ich. Ich habe auch fast geheult, als ich mein erstes
Display zerschossen
habe. Die Herstellung der Platine dürfte eigentlich nicht so schwierig
sein.Sie sollte nach unten
ein wenig länger sein, damit man einen Stecker dranlöten kann. Damit
ist diese sogar
einseitig machbar. Sobald ich Zeit finde mach ich mich mal ans Eagle
und male was.

mein Portmapping ist folgendermasen:

// Lcd Port Settings
#define GLCD_SER_PORT    PORTB
#define GLCD_SER_DDR    DDRB
#define GLCD_SCLK    PINB5
#define GLCD_MOSI    PINB3
#define GLCD_SS      PINB2

#define GLCD_CTRL_PORT    PORTB
#define GLCD_CTRL_DDR    DDRB
#define GLCD_DC      PINB2
#define GLCD_CE_    PINB1
#define GLCD_RES_    PINB0

damit funktioniert es wunderbar. Mit welcher Taktfrequenz arbeitest Du
?
Spiel mal ein wenig mit dem Contrast ! Also es funktioniert definitiv.
Meinen Mega8 takte ich
momentan mit 3.6864 Mhz. Kontrolliere mal deine Fuses.

Gruß
Harald

von Andreas Oyrer (Gast)


Lesenswert?

Hallo,

ich habe ein Problem bei Einstellen des Kontrast. Wenn ich das
versuche, dann sehe ich am Display keine Veränderung. Auch eine
Veränderung des Temperaturkoeffizienten bewirkt keine sichtbare
Veränderung am Display.

Vielleicht hat jemand Rat,

Danke
mfg
Andi

von Harald Uliczka (Gast)


Lesenswert?

Hallo Andreas,

welche Library benutzt Du ?

Gruß
Harald

von Michael Rubitschka (Gast)


Lesenswert?

Hallo

@Harald
DANKE!!!
Werde es Heute nach der Arbeit gleich probieren.
Ich verwende den internen Takt von 4 Mhz, damit
der MC auch noch mit 3,3V funzt. Meinen DS18S20
kann ich auch bei beiden Prozessoren auslesen.

@Andreas
http://free-vz.t-com.hr/Ivica-Novakovic/Nokia%20Lcd%20Termometar.htm
Der arbeitet zwar mit einem Pic, aber kann das Display auch
invertieren. Das dürfte automatisch mehr Kontrast bringen.

@All
Mittlerweile habe ich mit beiden blauen 3110er LCDs ein Problem,
gerade das "normale" graue funzt noch zuverlässig.

Aus "bitterster" Erfahrung kann ich nun mitteilen,
sobald man das Lcd angeschlossen hat und es funktioniert,
Heißkleber drüber was nur geht.

So habe ich das mit meinem grauen 3110 gemacht und dann verhält es sich
auch zuverlässig.
Bei meinen beiden blauen, wollte ich das nicht, da für diese eine
Platine vorgesehen waren. HEUL,....

Na ja, wenn man sich mit den Dräthen spielt, reagiert es wenigstens
noch manchmal. Die Kontaktierung zum IC ist wirklich superempfindlich
auf Stress (mehr noch als ich,...).
Dabei sind die blauen LCDs noch die geklebten.
Die meißten die man Heutztage auf Ebay bekommt sind solche wo die
Kontakte einfach runterfallen, sobald man das Glasdisplay in der Hnd
hält. Daher bin ich davon ausgegangen, das die etwas mehr Stress
aushalten.

Vielleicht hilft ja auch etwas Kontaktspry auf die Pins zu sprühen.

Hat von Euch jemand eine Idee wie man die noch retten könnte ?

LG
Michael

von Andreas Oyrer (Gast)


Lesenswert?

Hallo Harald,

danke für deine schnelle Antwort. Ich habe mir die Library selbst
erstellt. Die Initialisierung siehr folgendermaßen aus:

//********************************************************************** 
*******
// Init the display
//********************************************************************** 
*******
void LCD_Init(void)
{
  // D/C und Reset as output
  DC_OUTPUT;
  RESET_OUTPUT;

  // reset LCD
  RESET_LOW;
  Delay_ms(1);
  RESET_HIGH;

  // enter extended Functionset
  LCD_WriteCommand(LCD_FUNCTIONSETEXT);
  LCD_WriteCommand(LCD_SETBIAS | 0x03);
  LCD_WriteCommand(LCD_SETVOP | 0x10);
  LCD_WriteCommand(LCD_SETTEMPCOEFF | 0x01);

  // enter normal Functionset
  LCD_WriteCommand(LCD_FUNCTIONSET);
  LCD_WriteCommand(LCD_SETDISPLAYNORM);

  // reset whole display RAM
  LCD_Clear();
}

Danke für deine Hilfe
mfg
Andi

von Harald Uliczka (Gast)


Lesenswert?

Hallo Andreas,

bitte probiers mal mit folgenden Werten:
BIAS    0x13  // Bias 1:48
TEMPCOEF  0x06  // TF = 2
SETVOP    0x80

Gruß
Harald

von Andreas Oyrer (Gast)


Lesenswert?

Hallo Harald,

danke für deine Hilfe. Ich kann die Werte erst am Abend testen. Aber
dann melde ich mich wieder!

mfg
Andi

von Harald Uliczka (Gast)


Lesenswert?

Nochmal an alle die Probleme haben:

evtl. müsst Ihr das Register SPCR ändern. Dort wird der Teiler für die
Frequenz festgelegt. Wenn Ihr mit 16 Mhz arbeitet, solltet Ihr nicht
den kleinsten Teiler nehmen.

Die Auswahl der Taktrate erfolgt wie folgt:

SPI2X SPR1 SPR0 SCK Frequenz
0     0    0    fosz/4
0     0    1    fosz/16
0     1    0    fosz/64
0     1    1    fosz/128
1     0    0    fosz/2
1     0    1    fosz/8
1     1    0    fosz/32
1     1    1    fosz/64


SPR1 und SPR0 sind in SPCR zu finden, SPI2X (Double SPI Speed Bit)
liegt in SPSR (SPI Status Register).
Bei 3.6864 Mhz sollte es in etwa so aussehen:
SPCR = (1<<MSTR)|(1<<SPE)|(1<<SPR0);

Gruß
Harald

von Andreas Oyrer (Gast)


Lesenswert?

Hallo Harald,

ich habe die Routinen jetzt mit deinen Werten probiert, hat aber nichts
gebracht. Der Kontrast verändert sich nicht. Auch mit dem Programm von
Thomas ändert sich nichts. Es scheint, als ob das Display den
erweiterten Befehlssatz nicht unterstützt.

mfg
Andi

von Michael Rubitschka (Gast)


Lesenswert?

Hallo Harald

Mit deiner Belegung funktioniert es auch mit dem Atmega8!
DANKE!!!

Habe auch eines von den blau/weißen LCDs retten können.
Das zweite scheint leider über dem Jordan gegangen zu sein.
Schaut so aus als könnte ich jetzt mit meinem eigentlichen Projekt
beginnen.

Danke für die Hilfe.

LG
Michael.

von John Maccallan (Gast)


Lesenswert?

moin!
kurze bitte an euch:
könnte mir jemand vielleicht nen binfile mit dem democode von deramon
(compiliert für mega128) schicken/posten, habe bisher nur in asm
gecoded und mit dem winavr c package bekomm ich den mist irgendwie noch
nicht compiliert(sollte doch eigentlich klappen?).
so könnte ich schoneinmal sicherstellen, das meine hardware funzt, (hab
mir sogar nen stk501 spendiert)

mein dank an euch!

j.

von Ralf Kirmis (Gast)


Lesenswert?

Moin Moin,

ist die obige Pin Belegung von Harald richtig, weil dort
sind ja GLCD_SS und GLCD_DC beide auf PB2 gelegt ?

Grüße,
Ralf

von Harald Uliczka (Gast)


Lesenswert?

Hallo Ralf,

ich habe wirklich einen Port doppelt definiert, aber der
zweite hat keine funktion und wird nicht angesprochen. Daher kein
Problem. Es geht auf jedenfall.

Gruß
Harald

von Harald Uliczka (Gast)


Lesenswert?

Hallo Ralf,

man sollte erst mal überlegen, bevor man mit dem schreiben anfängt
(:-(( Natürlich werden beide Deklarationen im Programm benutzt, sind
aber nur zur Unterscheidung ihrer Funktion anders benannt. Sonst
bräuchte man auch PORTB nicht doppelt definieren (SER und CRTL).

Gruß
Harald

von Ralf Kirmis (Gast)


Lesenswert?

@Harald

In der glcdn_spiInit wird einmal ein sbi(GLCD_SER_DDR, GLCD_SS);
gemacht und unter anderem in der glcdn_InitDisplay wird ein
sbi(GLCD_CTRL_DDR, GLCD_DC);  gemacht.
Das würde ich nun nicht nicht angesprochen nennen, gebe aber
trotzdem zu, ich hätte noch tiefer in der Code einsteigen müssen,
um dann erst zu fragen.
Wann Du sagst, es funktioniert so, glaube ich es und warte
nun auf meine Nokia Displays.

Grüße
Ralf

von Harald Uliczka (Gast)


Lesenswert?

Hallo Ralf,

das mit dem überlegen war nicht auf dich gemünzt, sonder auf meine
erste Antwort.

Gruß
Harald

von Trucki (Gast)


Lesenswert?

Hallo,
ich habe gerade die Schaltung nachgebaut und sie hat auf anhieb
funktioniert. Nur stimmt irgendwie der Kontrast nicht.

Ich verwende einen ATMEGA32, @16MHZ, alles bei 3,3V .

// Lcd Port Settings
#define GLCD_SER_PORT    PORTB
#define GLCD_SER_DDR    DDRB
#define GLCD_SCLK    PINB7
#define GLCD_MOSI    PINB5
#define GLCD_SS      PINB4

#define GLCD_CTRL_PORT    PORTB
#define GLCD_CTRL_DDR    DDRB
#define GLCD_DC      PINB4
#define GLCD_CE_    PINB1
#define GLCD_RES_    PINB0

zwischen Vout und GND habe ich einen 4,7uF Elko angebracht. + an Vout!
Ich sehe zwar "Nokia 3310", Bild und TestLCD, allerdings habe ich
immer noch horizontale, schwarze Querstreifen auf dem Display.

Wenn ich mit meinem Finger die beiden Pins des Elkos brückte, dann kann
ich über den Druck den Kontrast so abschwächen, dass die schwaren
Streifen verwinden und die Anzeige perfekt ist.

Leider habe ich im Moment keinen 1uF Elko da, sonst würde ich es damit
auch noch probieren.

Liegt es wirklich am Elko? Bekommt ihr die Streifen auch, wenn Ihr den
Elko z.B. ausbaut oder vergrößert?

Danke

Cu Trucki

von Robert (Gast)


Lesenswert?

Durch SerienSchaltung von zwei Elko's wird die gesammte
Capazität kleiner.... Gleiche Berechnung wie zwei
Wiederstände Parallel...... Zwei 4,7uF Elco ergibt dan so
etwa 2uF....

Weiter,

In die Routine glcdn_InitDisplay()
den KontrastWert anpassen

  // Set Contrast
  glcdn_Contrast(0x20);

Bischen 'RumpSpielen' mit den Wert, hat bei mir Prima
Funktioniert...

Robert

von Trucki (Gast)


Lesenswert?

Hallo Robert,

danke für deine Hilfe! Jetzt ist die Anzeige Glasklar! Hätte ich ja
eigentlich auch selber drauf kommen können!

Danke noch mal!

Cu Trucki

von Frank (Gast)


Lesenswert?

Hallo

ich kann den COde nicht Kompilieren. Fehler:


8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct
-fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=drm3310test.o
-std=gnu99 drm3310test.o drm3310.o   --output drm3310test.elf
-Wl,-Map=drm3310test.map,--cref -lm
drm3310.o(.text+0x8): In function `glcdn_spiInit':
D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:24: undefined
reference to `sbi'
drm3310.o(.text+0x14):D:\ATMEL\nokia 3310
display-Avr\AVR/drm3310.c:25: undefined reference to `sbi'
drm3310.o(.text+0x20):D:\ATMEL\nokia 3310
display-Avr\AVR/drm3310.c:26: undefined reference to `sbi'
drm3310.o(.text+0x2c):D:\ATMEL\nokia 3310
display-Avr\AVR/drm3310.c:27: undefined reference to `sbi'
drm3310.o(.text+0x38):D:\ATMEL\nokia 3310
display-Avr\AVR/drm3310.c:31: undefined reference to `inp'
drm3310.o(.text+0x4a): In function `glcdn_spiSendByte':
D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:37: undefined
reference to `cbi'
drm3310.o(.text+0x5c):D:\ATMEL\nokia 3310
display-Avr\AVR/drm3310.c:43: undefined reference to `sbi'
drm3310.o(.text+0x92): In function `glcdn_WriteCommand':
D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:86: undefined
reference to `cbi'
drm3310.o(.text+0xc8): In function `glcdn_WriteData':
D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:78: undefined
reference to `sbi'
drm3310.o(.text+0x17e): In function `glcdn_InitDisplay':
D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:49: undefined
reference to `sbi'
drm3310.o(.text+0x18a):D:\ATMEL\nokia 3310
display-Avr\AVR/drm3310.c:50: undefined reference to `sbi'
drm3310.o(.text+0x196):D:\ATMEL\nokia 3310
display-Avr\AVR/drm3310.c:51: undefined reference to `sbi'
drm3310.o(.text+0x1a2):D:\ATMEL\nokia 3310
display-Avr\AVR/drm3310.c:54: undefined reference to `cbi'
drm3310.o(.text+0x1ba):D:\ATMEL\nokia 3310
display-Avr\AVR/drm3310.c:56: undefined reference to `sbi'
drm3310.o(.text+0x280): In function `glcdn_PutStrXLine':
D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:144: undefined
reference to `PRG_RDB'
drm3310.o(.text+0x320): In function `glcdn_ShowImage':
D:\ATMEL\nokia 3310 display-Avr\AVR/drm3310.c:166: undefined
reference to `PRG_RDB'
make.exe: *** [drm3310test.elf] Error 1


Ich benutze WINAVR 2.0.5.48 Programmers Notepad 2

Kann mir jemand helfen??

von john maccallan (Gast)


Lesenswert?

sbi,cbi gibts nicht mehr => ändern oder old_macros.h nehmen :-)

wahrscheinlich meistd du diese stelle:
GLCD_SER_PORT |= (1<<GLCD_SCLK);
  GLCD_SER_DDR |= (1<<GLCD_SCLK);
  GLCD_SER_DDR |= (1<<GLCD_MOSI);
  GLCD_SER_DDR |= (1<<GLCD_SS);

prg_rdb ist nun pgm_read_byte

dann läufts!

von Rubitschka (Gast)


Lesenswert?

Hallo

Leider ist es nicht nur sbi und cbi, die haben auch noch andere macros
entfernt. Seit ich umgestiegen bin, verwende ich ein compatibility.h
header file um meinen code abwärtskompatibel zu halten.

Etwa so

#ifndef cbi
 #include "compatibility.h"
#endif

Dadurch kann ich mit der "alten" Libc auf meinem laptop und der neuen
auf den desktop compilieren ohne was ändern zu müssen.

LG
Rubi

von Frank (Gast)


Lesenswert?

Hallo,

in der Header Datei steht auch etwas von einem SS anschluß?!
Leider finde ich diesen aber nicht am Display.
Kann ich den Portpin der auf SS geht auskommentieren?

Danke

von john maccallan (Gast)


Lesenswert?

naja, lass es einfach stehen, falls den spi port für was anderes auch
nochmal verwenden willst, ich hatte mir den quelltext damals so
kommentiert:

#define GLCD_SS   PINB0  //slave port select input, wenn ss ausgang ist,
dann keinen einfluss aufs spi(avr151,p4)


hasts denn jetzt compilieren können?

von Frank (Gast)


Lesenswert?

Vielen Dank,

kompiliern konnte ich es mit eurer hilfe.

Ich werd es aber erst am Wochenende Flashen, und dann bin
ich ja mal gespannt.
Ach ja, ich MUSS aber die richtigen Pins vom Controller nehmen, oder?
(Mosi, SCK, etc. da ja nur diese Zugriff auf das Interface des
Controllers haben?!?)

Viele grüße

von MorsLucis (Gast)


Lesenswert?

Hallo,
ich versuche verzweifelt den Code aus dem Eingangsposting zu 
compilieren, aber es will auch nach stundenlangem rumprobieren einfach 
nicht gelingen (weder mit WinAVR unter wine noch mit cdk-avr-gcc). Hat 
jemand zufällig ne fertige .hex für den mega8, die er hochladen kann 
(und dann das Pinout verraten für das sie compiliert ist...)
Bisher habe ich nur mit Assembler programmiert, deswegen bin ich bei der 
Fehlersuche total aufgeschmissen...
Gruß Tobias

PS: Ja ich habe bemerkt wie alt dieses Thema schon ist...

von jehad (Gast)


Lesenswert?

We aske about Working mobile just the internal mobile 3310 without the 
battry , charger, box, caver.

Can we have the price of that

von Frank B. (frank090464)


Lesenswert?

Deramon wrote:
> Ich weis nicht wo da der Fehler ist. Ich habe das Display eben nochmal
> angeschlossen und 2 Bilder von der Ausgabe gemacht und da wird es
> richtig angezeigt:
> http://www.deramon.de/avr/nokia01.jpg
> http://www.deramon.de/avr/nokia02.jpg


Hi, sieht ja toll aus. Wie wird es am Atmega angeschlossen? Danke im 
Voraus.

von Meik (Gast)


Lesenswert?

Ich habe ein 3310 und ein 3510 Display bei mir am Laufen. Übrigens spare 
ich mir die Umwandlung auf 3,3 Volt und betreibe das Display direkt mit 
den 5V vom PIC. Bislang ohne Probleme.
Tip:
Wenn ein Display mal nicht will, so kann das am defekten dc/dc 
Schaltkreis im Displaycontroller liegen. So habe ich auch eins.-> Über 
einen 8,2k Ohm Widerstand den Vout an 12 Volt anschliesen und staunen. 
Das Display läuft wieder!

Gruß Meik
(Hab meine Login Daten gerade nicht parat, deshalb Gast)

@frank B. lies mal etwas weiter oben, falls es noch aktuell 
ist(01.10.2007)

von Meik D. (meik)


Lesenswert?

Hoppla, war ein 4,7 kOhm Widerstand, kein 8,2.

Meik

von Tobias L. (morslucis)


Lesenswert?

Danke für den Tipp, bei mir sind es aber ca 25K,bis der Kontrast 
stimmt...

von Hale (Gast)


Lesenswert?

lol

von Meik D. (meik)


Lesenswert?

Scheint mit der Art des defektes zu tun zu haben. Einfach mal 
verschiedene Werte testen. Wenns ansonsten eh defekt ist kann man nichts 
mehr kaputt machen.

von Martin001 (Gast)


Lesenswert?

Hallo,
ich hab eben mal probiert das 3310 display anzusteuern allerdings bleibt 
es einfach schwarz hab nen spannungsteiler aufgelötet und die pins an 
einem atmega portC angeschlossen ( im programm geändert)
sollte es nicht schon schwarz anzeigen wenn ich da den reset sowie v+ 
und gnd an mein netzteil anschließe ?
gruß
martin

von paule (Gast)


Lesenswert?

nach langem suchen hab ich grad was tolles gefunden...
wer eine gute Lib benötigt, die findet man hier:

http://bluematrixi.bl.funpic.de/html/meinwebzeugs/index.php/elektronik-avr/lcd-display-nokia3310

von paule (Gast)


Lesenswert?

anscheinend war die Lib gestern off... aber jetzt wieder da

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

Abend,
hab grad gesehn, dass meine Version der Bibliothek schon hier verlinkt 
ist.
Vielen Dank Paule

da sich in nächste Zeit noch einiges auf der Seite ändert, ist es 
besser, man nutzt den allgemeinen Link auf die Startseite und dann 
einfach auf "Display Nokia 3310"

http://bluematrixi.bl.funpic.de/

Über das Display kann ich sagen, dass es super ist.
  - Es ist einfach anzusteuern
  - man kann viel realisieren
  - für normale Projekte ist die Größe ausreichend
  - ein kleiner Prozessor reicht aus

danke an all die, die damals das ganze Projekt begonnen haben.

Grüße martin

von Martin J. (bluematrix) Benutzerseite



Lesenswert?

Hier die neuste Version von der Bibliothek Nokia3310,
diesmal sind alle möglichen Funktionen enthalten für kreise, Linien, 
Texte, Bilder und und und... einfach mal testen.

ich würd mich freuen, wenn jemand die bibliothek nochmal etwas 
überarbeiten könnte... also nochmal nachsehen was man noch verbessern 
könnte.

ansonsten findet man immer die aktuellste Version hier: 
http://www.jtronics.de/elektronik-avr.html

Unter der Rubrik Boards gibt es auch noch ein speziell für das Display 
entwickletes Board. Dieses ist für kleinere Mess-, Steuer- oder 
Reglungsaufgaben in Verbindung mit dem Display gedacht. Funktioniert 
super! Habe damit selber mehrere Geräte in Betrieb.

wer interesse hat einfach melden...

Viel Spass damit
martin

von nichtgast (Gast)


Lesenswert?

Hi!

Ich hoffe mal der Thread ist nicht zu alt, möchte ja nicht zum 
Leichenfledderer werden. Hat aber trotzdem noch was mit dem 
Ursprungsthema zu tun.

Erstmal danke an Martin für die Library!

Ich habe da aber noch ein paar Probleme die zum Laufen zu bekommen.

Zu meinem "System":
Atmega328P an 3310 LCD aus Ebay
Stromversorgung 3,3V aus dem Arduino
Programmierung über AVR Studio 6 und AVR ISP MkII

Zu meinem Problem:

Ich habe die Library heruntergeladen und dann in meinen Projektordner 
entpackt. Den Inhalt der main.c in mein Hauptprogramm kopiert.
In der Nokia_3310.c musste ich folgende Zeile einfügen: #include 
"Nokia_3310.h". Dann findet er zumindest schonmal alle Dateien.
Dann noch das "static" vor den Variablen, z.B. für das logo in "const" 
umwandeln.

Dann kommen aber lauter Warnungen in der "DateinameDesProjekts.o". 
Fehler ist "first defined here".

Irgendeine Lösung? Ich bin da echt am Verzweifeln...

Danke schonmal für eure Hilfe!

von Karl K. (leluno)


Lesenswert?

schau mal, ob das first defined sich auf die gleiche codezeile/datei 
bezieht.

dann musst du durch eine #if-klammer sicherstellen, dass das #include 
nur einmal abgearbeitet wird

von manni (Gast)


Lesenswert?

wo ist denn die Funktion sbi definiert?

von Joachim B. (jar)


Lesenswert?

manni schrieb:
> wo ist denn die Funktion sbi definiert?

sbi ist ein Assembler Befehl, wie kommst du auf Funktion?

hast du konkretere Fragen aktuell?

ich steuere lieber per Arduino LIB die Nokia LCD 5110 5V tolerabel (rote 
Platinen)

von manni (Gast)


Lesenswert?

Ja ich hab mir so diese Nokia 5110 / Phillips Display gekauft.

Hat ja 8 Pins


RST CE DC Din Clk Vcc HL Gnd.


Ich habe den Code aus der drm3310test.c in eine neues AVR Studio 6 
Projekt kopiert. Neuer Dateiname Display.c Dort ist Mainfunktion drin. 
Um nicht auch noch die die drm3310.c ins AVR Studio zu importieren, habe 
ich den Code aus dieser Datei auch kopiert und ebenfalls in die neue 
Datei Display.c kopiert.

Dann habe ich die Header Datei in AVR Studio 6 bei dem Projekt Display 
hinzugefügt. Offensichtlich muss man laut dem Debugger einige Variablen 
in der Header-Datei auf static setzten, das ich auch gemacht habe.

Würdet ihr mir bitte bestätigen, dass das bisher so richtig ist?

Nun ist mein Problem, dass der Debugger mir die Meldung ausgibt:

"undefinded referece to 'cbi'".

Was ist die Ursache für diese Fehlereintrag?

Kann man diese Displays auch mit 5V betreiben? (Sowohl 
Spannungsversorgung als auch Datenleitungspegel?)Ich habe bisher überall 
gelesen, dass 3,3V das Max. ist, auch im Datenballt vor allem bei den 
logischen Eingängen!


Manni

von Joachim B. (jar)


Lesenswert?

manni schrieb:
> Würdet ihr mir bitte bestätigen, dass das bisher so richtig ist?

wie denn ohne DEINEN Code?

von manni (Gast)


Angehängte Dateien:

Lesenswert?

Hier der Code

Danke

von Joachim B. (jar)


Lesenswert?

manni schrieb:
> Hier der Code
>
> Danke

wo kommt der her?
1
void glcdn_spiInit(void)
2
{
3
  // Init Serial Ports
4
  sbi(GLCD_SER_PORT, GLCD_SCLK);

da fehlt die Funktion sbi() oder das #define dazu:

Beitrag "sbi und cbi in C"

https://www.mikrocontroller.net/articles/AVR-GCC
"np(), outp(), sbi() und cbi() werden in der aktuellen 
Bibliotheksversion nicht offiziell unterstützt (man muss eine spezielle 
Header-Datei einbinden(deprecated.h)."

http://www.atmel.com/webdoc/AVRLibcReferenceManual/group__deprecated__items_1ga014ef751e83f97569c06f3cdd888f3f7.html

von manni (Gast)


Lesenswert?

Reicht es auch wenn ich das #define sbi... einfach in meine Display.c 
Datei reinschreibe.

Steht im dem Head-File noch mehr als das #define?

von manni (Gast)


Lesenswert?

oder das in die drm3310.h

1
#define sbi(port,bit) \
2
  (port) |= (1 << (bit))


in der drm3310.h hinzufügen?

Geht das?

von Joachim B. (jar)


Lesenswert?

manni schrieb:
> #define sbi... einfach in meine Display.c
> Datei reinschreibe.

wenn du magst oder musst (um nicht zuviel zu ändern):

#define sbi(port,bit) (port)|=(1<<(bit))

ehrlich ich habe es mir angewöhnt es in pur C zuschreiben:
1
// in PINS_H
2
#if defined(__AVR_ATmega328P__)
3
  #define LED_ARDUINO      5
4
  #define LED_ARDUINO_DDR  DDRB
5
  #define LED_ARDUINO_PORT PORTB
6
  #define LED_ARDUINO_ON   LED_ARDUINO_PORT|=(1<<LED_ARDUINO)
7
  #define LED_ARDUINO_OFF  LED_ARDUINO_PORT&=~(1<<LED_ARDUINO)
8
#endif
9
10
// in prg.c oder prg.ino
11
#ifdef LED_ARDUINO
12
  LED_ARDUINO_DDR |= (1<<LED_ARDUINO);
13
#endif

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
Noch kein Account? Hier anmelden.