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
>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.
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.
Wird der Code auch für einen ATMega64 übersetzt? Ohne makefile und Sourcecode zu sehen kann dir keiner sagen was da nicht stimmt.
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.
Ich sehe da nichts wo der Mega sich aufhängen könnte. Check mal ob du einen Kurzschluß auf den LCD Leitungen hast.
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.
Ich denke dann solltest du dir zuerst mal die Initialisierungssequenzen der Controller zu Gemüte führen und vergleichen...
>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.
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.
Oh man! Da hätt ich schon eher drauf kommen können. ;) Deaktiviere mal die M103C Fuse. Atmega103 compatability mode.
Wahnsinn es geht!!!!! Was bedeutet die M103C Fuse?? Warum muss ich das beim Atmega32 nicht machen??
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.