Forum: Mikrocontroller und Digitale Elektronik Hilfe bei Fehlersuche (Mega16 + gLCD)


von Nils B. (Gast)


Lesenswert?

allo zusammen!!

Hab ein "kleines" Problem mit einem mega16 und einem gLCD mit
T6963C-Controller!!

Mein mega16 läuft einwandfrei, habe ein Programm geschrieben, dass
einen Port abwechselnd von "Null" auf "Eins" setzt, und somit ein
Relais "klackern" lässt, damit ich weiß das der Controller noch
läuft.

hintergrundbeleuchtung funktioniert ebenfalls!!

stecke ich nun meine Flachbandleitung zur Verbindung des Controllers
mit den Pins an meinem Controller ein, so sehe ich dort alles
"schwarze Punkte".
Jedoch hört dann auch plötzlich mein Relais auf zu klackern!! Das heißt
irgendwas stimmt nicht so 100%!!

Ich kann auch den Kontrast verstellen, alles kein Problem!!

Woran könnte es liegen? Falsche Verdrahtung irgendwie?
Programmierfehler schließe ich mal aus, habe es mit Bascom gemacht, und
so ziemlich alles aus dem Beispiel übernommen...

Die Leitung ist relativ lang, ist ein altes Floppy-Kabel...so ca.
35cm...

Danke schonmal für eure Hilfe!!!

von Nils B. (Gast)


Lesenswert?

Hier noch ein paar mehr Infos:

Das Programm lautet:

$regfile = "m16def.dat"
$crystal = 3686400 '(fuse bits habe ich in Bascom auf 1111 1111
gesetzt, scheint auch zu laufen)

Config Portd.2 = Output 'Relais über ULN2003 an Port D.2

Config Graphlcd = 240 * 64, Dataport = Portc, Controlport = Portb, Ce =
4, Cd = 1 , Wr = 2 , Rd = 3 , Reset = 0 , FS = 5 , Mode = 8

Cls
Wait 1
Cursor Off

wait 1
Do
Portd.2 = 1
waitms 500
Locate 1 , 1
Lcd "GMB"
Locate 2 , 1
Lcd "GLCD"
Portd.2 = 0
waitms 500
Loop


Habe alles wie oben angeschlossen, jedoch habe ich die
"Font-Select"-Leitung direkt auf Masse gelegt, und nicht an den
Port-Pin (ist das evtl. sogar schon der Fehler?!?! Der Port-Pin dem ich
"FS" zugewiesen hab, ist aber "frei" in der Luft) , gemäß Datenblatt
meines "Powertip PG24064LRU-ET A-H-SB" habe ich dann "8x8 dots
font"...

D0 ist an PC0, D1 ist an PC1, D2 an PC2 und so weiter

Kontrast lässt sich über das Poti regeln, also die Punkte werden alle
schwarz...

Beim einstecken der Spannungsversorgung ist für den Bruchteil einer
Sekunde ein Balken quer auf dem Display zu sehen, danach wird alles
"schwarz", je nach Kontrast halt

Wie kann ich testen ob der mega16 auch wirklich mit dem 3.6864Mhz-Quarz
läuft? Lese ich die Fuse-Bits aus, liest er "1111 1111" aus, also das
sollte ja passen soweit, richtig?

von Nils B. (Gast)


Lesenswert?

Ich hab jetzt schon alles ausprobiert, habe auch mal "FS" direkt an
den zugeordneten Portpin gelegt, funktioniert alles nicht!!

Mitlerweile klackert das Relais gar nicht mehr.... :-/

Woran liegt es?!?

von Nils B. (Gast)


Lesenswert?

Habe mal die Leitung gekürzt, ist jetzt ca. 10cm nur noch lang, es tut
sich aber immer noch nichts!!

Liegt es an der Programmierung? Habe alle Pins durchgemessen, es kommt
so an, wie oben beschrieben!! Habe direkt an den Pins am Controller
gemessen!!

von Nils B. (Gast)


Lesenswert?

Ich habe jetzt mal ein Programm geschrieben, das auf das Display gar
nicht zugreift, nun bekomme ich "Hyroglyphen" angezeigt auf dem
display, die wild umherblinken!!

Schreibe ich wieder

"Config Graphlcd = 240 * 64" etc. in das Programm, dann hängt er sich
auf an der Stelle, und auf dem Display ist ein schwarzer Balken zu
sehen...der sieht aber auch nicht ganz "normal" aus, sondern
irgendwie merkwürdig (kann man schwer beschreiben)

Hat denn niemand einen Tip für mich? Ich bin mit meinem Latein am
Ende!!!!!!!!!!!!!!!

von Sascha S. (sascha)


Angehängte Dateien:

Lesenswert?

Schwarzer Balken?
Sieht nach einem Reset von dem Display aus. Sieht man, wenn der Reset
zu lange ansteht. Der Rest funktioniert wohl nicht, weil das Programm
nicht auf das Display zugreifen kann. Nutze kein BASCOM. Aber der
T6963C hat ein Status-Register, was vor dem Beschreiben ausgelesen
wird. Solange das nicht paßt, wird das nichts an Dsiplay geschickt.
Ansonsten siehe mal im Anhang. Da ist ein Source für WINAVR.

Mfg Sascha

von Nils B. (Gast)


Lesenswert?

Hallo!!

Wie gesagt, solange kein Zugriff auf das Display erfolgt, sehe ich
wilde "Hyroglyphen", wenn ich dann in Bascom das Display
initialisiere, kommen 2 Fehlerarten vor:

Einmal hatte ich es so, das ich kurz einen schwarzen Balken sehe, der
dann direkt wieder verschwindet, und danach bleibt das Display leer.

Und einmal ist es so, das ich auch erst Hyroglyphen sehen, und nach der
Initialiserung in Bascom sehe ich dann einen schwarzen Streifen, der
sogar bis zum "Rand" geht, und dann nach abschalten der Spannung erst
gaaaanz langsam wieder verschwindet...

von Sascha S. (sascha)


Lesenswert?

"Einmal hatte ich es so, das ich kurz einen schwarzen Balken sehe, der
dann direkt wieder verschwindet, und danach bleibt das Display leer.
"
Gut, Reset hat dann funktioniert.


"Einmal hatte ich es so, das ich kurz einen schwarzen Balken sehe,
der
dann direkt wieder verschwindet, und danach bleibt das Display leer.
"
Nicht gut, da bleibt der RESET an. Das Problem kenne ich.

"wilde "Hyroglyphen"

Ist normal, wenn das Display einegschaltet ist und noch nicht
initialisiert/Resetet wurde.

Mfg Sascha

von Nils B. (Gast)


Lesenswert?

Mmmmh...also, Reset "funktioniert" dann schonmal, aber warum bekommt
das Display keine Zeichen?

Was ich ja auch schon erwähnte: der mega16 hört auf zu arbeiten, nach
der Initialisierung ist eine Schleife, die das Relais mit 1Hz
"klackern" lässt, ziehe ich die Leitung zum Display heraus, geht der
Controller weiter...erwartet er evtl. eine "Rückmeldung" vom Display?
Ohne die er nicht weiter macht? Wenn ja, auf welcher Leitung wäre das?

von Sascha S. (sascha)


Lesenswert?

Hatte ich doch schon geschrieben:
Aber der T6963C hat ein Status-Register, was vor dem Beschreiben
ausgelesen wird. Solange das nicht paßt, wird das nichts an Dsiplay
geschickt.

void lcd_status(void)
        {
        DATA_DIR_IN();
        LCD_CD_H();             // Commando High
        LCD_RD_L();             // Read Low
        LCD_CE_L();             // Chip Enable Low
        LCD_STATUS = LCD_READ;  // Status lesen
        LCD_CE_H();             // Chip Enable High
    LCD_RD_H();             // Read High
        LCD_STATUS &= (0x03);   // Bits ausmaskieren
        }

So sieht es bei mir in GCC aus. Es wird auf 0x03 verglichen. Kommt was
anderes vom Display, ist es nicht bereit vom ATmega Daten zu
empfangen.

Mfg Sascha

von Nils B. (Gast)


Lesenswert?

Mmmmmh...dann werde ich mal versuchen, das mit GCC zu machen, ich hoffe
nur ich bekomme das hin...ist dann wohl ein Fehler in Bascom? Bzw. mein
Display nicht kompatibel dazu (obwohl es den T6963C-Controller
hat)!?!?!

Was könnte es denn noch für ein Fehler sein? Und warum macht der mega16
nicht weiter mit seiner "Arbeit"?!?!

von Sascha S. (sascha)


Lesenswert?

Er macht nicht weiter, weil er auf den passenden Status vom Display
wartet. Hast du JTAG abgeschaltet? Weil sonst geht der Port C nicht
so!

Mfg Sascha

von Nils B. (Gast)


Lesenswert?

Mmmmh...ich habe da "wissentlich" nichts an/abgeschaltet...könnte es
denn daran liegen? Steht wahrscheinlich im Datenblatt, wie ich JTAG
abschalte, oder?

von Sascha S. (sascha)


Lesenswert?

Ja, per FUSEBIT. Und daran kann es dann wesentlich liegen.......
Sollte bei BASCOM beim Programmier-Menu aber auch stehen.


Mfg Sascha

von Nils B. (Gast)


Lesenswert?

Hab in Bascom mal die Fuses gelesen, und JTAG ausgeschaltet, er zeigt
mir beim schreiben des Programmes immer "Difference at 0040", aber
das gLCD läuft jetzt!!

Woher könnte die Fehlermeldung kommen?

Wobei, es läuft ja...*lach*

Du bist mein Held!! :-P

von Sascha S. (sascha)


Lesenswert?

Schon gut, bin damals selber darauf mal reingefallen.
"Difference at 0040"

Ev. mal den Mega16 ein paar mal löschen bevor du ihn wieder progst.
Könnte nen Fehler im Flash sein.

Mfg Sascha

von Nils B. (Gast)


Lesenswert?

Mmmmh...habe keine Ahnung woran es liegt, muss erstmal gucken ob ich das
mit Bascom überhaupt machen kann, das löschen...aber das soll mich nicht
weiter stören, hauptsache das gLCD läuft erstmal!!

Danke auf jeden Fall für die Hilfe!! Direkt der erste "Tip" passte!!
Das nenne ich mal Effizienz!! Und dazu noch der erste, der überhaupt
geholfen hat!!

von Simon K. (simon) Benutzerseite


Lesenswert?

natürlich geht das löschen mit bascom. heißt "erase"

von Michael F. (michael)


Lesenswert?

Bei Bascom gibt es im Verzeichnis SAMPLES eine Datei mit dem Namen
t6963v3.bas diese habe ich als Basis genommen.

Guckst Du hier
http://www.db9xq.de/tacho.php

von Nils B. (Gast)


Lesenswert?

Ich hab den Fehler schon gefunden, man sollte einen mega8 nicht parallel
dazu im Programmiergerät sitzen haben...*Kopf auf Tisch schlag*

Na egal, Danke nochmal vielmals an alle, besonders an Sascha für den
Tip mit dem JTAG!!!!!

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
Noch kein Account? Hier anmelden.