hast du überprüft, ob die Fusebits für den Takt richtig sind?
Sind die JTAG-Anschlüsse auf Port C? dann: ist JTAG disabled? (auch Fusebits...)
Hallo Leute,
Ich komm hier momentan auf keinen grünen Zweig mehr und hoffe das ihr vielleicht einen Rat wisst. Ich selbst bin mit meinen Ideen am Ende.
Folgendes: Ich habe eine Schaltung Mit einem LCD 16x2 Dotmatrix-Display an einem ATMega32.
Diese Schaltung hat auch über mehrere Monate hinweg super gute Dienste geleistet. In den letzten Tagen habe ich dann nun an der Software im Controller noch einige änderungen vor genommen (Die aber nichts mit dem LCD zu tun hatten) und dann plötzlich funktionierte das LCD nicht mehr. Bzw. es wird nur noch die erste Zeile vollständig angezeigt (Alle Dots an).
Zur Hardwareverbindung:
RS -> PA4
R/W -> PA5
E -> PA6
D0-3 -> GND
D4 -> PC7
D5 -> PC6
D6 -> PC5
D7 -> PC4
Um einen Fehler im großen Programm zu vermeiden habe ich ein kleines Test-Programm geschrieben, was einfach nur etwas auf dem LCD anzeigen soll:
Mit diesem Programm sollte ja auf dem Display definitiv text erscheinen.Code:$regfile = "m32def.dat" $crystal = 8000000 Config Lcdpin = Pin , Db4 = Portc.7 , Db5 = Portc.6 , Db6 = Portc.5 , Db7 = Portc.4 , E = Porta.6 , Rs = Porta.4 Config Lcd = 16 * 2 Config Lcdbus = 4 Config Porta.5 = Output Porta.5 = 0 Initlcd Waitms 10 Cls Locate 1 , 1 Lcd "Hallo Welt" Do Loop End
Nun habe ich folgende Dinge getan:
- Einen anderen ATMega32 verwendet -> gleiches Verhalten
- Das Diplay gegen ein anderes Display (auch 16x2 nur in grün, statt in blau) ausgetauscht -> Exakt gleiches Verhalten
- Die Leiterbahnen auch fehlverbingungen überprüft -> keine gefunden.
Ich bin echt am Ende. Es wird mir immer die obere Zeile am LCD komplett angezeigt. Was ja irgendwie darauf hin deutet, das schon die Initialisierung irgendwie nicht richtig funktioniert.
Ich weiß leider keine Möglichkeit mehr woran es liegen könnte.
Hoffe ihr könnt mir noch irgend einen Tipp geben.
Nochmal zum Hinweis: Die Schaltung funktionierte über Monate hinweg einwandfrei. Also bitte keine Aussagen dass das Display vielleicht falsch angeschlossen sei oder so.
Danke schonmal für jeden hilfreichen Tipp
Gruß Robodriver
Wer aufhört besser zu werden, hat aufgehört gut zu sein
Jeder I/O Port kennt drei Zustände: Input, Output, Kaputt
hast du überprüft, ob die Fusebits für den Takt richtig sind?
Sind die JTAG-Anschlüsse auf Port C? dann: ist JTAG disabled? (auch Fusebits...)
Gruß, AlKi
Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
==> UMPROGRAMMIEREN!
Kubuntu
Also wenn ich mal chr-mt aus diesem Thread zitieren darf:
https://www.roboternetz.de/phpBB2/vi...=371284#371284
Zitat:
Hi,
ich würde trotz Tabs nicht auf die 1.11.9.1 updaten.
Da sind noch einige Bugs drin.
Unter anderem sind einige def-Files wohl fehlerhaft,
und die Befehle CLS Text und CLS Graph für Grafikdisplays funktionieren nicht mehr.
Ich hoffe, daß es bald eine neue Version gibt,
in der die Fehler beseitigt sind.
Ich bin jedenfalls wieder zurück zur 1.11.9.0
Gruß
Christopher
Zitat Ende.
Könnte es sein das Du gerade ein Update gemacht hast?
Netter Gruß
Die ersten zehn Millionen Jahre waren die schlimmsten. Und die zweiten Zehn Millionen Jahre, die waren auch die schlimmsten.url
Also: Ich nutze noch die 1.11.9.0 Version. Dann werde ich die auch mal nicht Updaten.
@A|KI:
JTAG war enabled. Hab es jetzt desabled und schon hats funktioniert!
Tausend Dank für deinen Hinweis. Du glaubst gar nicht wie dankbar ich bin.
War schon total verzweifelt.
So wie es scheint muss dann aber mal beim Brennen oder so was schief gegangen sein. An den Fuses an sich habe ich nichts geändert. Aber offensichtlich muss sich dieses eine Bit ja bei irgendeinem flashen mal geändert haben.
Oder kann sowas auch während der Laufzeit passieren?
Weil ich hatte Probleme, das der Controller manchmal nicht hoch läuft. Ausgänge irgendwo bei 2,5 Volt rum hängen und teils erst nach 3-4 Sekunden das Programm los lief. Keine Ahnung was ihn da zum hängen gebracht hat. Aber vielleicht wurde durch diesen Zustand irgendwann dieses Bit gesetzt...
Oder was meint ihr? Vielleicht kann man das noch aufklären, damit mir das nicht nochmal passiert (oder anderen)
Trotzdem noch tausend mal Danke.
Wer aufhört besser zu werden, hat aufgehört gut zu sein
Jeder I/O Port kennt drei Zustände: Input, Output, Kaputt
Wenn das die Betriebsspannung war, dann kanns schon sein, dass der MC in nen undefinierten Zustand fällt (steht zumindest auch in anderen Datenblättern drin). Dabei besteht die Möglichkeit, dass Bits unkontrolliert verändert werden.irgendwo bei 2,5 Volt rum hängen
Darum gibts bei manchen AVRs ne Brown-out detection, damit sowas net passiert.
Gruß, AlKi
Jeder Mensch lebt wie ein Uhrwerk, wie ein Computer programmiert...
==> UMPROGRAMMIEREN!
Kubuntu
Nee, also die Versorgungsspannung kommt bei mir von nem Akku, Und der hat 12V und hinter dem 7805er dann 5V. Also die Spannung ist stabil.
Was ich mir jetzt gerade überlegt habe, weils mir aufgefallen ist:
Mein Programm auf dem Controller ist schon sehr groß. In Basic sind das über 1000 Programmzeilen. Beim Kompilieren zeigt er mir 43% Flashused.
Wenn ich mir aber die HEX-File ansehe, dann ist die 40KB groß.
Aber der M32 hat doch nur 32KB Flash.
Gut, in der HEX sind noch die Adressen mit drin die ja nicht als Daten im Flash landen. Aber dennoch. wenn das 43% sein sollen, dann müssten von den 40KB nur 17,2KB effektiv Daten sein. Und das es so wenig ist glaub ich nicht.
Kann es sein, das mir das da irgendwie Probleme bringt?
Wer aufhört besser zu werden, hat aufgehört gut zu sein
Jeder I/O Port kennt drei Zustände: Input, Output, Kaputt
Lesezeichen