www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD Blau am Atmega 64


Autor: Matthias Laubnitz (mcl024)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

ich habe folgendes Problem. Ich benutze die LCD routines von dem
Tutorial auf dieser Seite.
Die funktionieren auch wunderbar mit einem Atmega 32 und einem Display
2*16 Zeichen schwarz auf grün. Nun benutze ich genau die selben routinen
mit einem Atmega64 und einem Display 2*16 Zeichen weiß auf blau. Es
funktioniert aber nicht. Es passiert nichts. Ich habe sämtliche
Anschlüsse schon kontrolliert. Das einzige was ich jetzt anders mache
ist das ich am Atmega64 PortC benutze und nicht wie vorher am Atmega32
PortD. Habe dieses aber schon in der lcd-routines.h geändert. Der 
Controller scheint irgendwie in der lcd_init zu hängen denn der folgende 
Code wird nicht mehr ausgeführt.
Ich weiss einfach nicht weiter.

Gruss mcl024

: Verschoben durch Admin
Autor: Peter Mahlknecht (pmahlknecht)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jtag deaktiviert? Ich glaub der ist beim Mega64 auf PortC.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Der Controller scheint irgendwie in der lcd_init zu hängen
> denn der folgende
>Code wird nicht mehr ausgeführt.

Die LCD Routinen aus dem Tutorial können
nicht hängen. Warum nicht?
Das Busy vom LCD wird nicht abgefragt.
Dein Code ist SCHROTT.

Autor: Matthias Laubnitz (mcl024)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Anschluss der lcd_init lass ich eine Led blinken. Diese blinkt nur 
wenn ich die lcd_init auskommentiere. Und ich habe nichts am Code 
geändert aus die Anschlüsse in der Header datei.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wird der Code auch für einen ATMega64 übersetzt?

Ohne makefile und Sourcecode zu sehen kann dir keiner sagen
was da nicht stimmt.

Autor: Matthias Laubnitz (mcl024)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Jtag deaktivieren bringt nichts.
Anbei der Code und Makefile. Erster Abschnitt ist lcd-routines.h danach 
lcd-routines.c dann folgt mein eigener Code und zum Schluss habe ich das 
Makefile noch anghängt.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich sehe da nichts wo der Mega sich aufhängen könnte.
Check mal ob du einen Kurzschluß auf den LCD Leitungen hast.

Autor: Michael K. (kichi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Haben beide LCDs (wirklich) denselben Controller?

Autor: Matthias Laubnitz (mcl024)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das LCD welches mit dem Atmega32 funktioniert hat den KS0070B und das 
LCD mit dem Atmega64 hat den HD44780.
Komisch finde ich nur das der Atmega64 nur in die for-Schleife geht wenn 
ich die lcd_init auskommentiere. Das kann doch nicht sein.

Autor: Michael K. (kichi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denke dann solltest du dir zuerst mal die Initialisierungssequenzen 
der Controller zu Gemüte führen und vergleichen...

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich denke dann solltest du dir zuerst mal die Initialisierungssequenzen
>der Controller zu Gemüte führen und vergleichen...

Das kann es nicht sein. Da kriegt er höchstens
Probleme mit der Anzeige. Hängen kann lcd_init() nicht.
Es sei denn bei den delay Routinen. Das glaube ich aber
auch nicht. F_CPU ist definiert und Optimierung ist an.

Arbeite dich doch mal mit der LED durch lcd_init()

PORTD |= (1<<PD4);

Fang ganz oben an.
Compilieren, brennen ausprobieren.
Wenn sie leuchtet den nächsten Befehl überspringen
und dort die LED einschalten.
Dann das ganze Spiel von vorne. Wenn sie nicht mehr
leuchtet hat du das Problem gefunden.

Autor: Matthias Laubnitz (mcl024)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe bereits die lcd_init() immer Stückweise auskommentiert. Selbst 
wenn ich den gesamten Inhalt der Funktion auskommentiere, geht der 
Controller nicht in die for-schleife.
Das kann doch alles nicht sein.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh man! Da hätt ich schon eher drauf kommen können. ;)

Deaktiviere mal die M103C Fuse.
Atmega103 compatability mode.

Autor: Matthias Laubnitz (mcl024)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wahnsinn es geht!!!!!

Was bedeutet die M103C Fuse?? Warum muss ich das beim Atmega32 nicht 
machen??

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.