Hintergrundbeleuchtung per uC schalten - Programm hängt

OP #2291380
Lesenswert?

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?
Gast #2291684
Lesenswert?

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?
Persönliche Seite #2291793
Lesenswert?

Ä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
OP #2292432
Lesenswert?

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
OP #2292670
Lesenswert?

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.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren