Hallo, Ich habe einen LCD Timer den ich hier bei mikrocontroller.net gefunden habe gebaut. mein Problem jetzt, 1 Sekunde dauert etwa 4 sekunden und bin mir nicht sicher wo der Fehler liegt entweder im aSm Code oder an der schaltung. Wenn ich den Timer starte, verschwindet mein Text vom 2x16 LCD Display, erst wenn ich am Poti für den kontrast schraube bekomme ich es wieder sichtbar. Ich habe es nach dem Schaltplan von folgendem Thread gebaut: Beitrag "LCD-Timer für Belichtungsgerät"
Es reicht sehr danach, dass du nicht den externen 4MHz Quarz als Zeitbasis hast sondern den ab Fabrik auf (interner 8MHz RC-Oszillator / clkdiv8) Standardeinstellung hast. Das wäre dann 1/4 der gewünschten Geschwindigkeit.
Ich habe extern (XTAL) einen Oszilator, kann das sein wenn der integrierte Aktiviert ist das es Probleme gibt?
TobiS schrieb: > Ich habe extern (XTAL) einen Oszilator, kann das sein wenn der > integrierte Aktiviert ist das es Probleme gibt? Du musst über Fusebits einstellen, welcher Takt verwendet werden soll. Nur extern einen Quarz oder Taktgenerator dranhängen reicht nicht. Hinweis: Quarz oder Taktgenerator sind unterschiedliche Einstellungen! Gruß Dietrich
TobiS schrieb: > Ich habe extern (XTAL) einen Oszilator, kann das sein wenn der > integrierte Aktiviert ist das es Probleme gibt? Es gibt keine Probleme, höhstens du hast ein Problem, nämlich die Qual der Wahl der Quelle des Taktes. Es bleibt dir keine andere Möglichkeit als explizit der Hardware zu sagen was du möchtest.
Zum Fuse bit, wie genau stell ich das um, in meinem code habe ich folgendes gefunden: ; ***** sonstige Zuordnungen ***** .equ XTAL = 4000000 muss das weg oder Umgeschrieben werden?
TobiS schrieb: > Zum Fuse bit, > > wie genau stell ich das um, in meinem code habe ich folgendes gefunden: > > ; ***** sonstige Zuordnungen ***** > > .equ XTAL = 4000000 > > muss das weg oder Umgeschrieben werden? Das Umstellen geht nur mit einem Programmer. Die Angabe im Programm dient nur dazu, dass ggf. vom Assembler berechnete Konstanten automatisch den richtigen Wert erzeugen. Beispiel: Baudrate des UART einstellen; die Konstante für den Bauraten-Generator hängt von der Taktfrequenz ab. Gruß Dietrich
TobiS schrieb: > muss das weg oder Umgeschrieben werden? das kommt auf die Wirklichkeit an ist die 4MHz dann kann das so bleiben, ist deine Wirklichkeit anders muss es geändert werden. PS Du kannst die Wirklichkeit im Code nicht ändern, die wird bestimmt von fuse setting und angeschlossenem Quarz also: ist ein Quarz am Xtal 1 + 2 Eingang? hast du die fuse auf ext. crystal geändert? hast du die fuse auf clkdiv8 oder nicht?
:
Bearbeitet durch User
Ok, habs, war CKOPT fuse bit. dennoch habe ich das Problem mit dem Display, wenn ich meinen Timer starte mit der Voreingestellten Zeit, verschwindet mein text, das is aber nur der Kontrast, ich verstehe die Ursache nur nicht, wenn ich am (Poti) Kontrastregler rekalibriere bekomme ich es wieder sichtbar, wenn aber der timer ausgelaufen ist, wird der routine text mit zu viel Kontrast, eigentlich alle pixel auf einmal angezeigt. (Es ist nur der Kontrast des LCD was sich selbst ändert?)
Zeig mal dein Programm. Wenn dein Programm wie wild das LCD löscht und den Text wieder neu hinklatscht, kann das schon mal aussehen, als ob der Kontrast massiv abnimmt. Allerdings hab ich noch nie beobachtet, dass man das mit dem Kontrastpoti einigermassen ausgleichen könnte. Ich habs aber ehrlich gesagt auch noch nie probiert. Abgesehen davon gibt es keinen sinnvollen Zusammenhang zwischen dem Kontrast des LCD und deinem Programm. Ausser eben, wenn du wie wild das LCD löscht und den Text neu hinmalst. Dann flackert es wie Sau und da das LCD dann 20% der Zeit tatsächlich leer ist, nimmt der Kontrast ab. Aber ohne das Programm gesehen zu haben, ist das alles Spekulation.
Also um es genauer Auszudrücken, wenn ich den timer starte und der kontrast so ziemlich auf 0 geht muss ich den poti nach links drehen um den text wieder sichtbar werden zu lassen. Wenn abgelaufen oder gestoppt ist der kontrast zu hoch gestellt und muss am poti rechts drehen zum ausgleichen, immer son hin und her.
Karl Heinz schrieb: > Ausser eben, wenn du wie wild das > LCD löscht und den Text neu hinmalst. Dann flackert es wie Sau und da > das LCD dann 20% der Zeit tatsächlich leer ist, nimmt der Kontrast ab. Genau das ist die Ursache! Also: Programmkonzept ändern.
Route 66 schrieb: > Karl Heinz schrieb: >> Ausser eben, wenn du wie wild das >> LCD löscht und den Text neu hinmalst. Dann flackert es wie Sau und da >> das LCD dann 20% der Zeit tatsächlich leer ist, nimmt der Kontrast ab. > > Genau das ist die Ursache! Ich hab zwar versucht, im Code die Stelle zu finden, aber das ist gar nicht so einfach, bei dem vielen hin und her Gehüpfe. Gefunden hab ich allerdings nichts, das muss aber nicht viel heissen. > Also: Programmkonzept ändern. Und vor allen Dingen nicht so unübersichtlich schreiben. Ich kann mir wirklich nicht vorstellen, warum der Code (Anmerkung: meiner Meinung nach) so dermassen unübersichtlich sein muss. Der ist Wasser auf die Mühlen all derjigen, die immer wieder sagen, dass man solche Dinge nicht in Assembler schreibt, weil es einfach nicht wartbar ist. Allerdings: der Code stammt ja aus einem fertigen Projekt. Ich kann mir nicht wirklich vorstellen, dass das dem Original-Autor nicht auch aufgefallen wäre. Nur: ich kann mir aber auch sonst keinen Zusammenhang vorstellen. Einzig ein Einbruch in der Versorgungsspannung, wenn das Relais geschaltet ist, wäre noch denkbar.
:
Bearbeitet durch User
Route 66 schrieb: > Karl Heinz schrieb: >> Ausser eben, wenn du wie wild das >> LCD löscht und den Text neu hinmalst. Dann flackert es wie Sau und da >> das LCD dann 20% der Zeit tatsächlich leer ist, nimmt der Kontrast ab. > > Genau das ist die Ursache! Also: Programmkonzept ändern. Nach nochmaliger Inspektion des Spaghetti-Kodes muß ich kbuchegg Recht geben! Allerdings liegt die schlechte Lesbarkeit nicht an der Verwendung von Assembler generell. Es läßt sich einfach nur ein miserabler Programmierstil erkennen. Die Wartbarkeit und Fehlerträchtigkeit von Code hat mit der Programmiersprache überhaupt nichts zu tun.
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.