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?
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 14: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.
Hallo Zusammen,
@Sheff: Ich meine auf dem Schaltplan eindeutig erkennen zu können das RESET über 10 10k-Ohm Widerstand auf +5V gezogen ist.
@Michael: Ich habe beide Controller vor mir liegen. Große Änderungen probiere ich auf beiden Controllern aus, kleine nur an dem jeweils angeschlossenem. Damit möchte ich den Defekt eines Controllers ausschließen.
Das mit dem JTAG ist in meinen Augen kein Problem da ich den Port D verwende.
Das Display ist auf dem Schaltplan nicht zu sehen da das der Schaltplan ist wie ich ihn der Platinenmachfirma gegeben habe. Komicherweise funktioniert der RESET-Taster nicht. Das Problem werde ich auch noch untersuchen. Das Display ist über diesen (http://rn-wissen.de/index.php/RN-Def...en#LCD_Stecker) Stecker angeschlossen und hängt im Moment an Port d.
Ich hatte die Idee das ich das Display vielleicht falsch herum angeschlossen habe. Leider hat das Umdrehen auch nichts gebracht.
Gruß Sebasti
öööhm
RnMegaNeu.pdf
ATmega 32.pdf
worum gehts jetzt?
Ich hatte die Idee das ich das Display vielleicht falsch herum angeschlossen habe.Irgendwie widerspricht sich das ganzeIch 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.![]()
Lesezeichen