Hallo, ich versuche schon seit Stunden mein LCD anzusteuern. Doch es klappt einfach nicht :( Könnt ihr mir sagen wo der Fehler liegt? Dabei benutze ich - LCD-Modul WINTEK WD-C2704M-1HNN von www.pollin.de (4x27) - ATmega16, Port C - Pins 4-7 am Port des µC sind auch an den Pins 4-7 des LCD - Pin 3 des µC ist am PINENABLE2 des LCD - Pin 2 des µC ist am PINENABLE1 des LCD - Pin 1 des µC ist am RS des LCD - Pin 0 des µC ist am R/W des LCD - und das Programm im Anhang (ich vermute, da ist der Fehler drin) Ich hoffe Ihr könnt mir helfen... dieter
Bevor wir hier das Programm analysieren: > - ATmega16, Port C Das JTAG Interface hast du per Fuse abgeschaltet? Das liegt beim Mega16 am Port C und ist per Default auf 'ein'.
nein das habe ich nicht .... Wie schaltet man das denn ab? Also mit welcher Fuse? kurz gegoogelt:
1 | .org 0x00 |
2 | ; zusätzlich abschalten von JTD in MCUCSR, 2 mal laut Datenblatt) |
3 | ldi r16,(1<<JTD) |
4 | out MCUCSR,r16 |
5 | |
6 | out MCUCSR,r16 |
Ist das richtig? dieter
dieter wrote: > nein das habe ich nicht .... > > Wie schaltet man das denn ab? > Also mit welcher Fuse? > > > > kurz gegoogelt: >
1 | > .org 0x00 |
2 | > ; zusätzlich abschalten von JTD in MCUCSR, 2 mal laut Datenblatt) |
3 | > ldi r16,(1<<JTD) |
4 | > out MCUCSR,r16 |
5 | > |
6 | > out MCUCSR,r16 |
7 | > |
> > Ist das richtig? Ja das würde gehen. Du sollst aber solche Dinge nicht ergoogeln, sondern im Datenblatt deines Prozessors nachlesen. Das Datenblatt kriegst du von Atmel und da steht alles drinn was du über deinen Prozessor wissen musst. Eine andere Alternative wäre es, das JTAG Interface dauerhaft über die Fuses abzuschalten. Dazu liest du in deinem Brennprogramm die Fuses vom Prozessor ein, änderst das JTAGEN Bit in den anderen Zustand und schreibst die Fuses wieder zurück - Fertig. > > dieter
Ich habs nochmal ausprobiert, aber ich finde den Fehler nicht.. :( Wo könnte der Fehler denn jetzt liegen? Das LCD zeigt nämlich nur zwei schwarze Balken - dabei ist es vierzeilig! dieter
Zwei schwarze Balken bedeutet, dass das LCD seine interne Power-up-Initialisierung erfolgreich abgeschlossen hat und nun auf Eingaben vom steuernden Rechner/µC wartet. Du solltest Dein Augenmerk also auf Deine Initialisierungsroutine richten. Ich hab' mit jetzt Dein Progrämmchen nicht genauer angeschaut, aber Du solltest dringend mal den "Getting started"-Code von Dave VanHorn anschauen, wie man das mit den Interruptvektoren am Anfang des Programmes macht. Wenn bei Dir (org 0x00) irgendein Interupt (versehentlich) aktiviert ist, läuft der Prozessor in's Nirvana...
dieter wrote u.a.: > Ich habs nochmal ausprobiert, aber ich finde den Fehler nicht.. :( > > Das LCD zeigt nämlich nur zwei schwarze Balken - dabei ist es > vierzeilig! Solange es schwarze Balken zeigt, ist es nicht initialisiert. Dass es vierzeilig ist, sieht nur so aus. Denn es enthält zwei Controller, von denen jeder zwei Zeilen ansteuert. Du musst es also ansteuern wie zwei getrennte 2x40-LCDs. Im Anhang findest Du ein Programm, dass dieses LCD mit einem Mega8 ansteuert. Die Ansteuerung ist aber schon etwas komfortabler als bei der Tutorial-Version. Vielleicht kannst Du ja mal drüberschaun und Anregungen für eigene Routinen finden. ...
ecslowhand wrote:
> Was für ein Display benutzt Du denn?
Das steht im ersten Beitrag dieses Threads, das 4x27 von Wintek, das es
bei Pollin für knapp 5 Euro gibt. Ein wunderbares LCD mit großer
Schrift, leider ohne Backlight und (für die jüngeren Kollegen) leider
nicht blau...
...
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.