Hi, ich habe da ein kleines Problem: Ich hatte am PortC meines ATmega128 ein LCD und das lief. Alles war gut. Dann habe ich in Eagle ein Schaltplan erstellt und habe mich entschieden, das LCD von PortC auf PortE zu verlegen. Ich habe das natürlich erst auf meiner Testplatine aufgebaut und muß nun Feststellen, daß mein LCD nicht mehr so will, wie ich. Ich habe natürlich die Software dahingehend umgestellt aber jetzt würfelt das LCD nur noch die Anzeige. D.h. daß manche Zeichen (vielleicht 3 - 5 Stk.) nicht mehr den orginales Text anzeigen. Wenn ich den µC resette erscheinen andere Zeichen kryptisch. Ich habe zwar zwei Timer am Laufen, ich lasse mir über die dazugehörigen Ports keine Signale ausgeben. Kann es dennoch daran liegen? Hardware: ATmage128 LCD = Displaytech 204A (an 4-Leitungsbus) LCD D4 = Port E Pin 2 LCD D5 = Port E Pin 3 LCD D6 = Port E Pin 4 LCD D7 = Port E Pin 5 LCD E = Port E Pin 6 LCD RS = Port E Pin 7 LCD RW = GND alle anderen LCD Pins sind frei, init. läuft. Danke
Hallo, damit ein LCD geht, muß es richtig angeschlossen sein und richtig angesteuert werden. Ob Du es so angeschlossen hast, wie Deine Liste sagt, muß Du selbst kontrollieren, wir haben die Schaltung nicht. Ob es richtig angesteuert wird, muß Du auch selbst rausfinden, wir kennen ja Deine Software nicht... Gruß aus Berlin Michael
doch doch, da passt alles. mir geht es bloß darum, daß mir evtl. die zwei timer mit den OC3X Ports, die ich ja fürs LCD benutze, ein strich durch die rechnung machen können. oder ob ich die als ganz normale Pins behandeln darf. (ich habe die noch nie benutzt, wisst ihr...) Gruß
Hi
> mir geht es bloß darum, daß mir evtl. die zwei timer mit den OC3X Ports, >die
ich ja fürs LCD benutze,
Ist das jetzt ein Quiz, wer am besten raten kann, wie dein Programm
aussieht?
MfG Spess
Es gibt übrigens in vielen Betriebsystemen (z.B. WinXp) auch eine eingebaute Packfunktion!
Hallo, ich halte mich im Moment mal vornehm zurück, der Source ist mir zu chaotisch... Da sind Definitionen der LCD-Sachen in der main.h, da werden .c Files in Headerfiles includiert usw. Das ist mir bei 30 Grad jetzt echt zu mühsam, da überhaupt zusammengehörige Komponenten zu finden. Gruß aus Berlin Michael
is doch ganz einfach :) alle definitionen, pin-belegungen, "dateiverwaltung", etc. sind in der main.h der feste programmablauf ist in der main.c alle funktionen der LCD-routine ist in der lcd-routines.c alle funktionen der tasten in der tasten.c alle funktionen des watchdogs in der watchdog.c . . . aber kann auch sein, daß der der es schreibt, sich darin am besten auskennt. ich denke, ich habe den fehler evtl. schon eingegrenzt. meine LCD-leitungen laufen direkt über die bahnen des quarzes, der nicht geschirmt ist (schäm) könnte ich mit meiner vermutung richtig liegen?! gruß
>ich denke, ich habe den fehler evtl. schon eingegrenzt. meine >LCD-leitungen laufen direkt über die bahnen des quarzes, der nicht >geschirmt ist (schäm) >könnte ich mit meiner vermutung richtig liegen?! Damit bringst du wenn überhaupt den Quarz ein bißchen aus dem Takt. Ich denke eher nicht daß das groß stört. Verdrahtungsfehler ist viel wahrscheinlicher.
Matze Niemand schrieb: > > ich denke, ich habe den fehler evtl. schon eingegrenzt. meine > LCD-leitungen laufen direkt über die bahnen des quarzes, der nicht > geschirmt ist (schäm) > könnte ich mit meiner vermutung richtig liegen?! > > gruß naja, wenn dein qurz geöffnet ist udn an einen quanten 3 phasen beschleuniger der auf lcd zielt dann hast du recht. > ATmega128 Port E an welche stelle wird dein port initialiesiert ? Ich finde nur A, C und F. Ich denke das wird es sein.
Hallo, Matze Niemand schrieb: > is doch ganz einfach :) > > alle definitionen, pin-belegungen, "dateiverwaltung", etc. sind in der > main.h > der feste programmablauf ist in der main.c > alle funktionen der LCD-routine ist in der lcd-routines.c > alle funktionen der tasten in der tasten.c > alle funktionen des watchdogs in der watchdog.c Naja, da werden die Meinungen wohl strak auseinander gehen... Die Definitionen, die zu einem Programmteil gehören, gehören in das zugehörige .h File, das zur Übersucht auch genauso heißen sollte. Also alle Definitionen der lcd-routines.c, die nach außen sichtbar sein sollen, in die lcd-routines.h usw. Jedes Programmteil wird (und muß) vom Compiler für sich allein übersetzbar sein. Includet werden nur die jeweilig benötigten .h Files, damit der Compiler weiß, wie Funktionen und Variablen benutzt werden müssen, die in anderen .c Files existieren. .c Files werden garnicht per include eingebunden, die werden dem Compiler nur bekannt gemacht (bei WinAVR z.B. hinzufühen existierender Source. Wenn man dann ein anderes Projekt macht und z.B. die LCD-Routinen da benutzen will, muß man nur lcd...c und lcd...h ins neue Projektverzeichnis kopieren, die .c und .h im Menü hinzufügen und da, wo benutzt, die .h Datei includen. Dann solle der Build durchlaufen und man ist fertig. Das wird Dir bei Deinem Aufbau nicht gelingen... > aber kann auch sein, daß der der es schreibt, sich darin am besten > auskennt. Das sowieso, das liegt in der Natur der Sache. Allerdings kann ich sonst, wenn ich Sourcen von anderen für mich ändern will und z.B. deren lcd-Routinen nutzen will, so wie oben verfahren und habe meist in kurzer Zeit verbleibende Fehlermeldungen und Warnungen des Compilers begradigt. Oder auf den Source verzichtet... ;-) > ich denke, ich habe den fehler evtl. schon eingegrenzt. meine > LCD-leitungen laufen direkt über die bahnen des quarzes, der nicht > geschirmt ist (schäm) Naja, da Quarz und seine Kondensatiren ja mit so kurzen Verbindungen wie möglich an den AVR sollen, frage ich moch eher, wie man da kreuzen kann. Möglich ist es zwar schon, allerdungs eher unwahrscheinlich, weil sich eher der Quarz von den LCD-Signalen gestört fühlen dürfte als umgekehrt. Ergibt sich natürlich die Frage nach anderen Problemstellen: 100n dicht an allen Spannungsanschlüssen des Mega128? Ungünstige GND /Vcc-Führung usw. usw. Gruß aus Berlin Michael
Hallo, Thomas R. schrieb: >> ATmega128 Port E > > an welche stelle wird dein port initialiesiert ? Ich finde nur A, C und > F. > Ich denke das wird es sein. In seiner Port-Init in main.c einzeln nach dem setzen der Richtung der anderen Ports. Gruß aus Berlin Michael
Warum schmeisst du nicht einfach ALLES bis auf eine minimale LCD-Ansteuerung raus? Das ist doch nur ein wildes Gestochere.
die tipps, die defines in die namensgleichen .h files aufzuteilen nehme ich mir zu herzen. deine argumentation finde ich besser als meine eigenen. ein falscher anschluss der leitungen kann ausgeschlossen werden, da ja der großteil der zeichen richtig angezeigt wird. wäre etwas falsch angeschossen würde das LCD ja gar nicht richtig initiallisiert werden... die kondensatoren zwischen vcc und gnd sind vorhanden und auch richtig eingelötet. es ging ja vorher auch. das problem trat wirklich erst nach dem "umzug" auf und die zeichenfehler sind nicht reproduzierbar. geändert wurde sonst auch nichts! gruß
Hallo, etws hilflos drein schauend im Moment... Was mir evtl. noch einfällt: an PE0 und PE1 liegen ja beim mega128 die ISP-Pins, Programmieradapter dran? Stört der? Gruß aus Berlin Michael
>Was mir evtl. noch einfällt: an PE0 und PE1 liegen ja beim mega128 die >ISP-Pins, Programmieradapter dran? Stört der? Warum sollte er wenn PE2..7 benutzt werden?
Hallo, holger schrieb: >>Was mir evtl. noch einfällt: an PE0 und PE1 liegen ja beim mega128 die >>ISP-Pins, Programmieradapter dran? Stört der? > > Warum sollte er wenn PE2..7 benutzt werden? stimmt, vergiss es einfach... hatte nur noch PortE un 128er im Kopf... Gruß aus Berlin Michael
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.