Forum: Mikrocontroller und Digitale Elektronik Für LCD nicht nutzbare Pins an Atmega8L


von Martin Z. (minze)


Lesenswert?

Nun muss ich doch schon wieder eine Frage stellen, nachdem ich mir 
wieder mal die Zähne ausgebissen habe:

Ich habe mit einem Atmega8L eine Schaltung aufgebaut, welche auf den 
Anruf eines Handys reagiert. Funktioniert auch alles wunderbar, 
allerdings zeigt mein LCD den auszugebenden Text nicht korrekt an. Statt 
"test" steht da "tVst", statt "init" steht da "afat" (reproduzierbar). 
Der Fehler scheint also eine Methode zu haben.

Ich hatte dieses Problem letztens schon bei einem Atmega644P, da 
funktionierte das LCD an PortA richtig, an PortC kamen aber nur diese 
verzerrten Worte. Mittlerweile habe ich herausgefunden, dass es an der 
JTAG-Fuse liegen könnte, hab es aber noch nicht ausprobiert.

Meine Frage ist nun, ob es etwas ähnliches für den Atmega8 zu beachten 
gibt, eine JTAG-Fuse hat er ja nicht?


Am LCD liegt es nicht, es läuft an anderen Schaltungen und andere LCDs 
zeigen an dieser Schaltung dasselbe Verhalten.

Hier ein Codeschnipsel:
1
'''''''''''''''''''''''''''''''''' LCD einstellen
2
Config Portb.0 = Output
3
Config Portb.2 = Output
4
Config Portb.3 = Output
5
Config Portb.4 = Output
6
Config Portb.5 = Output
7
Config Portd.4 = Output
8
9
Config Lcdbus = 4
10
Config Lcdpin = Pin , Rs = Portb.0 , E = Portd.4 , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5
11
Config Lcd = 40 * 2                     ', Chipset = Ks077
12
Waitms 100
13
Cls
14
Waitms 500
15
Initlcd
16
Waitms 500                              'auf Initialisierung des LCD warten
17
Cls                                     'cls ist wichtig und MUSS nach den Definitionen kommen!
18
Cursor On Blink
19
Lcd "test"
20
Waitms 1000

Einen gedeihlichen Tag wünsche ich,
Martin

von Sebastian H. (sebastian_h54)


Lesenswert?

Steht doch ALLES im Datenblatt unter Alternative Functions....

von Rush (Gast)


Lesenswert?

Sebastian H. schrieb:
> Steht doch ALLES im Datenblatt unter Alternative Functions....

Ja so ist es! Langsam kann ich MaWin verstehen.....

von syn (Gast)


Lesenswert?

>Ich habe mit einem Atmega8L eine Schaltung aufgebaut

Schaltplan zeigen.


>Meine Frage ist nun, ob es etwas ähnliches für den Atmega8 zu beachten
>gibt, eine JTAG-Fuse hat er ja nicht?

Ist AVCC angeschlossen?
Sind Abblockkondensatoren an jedem Vcc/GND Paar?
Was für eine Taktquelle benutzt der Atmega?

von Karl H. (kbuchegg)


Lesenswert?

Bitvergleiche:
1
      t           e          s         t
2
3
   01110100  01100101     01110011  01110100
4
5
      t           V          s         t
6
   01110100  01010110     01110011  01110100
1
    i           n           i          t
2
   01101001  01101110     01101001   01110100
3
4
    a           f           a           t
5
   01100001  01100110     01100001   01110100

auf 4 Bit runtergebrochen
1
   sollte sein         ist tatsächlich
2
   0111                 0111
3
   0100                 0100
4
   0110                 0101
5
   0101                 0110
6
   1110                 0110
7
...

was fällt auf?
Bit 4 ist 0, wenn es eigentlich 1 sein sollte (Buchstabe n: 1110 -> 
0110, Bucstabe i: 1001->0001)

Hier
1
...  Db7 = Portb.5
Scheint ein Problem vorzuliegen, da kommt der Pegel nicht durch.

: Bearbeitet durch User
von Janeistklar (Gast)


Lesenswert?

Bit 4, also  gemäß deiner Konfig DB7= Portb.5 ist immer 0. PortB.5 ist 
SCK, also Bestandteil der ISP. Hier muss der Fehler liegen. Entweder ist 
dein Programmer immer angesteckt, oder etwas anderes in deiner Schaltung 
zieht den Port auf GND.

von Karl H. (kbuchegg)


Lesenswert?

Interessant ist auch, warum aus einem 'e' ein 'V' wird.
Das sieht danach aus, als ob Bit 0 und Bit 1 vertauscht wären. Der 
Befund lässt sich aber an anderer Stelle nicht reproduzieren.

von Thomas D. (thomasderbastler)


Lesenswert?

Ich vermisse den Locate Befehl

von Karl H. (kbuchegg)


Lesenswert?

Kannst du mir mal verraten, was LOCATE (Cursor Positionieren) damit zu 
tun hat, dass falsche Buchstaben auf dem LCD auftauchen?
Wird dem LCD ein bestimmter ASCII Code übergeben und es stellt einen 
ganz anderen ASCII Code dar, dann liegt das Problem in der Verkabelung. 
Das geht von 'Pin  nicht im IC Sockel', Sockel schlecht gelötet, Stecker 
schlecht gelötet, Kabel gebrochen, bis zur Lötstelle am LCD. Da ist ja 
der TO mit seiner Vermutung das alternate Pin Funktions etwas damit zu 
tun haben könnten noch näher drann. Die könnten wenigstens dafür sorgen, 
dass der Pin nicht 1 werden kann. Und wenns nur der ISP Programmer ist, 
der den Pin drückt.

: Bearbeitet durch User
von Thomas D. (thomasderbastler)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Kannst du mir mal verraten, was LOCATE (Cursor Positionieren) damit zu
> tun hat, dass falsche Buchstaben auf dem LCD auftauchen?

Hast recht , dachte aber vollständigkeitshalber.
Wenn aber die Verkabelung falsch wäre, dann ( habe ich mal die Erfahrung 
gemacht) würde er sowas sehen :
############

von Stefan (Gast)


Lesenswert?

> würde er sowas sehen : ############

Nicht unbedingt. Denn es könnte sein, dass der Initialisierungsbefehl 
auch bit 4 = Low hat.

Ist AVCC angeschlossen? Wenn das nicht der Fall ist, ist jedes weitere 
herumraten sinnlos.

von Thomas D. (thomasderbastler)


Lesenswert?

Ganz klar, Schaltplan und Bild vom Aufbau bräuchten wir.

von MWS (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> was fällt auf?
> Bit 4 ist 0, wenn es eigentlich 1 sein sollte (Buchstabe n: 1110 ->
> 0110, Bucstabe i: 1001->0001

So einfach ist die Logik nicht, denn wenn man Deinen Bitvergleich 
ansieht, dann sieht man, dass es auch an anderer Stelle nicht stimmt:

> e
> 01100101
> V
> 01010110

Der TE zeigt den Wert für $crystal nicht, es kann einfach sein, dass das 
Timing nicht stimmt, weil der µC mit höherem Takt als angegeben läuft.

von Martin Z. (minze)


Lesenswert?

Mr. Buchegger (wieder einmal) und Janeistklar hatten vollkommen recht, 
vielen Dank dafür.

Der Rest meines folgenden Textes gilt den Menschen, welche sich ihr Ego 
durch ihre den Anderen überlegenen Kenntnisse über den µC aufbauen:

Mein Neid gilt denen, die das mehrere hundert Seiten starke Handbuch 
auswendig gelernt haben.
Ich habe nach den ersten beiden Antworten nach "alternative functions" 
gesucht, erfolglos. Danach begann ich, jeden ISP-Pin auf einen anderen 
µC-Port zu legen. Entgegen Murphy war's gleich der erste, SCK.

Nun stellt euch doch mal folgendes vor:
Ich baue die Schaltung auf, schließe das LCD an, es erscheint aber statt 
"test" nur "tVst". Zunächst denke ich an einen Softwarefehler und prüfe 
wieder und wieder die in Bascom gemachten Einstellungen. Ja, in der 
Hinsicht ist es auch wurscht, ob ich B ascom für B löde oder C für 
C oole nehme, denn in anderen "Projekten" lief es mit Bascom auch, 
scheint also kein grundsätzlicher Bascomfehler zu sein.

Anschließend stecke ich ein anderes LCD an, welches zufälliger- und 
glücklicherweise noch da ist und in einer anderen Schaltung 
funktioniert. Es zeigt denselben Fehler. Auch die Anhebung der Spannung 
auf 5V bringt keinen Unterschied (außer natürlich einen 
Kontrastunterschied), scheint also kein LCD-Fehler zu sein.

Ich stecke den Atmega8L in die eben genannte andere Schaltung und 
programmiere ihn um, läuft alles scheint also kein Atmega-Fehler zu 
sein.

Es stellt sich erste Ratlosigkeit ein, in mir keimt der Gedanke auf, 
dass der Fehler doch nicht bei mir zu suchen ist. Ich befrage google mit 
Stichworten, wie "LCD, Atmega, PINS, fehlerhafte Ausgabe" usw.. Dort 
finde ich nur Einträge zur oben genannten JTAG-Fuse, welche beim Atmega8 
aber keine Entsprechung hat. Es scheint also kein JTAG-Fehler zu sein.

Natürlich könnte es eine andere Fuse sein, aber keine klingt nach 
"(de)aktiviere mich, denn ich könnte deine LCD-Ausgabe versauen"

Mittlerweile ist viel Zeit vergangen und ich bin sicher, jeder, außer 
die ersten beiden Antwortenden, können ahnen, wieviel Zeit bei so einer 
Fehlersuche drauf geht. Die Ratlosigkeit steigt so weit, dass ich mich 
ans Mikrocontrollerforum wende, in der Hoffnung, dass es sich trotz 
erfolgloser google-Suche um ein bekanntes Problem handelt. Ich hab nicht 
bis kurz vor zwei in der Nase gebohrt, dann 5 Minuten den Fehler gesucht 
und dachte dann: "Sollen's doch die Deppen lösen, die kein Leben haben 
und mir kurz nach zwei antworten!"
Eventuell hätte ich das erwähnen sollen.
Bei der Fragestellung versuche ich, Newbie-Fehler so weit wie möglich zu 
vermeiden. Einen Schaltplan habe ich nicht angehängt, ok, aber der 
Codeschnipsel zeigte, an welchen Pins das LCD hängt.

Die ersten beiden Antworten lauten dann:
> Steht doch ALLES im Datenblatt unter Alternative Functions....
Wie soll ich denn darauf kommen, dass ich das unter "alternative 
functions" finde? Wenn ich "alternative" und "alternative functions" als 
Suchbegriff im pdf eingebe, komme ich auf keine für mich verwertbaren 
Ergebnisse.

> Sebastian H. schrieb:
>> Steht doch ALLES im Datenblatt unter Alternative Functions....

> Ja so ist es! Langsam kann ich MaWin verstehen....."

Um den Erstellern dieser zwei Zitate keine Genugtuung zu verschaffen, 
werde ich hier nicht weiter darauf eingehen.
Vielmehr möchte ich nochmal Mr. Buchegger und Janeistklar danken, die 
sich die Zeit genommen haben, die Ergebnisse der "Schaltung" zu 
simulieren und auszuwerten. Ich muss zugeben, ich weiß noch nicht mal, 
wie sie es gemacht haben.

Trotz dessen wünsche ich der werten Netzgemeinde zwei friedliche Monate 
bis Weihnachten ;-)

von Karl H. (kbuchegg)


Lesenswert?

Martin Zippel schrieb:

> simulieren und auszuwerten. Ich muss zugeben, ich weiß noch nicht mal,
> wie sie es gemacht haben.

Ganz einfach:
Wenn du am LCD eine Ausgabe hast, dann muss schon mal eine ganze Menge 
stimmen.

Kriegst du falsche texte, dann sieht man sich die ASCII Codes der 
Buchstaben an. Durch Vergleich der ASCII-Codes auf Bitebene der Zeichen, 
wie sie sein sollten und wie sie dann tatsächlich aufscheinen, sieht man 
sich einfach an, welche Bits richtig sind und welche falsch. Dann sucht 
man nach Zusammenhängen wie zb vertauschte Bits, Bits die immer 0 sind, 
Bits die immer 1 sind, etc. Also einfach Mustervergleichen. Bei einem 
Buchstabenpaar ist das noch nicht sehr aussagekräftig, hat man aber 
mehrere Buchstabenpaare, dann kristallisiert sich schnell eine Hypothese 
heraus.

von MWS (Gast)


Lesenswert?

Martin Zippel schrieb:
> >>> insert monstrous text here <<<

Was Du bei all dem Gemecker und Selbstdarstellung vergessen hast: der 
nächste Anfänger, der das liest, wird genausowenig kapieren, was los 
war. Denn statt den Fehler eindeutig zu nennen, klagst Du nur Dein 
eigenes vermeintliches Leid.

Die meisten Programmer belasten den uC in der Schaltung nicht, solange 
sie selbst mit Strom versorgt werden. Nimmt man ihnen diese jedoch, ohne 
sie vom ISP zu nehmen, so gibt's ungewohnte Effekte.

Das oder Ähnliches wäre wertvolle Information für Nachfolgende mit 
vergleichbarem Problem gewesen, statt dessen gab's dieses Geweine.

Letzteres ist sowieso zweckfrei, denn das ist uns allen schon passiert, 
dass wir an einem Problem rumgekaut haben. Wenn Du mit den gegebenen 
Hinweisen nicht klar kamst, selbst schuld, musst Dich halt mehr 
anstrengen, es gibt keine Garantie in 'nem Forum für genau die richtige 
Hilfe. Wenn Du Garantien willst, kauf Dir irgendwo Support.

Sei froh, dass es Leute wie Karl-Heinz gibt und flenn nicht wegen der 
Anderen rum, zumal Du's ja auch nicht besser machst, s.o.

von Martin Z. (minze)


Lesenswert?

Ich war gestern schwach und habe mich auf eine dieser nichtsnutzigen 
Diskussionen im Internet eingelassen. Viel schlimmer noch, ich habe sie 
begonnen :-D Ich werde unser aller Gemüt schonen und nicht weiter darauf 
eingehen.

> Was Du bei all dem Gemecker und Selbstdarstellung vergessen hast: der  nächste
> Anfänger, der das liest, wird genausowenig kapieren, was los war.
> Denn statt den Fehler eindeutig zu nennen, klagst Du nur Dein eigenes
> vermeintliches Leid.

Janeistklar sagte, es liegt am SCK und ich habe das bestätigt.
Ich habe nicht nur mein Leid geklagt, ich hab auch erwähnt, wie das 
Problem "gelöst" wurde. Also nochmal klar für alle Leser, die es sich 
bisher nicht zusammenreimen konnten:

> Die meisten Programmer belasten den uC in der Schaltung nicht, solange
> sie selbst mit Strom versorgt werden. Nimmt man ihnen diese jedoch, ohne
> sie vom ISP zu nehmen, so gibt's ungewohnte Effekte.


Ich bin beeindruckt, dass ihr aus einem verwurschtelten Wort mit vier 
Buchstaben die Ursache bis auf den Pin zurückverfolgen konntet!


Gehabt euch wohl und
> Letzteres ist sowieso zweckfrei, denn das ist uns allen schon passiert,
> dass wir an einem Problem rumgekaut haben.

Denkt daran bei eurer nächsten Antwort.

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.