PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe gesucht: Lcd mit atmega 88



Waldichecker
26.12.2009, 21:19
Hallo Allesamt,

Vorweg: Ich weiß, dass es schon viele Threads zu diesem Thema und einen Rn-Wissen eintrag gibt, doch die konnten mir auch nicht weiterhelfen.

Zurzeit versuche ich ein Lcd (Hd44780 kompatibel , 2 * 16 Zeichen , von Pollin) an einen Atmega 88 anzuschließen.
Ich verwende es im 4bit modus. RW liegt auf Masse.
Die Schaltung habe ich an main Atm18 Board (Elektor) angeschlossen

Ich habe schon Alles versucht aber es funktioniert nicht.
Wenn ich Betriebsspannung anlege kommen nur schwarze Balken.

Meine Hardware ist einwandfrei (kein Kurzschluss und aufbau nach Lehrbuch)

Mein Quellcode ist in Bascom


$regfile = "m88def.dat"
$crystal = 16000000

$hwstack = 32
$swstack = 10
$framesize = 10

Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
Config Lcd = 16 * 2

Config Lcdbus = 4

Initlcd
Cls
Locate 1 , 1
Lcd " hallo"

End


Ich vermute, dass es an den Fuses liegt (oder mit der Betaktung?), aber da komm ich einfach nicht zurecht :cry:

Ich brauche dringend Hilfe!

Vielen Dank schon mal im voraus

Waldichecker

Thomas$
26.12.2009, 22:03
hängt quarz mit 16mhz dran? auch in den fuses eingestellt sonst nehm einfach die 1mhz intern und da brauchste bei den 16mhz nur die "6" rausstreichen

linux_80
26.12.2009, 22:04
Hallo,

auf jeden Fall ist komisch, dass Du einen Takt von 16MHz angibst, und dennoch die Pins B6 und B7 für das LCD verwendest, welche auch für den Quarz gehören.
Wenn Du an den Fuses nix gemacht hast, läuft der mit 1MHz (interner Takt).
Mit welchem Takt läuft der wirklich, und hast Du die XTAL pins verwendet ?

Waldichecker
26.12.2009, 22:29
Ich hab nun das Programm geändert.


$regfile = "m88def.dat"
$crystal = 1000000

$hwstack = 32
$swstack = 10
$framesize = 10

Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portb.3 , Rs = Portb.2
Config Lcd = 16 * 2

Config Lcdbus = 4

Initlcd
Cls
Locate 1 , 1
Lcd " hallo"

End


Es klappt immer noch nicht

Doch in den Fuses find ich kein 1mhz!

Ich benutze avr studio zum Programmieren.

Thomas$
26.12.2009, 22:32
die 1mhz sind die grundeinstellung beim verkauf
und gehts?

Waldichecker
26.12.2009, 22:38
Ich glaube, dass ich sie mal geändert hatte, was jetzt? Es klappt nicht!

TomEdl
26.12.2009, 22:48
Liegen die Pins DB0-DB3 vom LCD ebenfalls an Masse?

Grüße
Thomas

Thomas$
26.12.2009, 22:48
sicher hattest du das für einen quarz 16mhz eingestellt? wenn ja kannst quarz anlöten/stecken und deine andern leitungen verschieben
kannst ja mal den chip am display anfassen wenn der heis ist kannstes so oderso vergessen :-b

BurningWave
26.12.2009, 23:01
Stell einfach bei den Fuses ein, um den internen 1MHz Takt zu aktivieren: "Int. RCosc 1MHz, Startup: ..." (oder so ähnlich). Ich habe mit den Pollin-LCDs auch schon schlechte Erfahungen gemacht: Bei mir hat das Display einfach nichts angezeigt. In der gleichen Schaltung hat dann ein etwas teureres von Conrad perfekt getan. Aber wenn in der ersten Hälfte des Displays ein schwarzer Balken angezeigt wird, ist das eigentlich ein Zeichen vom internen Controller, dass er auf die Initialisierung wartet und das Display funktionsbereit ist.

Waldichecker
27.12.2009, 08:04
Hallo,

@TomEdl:
Die Pins db0 - db3 liegen über nen wiederstand (10k) auf Masse.

@Thomas$:
Das Display ist in Ordnung der chip wird nich heiß

Das mit den Fuses Kapier ich nicht.

Ich hab ein Häckchen bei:
Boot Flash Size = 1024 words...
Brown-Out detection dissabled
Divide Clock bei 8 internally !!!

Aha, heißt das, dass der Takt den ich da Angebe durch 8 geteilt wird?

Wenn Ja:

Welches Der 3 Obtionen Müsste ich auswählen, wenn ich 1 Mhz intern haben will?

Int. Rc Osc 8Mhz; Startuptime PWRDWN/Reset : 6 ck / 14CK + 0ms

Int. Rc Osc 8Mhz; Startuptime PWRDWN/Reset : 6 ck / 14CK + 4.1ms

Int. Rc Osc 8Mhz; Startuptime PWRDWN/Reset : 6 ck / 14CK + 65ms

Vielen Dank schon mal ich bin schon einen Schritt weiter aber es klappt immer noch nicht.

Rone
27.12.2009, 08:05
Hallo Waldichecker!

Es obliegt Dir Dich mit Deinen Programmen und mit Deiner
Hardware zu beschäftigen. Also: Informationen sammeln, verstehen lernen,
und probieren, probieren, probieren,...

Wenn Du wirklich B6 u. B7 für Dein Lcd verwendest hast, kann auch
genausogut sein, daß Du Dir Dein Controllerboard geschossen hast.

Ist mir auch mal passiert.(nicht mit einem LCD)

MfG
Rone

Waldichecker
27.12.2009, 08:18
Mein Mega 88 ist jetzt kaput macht es unterschiede, wenn ich Mega 8 nehme? Ich glaube nein. Ich hab das LCD statt an Portb.6+7 An Portd.6+7 angesclossen.

Waldichecker
27.12.2009, 09:39
Hab die Hardware und Software erneuert. Ich nehme Jetzt einen Atmega 8 hab nen 16 Mhz Quarz an Xtal.
Hier mein neuer Code:


$regfile = "m8def.dat"
$crystal = 1000000

$hwstack = 32
$swstack = 10
$framesize = 10

Config Lcdpin = Pin , Db4 = Portc.1 , Db5 = Portc.2 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portc.0 , Rs = Portb.2
Config Lcd = 16 * 2

Config Lcdbus = 4
Waitms 50
Initlcd
Cls
Locate 1 , 1
Lcd " hallo"

End


Doch trotzallem klappt es immer noch nicht :cry:

Ich habe in den Fuses "Int Rc Osc 1mhz" abgehakt

Brauche Hilfe!!!

kellerkind
27.12.2009, 09:50
Poste mal Deine Schaltung, irgendwo müssen wir mal anfangen und ich vermute einen Hardwarefehler bei Dir!

Waldichecker
27.12.2009, 10:31
Hier hab ich den Schaltplan:

ftp://Waldichecker:Kondensator@ftp.mitglied.multimania.d e/schaltplan012.jpg

Natürlich ist der µC mehr beschaltet. Das Quarz ist 16 Mhz.

Ich habe keine Ahnung, was Falsch sein könnte.

Entschuldigung mein Scanner macht alles so groß

Brauche Hilfe!

oberallgeier
27.12.2009, 10:45
Hier hab ich den Schaltplan ...Forum Regeln
...
11. Bitte keine Bilder posten die breiter als 580 Pixel sind.
Dadurch verschiebt sich die Forumstruktur und ein Thread wird schlecht lesbar...

Waldichecker
27.12.2009, 17:24
Oder kann mir einer eine Anleitung Posten, wie er es macht???

Jaecko
27.12.2009, 19:15
"Ich nehme Jetzt einen Atmega 8 hab nen 16 Mhz Quarz an Xtal."

und

"$crystal = 1000000"

passt nicht ganz zusammen.

"Ich habe in den Fuses "Int Rc Osc 1mhz" abgehakt"

Heisst das jetzt Haken hin oder Haken weg? Wenn der ext. Quarz verwendet werden soll, muss auch ext. Crystal gewählt sein, sonst ist der Quarz nur Deko.

TomEdl
27.12.2009, 20:11
Hallo,
@TomEdl:
Die Pins db0 - db3 liegen über nen wiederstand (10k) auf Masse.

Welche Gründe haben dich dazu bewegt, sie über 10k an Masse zu legen?

Grüße
Thomas

oberallgeier
27.12.2009, 20:15
Jaecko - sorry dass ich da reinmaule.

... 16 Mhz Quarz an Xtal.
...
$crystal = 1000000
...
Fuses "Int Rc Osc 1mhz" abgehaktBei der sehr dürftigen Vorstellung muss man misstrauisch sein, dass mit XTAL nur ein Kontakt gemeint ist. Daher meine Ergänzung:
1) Tutorial(s) lesen
2) Dokumentation lesen
3) WENN ein Quarz verwendet wird, dann an XTAL1 und XTAL2 anschließen
4) WENN ein 16 MHz Quarz verwendet wird, dann Fuses auf "Ext. Crystal... High Frequ..." einstellen

@Waldichecker: zur Bildbearbeitung das schon oben Gesagte: lies die Dokumentation/das Handbuch durch. Dort stehts.

Jaecko
27.12.2009, 20:18
Kein Problem. Nobody is perfect.

Das mit den 10k auf Masse mach ich aber auch bei LCDs mit 4Bit.
Offen lassen wäre mir zu gefährlich, falls sich die Pins irgendwas einfangen; und ohne R direkt auf Masse gibt Stress, wenn man mal R/W auf Read legt.

TomEdl
27.12.2009, 20:26
Kein Problem. Nobody is perfect.

Das mit den 10k auf Masse mach ich aber auch bei LCDs mit 4Bit.
Offen lassen wäre mir zu gefährlich, falls sich die Pins irgendwas einfangen; und ohne R direkt auf Masse gibt Stress, wenn man mal R/W auf Read legt.
Achso, okay, da hatte ich ne Bildungslücke, da ich R/W noch nie benutzt hab. Bisher hatte ich sie immer niederohmig auf Masse gelegt.

Grüße
Thomas

Waldichecker
27.12.2009, 21:23
So ich hab jetzt externen Oszilator aktiviert und die Frequenz auf 16 Mhz eingestellt. Wie mache ich jetzt weiter? Es funktioniert noch nicht.

Ist im Schaltplan oder im Programm ein Fehler?

Bin am verzweifeln.

TomEdl
27.12.2009, 21:26
Wo hast du die Frequenz umgestellt? Im Programm oder mit den Fuses?

Grüße
Thomas

Waldichecker
27.12.2009, 21:28
Programm und Fuses.

TomEdl
27.12.2009, 21:30
Sind 22pF Kondensatoren am Quarz?

Wie siehts eigentlich aus mit 100nF-Kerkos?

Grüße
Thomas

Waldichecker
27.12.2009, 21:32
Ja am Quarz sind 2 22pf nach masse geschaltet. Also git das insgesamt einen Resonator.

Was meinst du mit letzterem?

Grüße

Waldichecker

TomEdl
27.12.2009, 21:38
Ich meine damit die Enstörkondensatoren. Diese sollten zwischen sämtlichen Vcc und GND Anschlüssen des Controllers so dicht wie möglich sitzen. Außerdem schadet es nicht, ebensolche Kondensatoren auch an den Betriebsspannungsanschlüssen des Displays so nah wie möglich anzubringen.

Grüße
Thomas

Waldichecker
27.12.2009, 21:40
Nein, solche Kondensatoren habe ich nicht eingebaut.

Meinst du, dass es daran liegt?

Grüße
Waldichecker

TomEdl
27.12.2009, 21:43
Nein, solche Kondensatoren habe ich nicht eingebaut.

Meinst du, dass es daran liegt?

Alles ist möglich, wie im Lotto. Du solltest dir angewöhnen, immer Entstörkondensatoren an digitale ICs anzubringen.

Weißt du überhaupt, ob der µC wirklich läuft? Lass mal eine LED blinken oder so...

Grüße
Thomas

Waldichecker
27.12.2009, 21:51
Habs gerade noch mal mit der Led getestet. Klappt einwandfrei. Also ist mit dem µC alles OK.

Was könnte noch eine Fehlerquelle sein?

Grüße
Waldichecker

TomEdl
27.12.2009, 21:55
Beschreib das Display doch mal in einer Schleife, vielleicht kriegt der LCD-Controller innerhalb 50ms noch nix mit.

Grüße
Thomas

Thomas$
27.12.2009, 21:59
test das mit der led an allen verwendeten pins durch

Waldichecker
27.12.2009, 22:08
So, Kondensatoren sind drauf und ich hab ne Schleife programmiert.

Aber trotz Allem klappt es immer noch nicht.

Woran kann es dann liegen?

Grüße
Waldichecker

TomEdl
27.12.2009, 22:09
Hat der Mega88 JTAG? Wenn ja, dann Fusebit für JTAG kontrollieren. Das muss abgeschaltet sein.

Grüße
Thomas

Waldichecker
27.12.2009, 22:15
JTAG hat der gar nicht.

und @Thomas$:
Mit den Leds hab ich alle verwendeten Ports kontrolliert. Die Senden.

Grüße
Waldichecker

Thomas$
28.12.2009, 00:18
alles richtig angeschlossen kontrast richtig eingestellt? display schon mal wo anders getestet? soll ja auch vorkommen das displays nicht gehen

Waldichecker
28.12.2009, 19:58
Hallo,

Ich habe das ganze jetzt noch mal mit einem Display getestet, von dem ich weiß, dass es funktioniert.

Es klappt einfach nicht.

Kontrastpoti drehe ich bei jedem Test.

Vieleicht habe ich etwas Grundlegendes Falsch gemacht, von dem man gar nicht als Fehlerquelle ausgeht?

Brauche dringend Hilfe.

Waldichecker