Hintergrundbeleuchtung per uC schalten - Programm hängt

OP #2291380
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 #2291404
>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.
Gast #2291680
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
Gast #2291684
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
Ä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
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
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:
#2292770
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.