Hmmm... ist echt verrückt...
Überprüf mal dein Kontrastpoti und Kondensator kurz auslöten (bald gehen mir die Vorschläge aus )
Hallo Sheff,
bis auf den Spannungswandler LM7805 wird nichts warm.
Ich gehe auch davon das dass ich das Kabel richtig Konfektioniert habe da ich die Leitungen schon von Display bis zum RnMega2560 mit dem Durchgangsprüfer getestet habe.
Gruß Sebasti
Hmmm... ist echt verrückt...
Überprüf mal dein Kontrastpoti und Kondensator kurz auslöten (bald gehen mir die Vorschläge aus )
Das bringt leider auch nichts.
Macht es Sinn wenn ich die Signalverläufe der einzellnen Ausgänge aufzeichne und hier poste?
Gruß Sebasti
könntest gucken, ob die Signale beim LCD auch so ankommen, wie µC sie ausgibt...Macht es Sinn wenn ich die Signalverläufe der einzellnen Ausgänge aufzeichne und hier poste?
Läuft es denn an einem anderen Port? Passen die Fuses? Nicht dass der Watchdog immer an ist. Mal einen langsameren Takt probiert? Kannst Du an diesem Port LEDs einzeln ansteuern? (z.B. Lauflicht)
Wenn das Herz involviert ist, steht die Logik außen vor! \/
Hallo Sebasti,
auf der Pollin-Seite (dein Link im ersten Beitrag) steht es recht deutlich, daß das Display 2 Controller hat.
Das wird auch nochmal in deinem verlinkten Datenblatt deutlich, E1 und E2 sind auf Pin6 und 7 des Displays.
Bei der Initialisierung müssen natürlich beide Displayhälften gestartet werden.
Gruß, MichaelCode:$regfile = "m32def.dat" 'Atmega32 CPU $crystal = 16000000 'Quarz 16Mhz $hwstack = 64 $swstack = 64 $framesize = 40 Ddrb = &B11111111 Config Lcd = 40 * 4 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.6 , E2 = Portc.5 , Rs = Portc.7 Dim ___lcdno As Byte Dim Y As Byte ___lcdno = 0 Initlcd Cls ___lcdno = 1 Initlcd Cls Do ___lcdno = 0 Locate 1 , 1 Lcd "1.Zeile " ; Y Waitms 1000 Y = Y + 1 Locate 2 , 1 Lcd "2.Zeile " ; Y Waitms 1000 ___lcdno = 1 Locate 1 , 5 Lcd "3.Zeile " ; Y Waitms 1000 Y = Y - 1 Locate 2 , 5 Lcd "4.Zeile " ; Y Waitms 1000 Y = Y + 1 Locate 2 , 25 If Y < 100 Then Lcd " "; End If If Y < 10 Then Lcd " "; End If Lcd Y Loop End
Geändert von Michael (12.03.2011 um 15:46 Uhr)
Hallo zusammen,
Entschuldigung für die Wartezeit, aber jetzt geht es weiter.
@Michael: Ich weiss. Nach meinen Kenntnisstand sollte die obere Displayhälfte auch was anzeigen wenn man nur das obere Initalisiert. Außerdem laufen meine Versuche im Moment mit dem 16 * 4 Display da dies vor 2 Jahren definitiv mal funktioniert hat. Ich hatte für das große Display auch das Testprogramm wie in der Wiki beschrieben verwendet.
Mal so eine kleine Zwischenfrage: die Funktion Ddrb = &B11111111 verstehe ich nicht ganz. Ich weis das man mit dieser Funktion Ports als Eingang und Ausgang definieren kann, ich weiss nur nicht wie sich die Funktion aufbaut! Kannst du mir das bitte erklären?
@peterfido: Nein es läuft nicht an einem anderem Port.
Ich habe einfach mal das Display abgeklemmt und ein paar LEDs angeschlossen. Das Ergebnis ist das der Controller definitiv arbeitet da die LEDs Leuchten, blinken.... auf jedenfall mehrfach den Zustand wechseln. Außerdem kann ich die Bordeigene LED (Portd.1) blinken lassen.
Der Watchdog war mir bis jetzt unbekannt. Leider bringt der Einbau des Befehls stop watchdog auch nichts...
Ich denke schon das die Fuses stimmen, kann das aber nicht genau beurteilen.
Deswegen findest du im Anhang einen Screenshot von den Fusbites.
Bei der Überprüfung ist mir aufgefallen das die Frequenz im Programm auf 16 MHz eingestellt war obwohl der Atmega im Moment nur mit einem MHz intern arbeitet.
Leider bringt die Korrektur auch nichts.
Zwichendurch ist mir noch aufgefallen das der Reset auf dem Atmega32-Board nicht funktioniert. Weiss jemand ob das was mit dem Fusebites oder dem Layout zu tun hat? (im Anhang ist das Layout)
Gruß Sebasti
Hatte einmal ein Problem mit einem AT90PWM. Der Reset-Pin hing auch einfch so in der Luft wie in deiner Schaltung und so hat das nicht funktioniert. Der Pin braucht entweder 0 oder 1, aber laut Schaltplan hängt er einfach in der Luft. Ich würde Reset über ein Widerstand (z.B. 10k) auf Vcc ziehen.
Hallo Sebasti,
das ist keine Funktion, das ist einfach die Anweisung, das Datenrichtungsregister mit dem angegebenen Binärwert zu laden.die Funktion Ddrb = &B11111111 verstehe ich nicht ganz.
Gehört zugegebenermaßen nicht zum Thema. Das Programm, das ich gepostet habe, war nur ein Auszug.
Deine Programme zielten bisher auf den Atmega2560, jetzt bist du auf Atmega32 umgeschwenkt?
Dein PDF zeigt auch einen Mega32, aber kein Display?
Auf deiner angehängten Grafik sieht man schön, wie JTAG eingeschaltet ist, solltest du Pins von PortC nutzen wollen, mußt du das abschalten.
@Sheff:
Das Problem mit dem Reset ist keins. Im AVR ist bereits ein interner Pullup eingebaut. Den Rest erledigt die SUT.
Ich benutze nie einen Pullup an Reset, was sollte das auch bringen?
Gruß, Michael
Wie gesagt, bei dem AT90PWM hatte ich Probleme, weil der Reset-Pin in der Luft war.Ich benutze nie einen Pullup an Reset, was sollte das auch bringen?
Bei den logischen Gattern hatte ich am Anfang auch Probleme, da ich dachte "0 = keine Spannung" . Sollte aber entweder 1 = 5V oder 0 = 0V = GND sein.
Lesezeichen