Hallo :-) Ich hab diesmal ein kleines, technisches Problem. Ich wollte meine Hintergrundbeleuchtung per uC steuern. Problem liegt darin, dass sich dabei das Programm aufhängt, bzw. garnicht erst startet. Optisch sieht das so aus, dass wenn ich den Controller einschalte das Display dunkel bleibt und irgendso ein komisches, unbeschreibliches Zeichen erscheint. Dann passiert erstmal nix und nach ca. einer Minute startet das Programm plötzlich oder auch nicht. Drücke ich die RESET-Taste am uC, dann startet das Programm normal, egal, wie oft ich den RESET wiederhole. Also passt ihm irgendwas am Anfang nicht. Hier der Programmausschnitt von der Startfrequenz: $regfile = "m32def.dat" $crystal = 16000000 $swstack = 50 $hwstack = 50 $framesize = 50 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , _ Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2 Config Lcd = 16 * 4 Config Porta = &B11110000 Config Portb = &B11111111 Config Portc = &B11111111 Config Portd = &B11111111 Set Portd.7 '<<-- Backlight on Cls Cursor Off Technisch sieht das Ganze so aus. dass PortD.7 einen NPN-Transi ansteuert, von dem ich keine näheren Daten habe, weil er als SMD auf meiner Evo-Platine verbaut ist und in der Doku nichts näheres zu finden ist. Hat einer hier schonmal so ein Problem gehabt oder weiß eventuell, was das sein könnte?
>Hat einer hier schonmal so ein Problem gehabt oder weiß eventuell, was >das sein könnte? Hat dein Backlight einen Vorwiderstand? Und aktiviere mal die BODEN und BODLEVEL Fuses.
Ja, auf der LCD-Platine sind Vorwiderstände. Was bewirken die Fuses? Grüße
Dein Programm hat zumindest kein Ende. Bau bitte so ein do !nop loop end Konstrukt ein, so dass der Programmcounter nicht irgendwann überläuft und von vorn beginnt. gruß XTR
Auf Grund der in deinem Programmcode auftauchenden Buchstabenkombination "LCD" vermute ich, das du von einem LCD-Display sprichst. Bist du sicher, das der Controller vom Display schon mit seiner Initialisierung fertig ist, wenn du das Cls-Kommando schickst?
Ähm... Du initilisierst dein Display gar nicht. Außerdem setzt du die Busbreite nicht. Hinter "Config LCD = 16 * 4" gehört noch ein "Config LCDBus = 4", um dem Compiler zu sagen, dass du dein Display im 4-Bit-Modus ansprichst. Vor das "Cls" und "Cursor off" gehört noch ein "Initlcd", um das LCD erstmal zu initialisieren... Und wie bereits gesagt, läuft dein Controller ohne Hauptschleife amok. Gruß Jonathan
Jonathan Strobl schrieb: > Ähm... Du initilisierst dein Display gar nicht. Außerdem setzt du die > Busbreite nicht. Hinter "Config LCD = 16 * 4" gehört noch ein "Config > LCDBus = 4", um dem Compiler zu sagen, dass du dein Display im > 4-Bit-Modus ansprichst. Vor das "Cls" und "Cursor off" gehört noch ein > "Initlcd", um das LCD erstmal zu initialisieren... Und wie bereits > gesagt, läuft dein Controller ohne Hauptschleife amok. > > > Gruß > Jonathan Ich habe nur den Anfang des Programmes kopiert. Natürlich hat das Programm ne Schleife. Er hängt sich ja beim Start auf und läuft erst garnicht in die Schleife. Das Init Lcd habe ich noch nicht probiert, werd ich mal machen. Normalerweise ist es nicht nötig, da Bascom automatisch initialisiert, wenn das LCD dem HD44780-Standard entspricht. > Auf Grund der in deinem Programmcode auftauchenden Buchstabenkombination > "LCD" vermute ich, das du von einem LCD-Display sprichst. Bist du > sicher, das der Controller vom Display schon mit seiner Initialisierung > fertig ist, wenn du das Cls-Kommando schickst? Ja, bin ich. Wenn ich die LCD-Beleuchtung an VCC hänge, startet alles wie geplant und ohne Probleme. Der Mist passiert nur, wenn die Steuerung der Beleuchtung per PORT erfolgt. Daraus schliesse ich, dass es damit zusammenhängt. Beim Starten pulsen doch die PORTS immer die erste Sekunde, vielleicht stört das die Initialisierung vom Display? Obwohl die Beleuchtung eigentlich unabhängig vom Displaycontroller laufen sollte... Keine Ahnung
Schaltplan her. Vielleicht hast Du irgendwo einen Kurzschluß fabriziert. Ich hab das schon gebaut, daß der µC die Hintergrundbeleuchtung dimmern konnte... ohne Probleme.
Ben _ schrieb: > Schaltplan her. Vielleicht hast Du irgendwo einen Kurzschluß fabriziert. > > Ich hab das schon gebaut, daß der µC die Hintergrundbeleuchtung dimmern > konnte... ohne Probleme. Nen Kurzen hab ich nicht fabriziert, dann würd das anders aussehen. Außerdem benutze ich ein Evo_Board von And-Tech.pl für solche Tests, da kann man praktisch nur was kaputtmachen, wenn mans drauf anlegt. Anbei der Schaltplan vom Board. Oben links ist das Display mit der Transistorschaltung. Im Schaltplan steht LCD 16 * 2, ist aber 16 * 4. Das Problem ist einfach das bescheuerte Flimmern, wenn der Prozessor "bootet". So wie ich gesagt hab, wenn ich den Backlight-Transistor normal an VCC klemme, dann klappt alles wunderbar. Nur am Pin spinnt das Teil.
Wie groß ist denn der Basiswiderstand? Evtl. bricht Dir die Spannung beim Einschalten des Lichts kurz weg. Pack doch mal testweise einen low-ESR-Elko in der nähe des Transistors zwischen +LED und GND. Bei mir war's kein Testboard, sondern ein kompletter Eigenbau der das konnte.
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.