Hi alle zusammen, ich habe folgendes Problem: Undzwar habe ich eine Temperaturregelung aufgebaut. Auf dem ersten Layout hat diese einwandfrei funktioniert. Nun hab ich das Layout ein wenig abgeändert, neue Platine geätzt. Und es tut sich garnichts mehr. Sprich mein Display bleibt komplett leer. Ich benutze den internen Quarz mit 8 Mhz. Als erstes habe ich mir dann ein Testprogramm geschrieben welches mir nur "Test" auf das Display ausgeben sollte. Zu sehen bekam ich nur Hyroglyphen. Ich stellte das interne Quarz auf 4 Mhz und siehe da, ich bekam "Test" angezeigt. Im AVR Studio hatte ich in den Projekteigenschaften 8MHz eingestellt. Dann habe ich in den Projekteigenschaften den Quarz auf 16 MHz gestellt, und den internen quarz auf 8Mhz und siehe da es funktionierte auch. Wie kann so was sein? Dann hatte ich mein Programm zur Temperaturregelung geflasht. Den internen Quarz auf 8Mhz gestellt, in den Eigenschaften 16Mhz eingestellt. Es funktionierte aber nicht. Das Programm funktioniert auf dem neuen Layout überhaupt nicht. Wie kann das sein. Auf dem ersten Layout lief es schließlich auch. Vom Schematic her hat sich auch nichts geändert, wirklich nur das Layout... Hat jemand schonmal ähnliche Erfahrungen gemacht? Oder kann mir evtl. jemand sagen was ich evtl. falsch gemacht habe? Vielleicht Controller kaputt ? MfG Konrad
>Ich benutze den internen Quarz mit 8 Mhz.
Ist kein Quarz, sondern ein RC-Oszillator (ungenau, temperaturabhängig).
Aber zum Problem: es liegt wohl an der Initialisierung des Displays.
Verlängere mal die Pausen zwischen den Befehlen bei der Initialisierung.
Im Datenblatt des Displays müssten die drinstehen, vergleiche sie mit
deinem Programm.
Rush wrote: > Dann hatte ich mein Programm zur Temperaturregelung geflasht. Den > internen Quarz auf 8Mhz gestellt, in den Eigenschaften 16Mhz > eingestellt. Es funktionierte aber nicht. Welchen Grund hast Du denn, den Compiler anzulügen? Da kann ich gut verstehen, daß dann der MC eingeschnappt ist. Warum willst Du dem Compiler nicht sagen, mit welcher Frequenz der MC wirklich läuft? Peter
Was du im Studio dem Compiler mitteilst, das beeinflusst die Delays in <util/delay.h>, und sonst nichts. Der Controller wird dadurch nicht schneller und nicht langsamer und auch die Fuses, die den real verwendeten Takt definieren, werden davon nicht beeinflusst. Steht also der Compiler auf 16, die Hardware auf 8MHz, sind nur die Delays doppelt so gross wie sie sein sollten.
Es gibt keinen internen Quarz. Für eine Temperatur-Regelung sollten die 1MHz intern (Auslieferungszustand) völlig ausreichen. Die im Datenblatt des LCD-Controllers angegebene Wartezeit vor der Initialisierung bezieht sich auf das Anliegen einer (auch im Datenblatt angegebenen) bestimmten Spannung. Wenn man diese nicht messen kann, sollte man die Wartezeit sehr großzügig bemessen. Ich nehme meist 500ms. LCDs gleicher Bauart, aber unterschiedlicher Herkunft können unterschiedlich schnell getaktet sein. Was bei einem LCD gut geht, bereitet einem anderen LCD Probleme. Falls "gefundener" Code verwendet wird, kann es sein, dass dieser mit Warteschleifen arbeitet (Takte zählen), deren Startwerte vom Compiler/Assembler berechnet werden. Arbeitet man mit anderen Taktraten als vorgesehen, kann es passieren, dass die Startwerte nicht in die Schleifenzähler passen (z.B. die oberen Bits verloren gehen), was falsche Verzögerungswerte zur Folge hat. Eine Bemerkung wie: "Der Fehler steckt in Zeile 235 Deines Codes" habe ich mir jetzt verkniffen. ...
Ich habe den Compiler deshalb "angelogen" weil mein Testprogramm dann seltsamerweise funktioniert hatte. Mich wunderts eben dass ich meinen Code überhaupt überarbeiten muss. Habe schließlich nur das Platinenlayout geändert und so zu sagen den Controller umgesteckt. Das LCD ist auch genau das geblieben. Aus welchem Grund sollte ich dann an der Software bzw. Timings was ändern wenn die Hardware exakt die selbe geblieben ist ?
Rush wrote: > Ich habe den Compiler deshalb "angelogen" weil mein Testprogramm dann > seltsamerweise funktioniert hatte. Dann sind deine Delays falsch dimensioniert, und durch den dadurch eingebauten Rechenfehler passt es wieder. > Mich wunderts eben dass ich meinen Code überhaupt überarbeiten muss. > Habe schließlich nur das Platinenlayout geändert und so zu sagen den > Controller umgesteckt. Das LCD ist auch genau das geblieben. Hast du ihn sozusagen umgesteckt, oder hast du wirklich den Controller selbst ohne Reprogrammierung umgesteckt? Könnte ja sein, dass du vorher mit der werkseitig voreingestellten Frequenz von ca. 1MHz gearbeitet hast.
na da haben wir es doch, durch das "vorgaukeln" einere höheren frq macht dein compiler in den delay funktionen länger dauernde schleifen. somit dauert dann zb bei einer freq von 8mhz und vorgegaukelten 16mhz ein delay 1ms -> 2ms vermutlich hast du ein hardware fehler. läuft denn der controller überhaupt??? einfaches testprogram mit pinwackeln ausprobiert??? zeig doch mal deine pläne (spl und boards) gruß Dennis
Gut werde ich machen wenn ich zu Hause bin. Hab die Sachen an der Arbeit leider nicht mit
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.