Forum: Mikrocontroller und Digitale Elektronik Display mit Atmega8 und Bascom


von pascal (Gast)


Lesenswert?

Ich hab ein seltsames Problem ,ich schließe mein Display ( Hantronix 
hdm08216l - 3-l3os 2x8 Displa) so an : 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung


Mein Programm;
1
$regfile = "m8def.dat"
2
$crystal = 8000000
3
$baud = 2400
4
$hwstack = 150
5
$swstack = 150
6
$framesize = 100
7
8
9
'---------------------------------------------------------------------------
10
                               'display
11
12
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , _
13
Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
14
Config Lcd = 16 * 2
15
Cursor Off
16
17
Do
18
 Wait 3
19
 Cls
20
  Locate 1 , 1
21
  Lcd "hallo"
22
  Wait 3
23
 Cls
24
  Locate 1 , 1
25
  Lcd "hallo1"
26
Loop
27
End

Schön, das geht auch Wunderbar. Nur nicht lange, wenn ich das Programm 
über Nacht laufen lasse ist immer am nächsten Tag nichts oder nur 
Schwarze Balken zu sehen .

Config Lcd = 16 * 2 hab ich auch schon durch Config Lcd = 16 * 1 ersetzt 
geht auch nicht besser. Auch ein anderes Display hab ich erfolglos 
getestet .

der Atmega läuft auf einem Pollin board.

Bitte um Ratschläge

von pascal (Gast)


Lesenswert?

Ach ja wenn ich dann am morgen Reset drücke geht es wieder.

von Ronny S. (phoenix-0815)


Lesenswert?

Hallo,
zeig mal Schaltplan oder Bild vom Aufbau wäre noch besser.

Hört sich nach Hardware Problem an eventuell fehlen ja ein paar C`s.

Gruß Ronny

von pascal (Gast)


Lesenswert?


von Ronny S. (phoenix-0815)


Lesenswert?

pascal schrieb:
> Wenn ich ein Bild machen würde würde es euch 100% nur verwirren....

Jetzt bin ich erst recht Neugierig geworden.

Hast mal die Stromversorgung überprüft und was für ein Netzteil hast da 
dran ?

Gruß

von pascal (Gast)


Angehängte Dateien:

Lesenswert?

ok, Netzteil ist 9V 2A. der Spannungsregler auf dem Board liefert bissel 
über 5 V ,5,05 zeigt der Multimeter.

Hier ein bild, dass aber nur verwirren wird :-D

von Interrupter (Gast)


Lesenswert?

@ Ronny,

schon mal was von Personalpronomen gehört?
Deine "Sprech" ist nervend...

von Interrupter (Gast)


Lesenswert?

So ein Drahtverhau könnte schon das Verhalten erklären.

In der Kürze liegt die Würze ;-)

von ;-) (Gast)


Lesenswert?

1
Do
2
 Wait 3
3
 Cls
4
  Locate 1 , 1
5
  Lcd "hallo"
6
  Wait 3
7
 Cls
8
  Locate 1 , 1
9
  Lcd "hallo1"
10
Loop
11
End

von ;-) (Gast)


Lesenswert?

@pascal:

wie regulierst du den kontrast, welche aufgabe hat der sw kondensator 
bei dir?

;-)

von Pascal (Gast)


Lesenswert?

;-) schrieb:
> Do
>  Wait 3
>  Cls
>   Locate 1 , 1
>   Lcd "hallo"
>   Wait 3
>  Cls
>   Locate 1 , 1
>   Lcd "hallo1"
> Loop
> End

ja was ist damit?

von Pascal (Gast)


Lesenswert?

;-) schrieb:
> @pascal:
>
> wie regulierst du den kontrast, welche aufgabe hat der sw kondensator
> bei dir?
>
> ;-)

keine, auf dem Brett ist nur noch der alte Aufbau.
Kontrast regle ich im mom beim Testaufbau garnicht, der liegt dirket 0 
V.

Ich hab aber auch eine Schaltung auf Platine , die hat genau den selben 
fehler(anderes Display)

von Karl H. (kbuchegg)


Lesenswert?

Spendier dem ganzen mal grosszügig ein paar Blockkondensatoren.

Das sind nichts anderes als 100nF Kondensatoren, die möglichst nahe beim 
Verbraucher an der Versorungsspannung sitzen (also Vcc mit GND über 
einen 100nF Kondensator 'blocken').
Dein LCD stürzt irgendwann ab, das können kleine Unsauberkeiten in der 
Versorungsspannung sein, kurzfristige Einbrüche in der Spannung, die bei 
Digitalschaltungen nichts ungewöhnliches sind. Wenn in den ICs viele 
Transistoren gleichzeitig schalten, kann es schon mal sein, dass 
kurzzeitig für ein paar Mykrosekunden der Stromverbrauch der Schaltung 
in die Höhe schnellt und das Netzteil nicht schnell genug 'nachliefern' 
kann. Dann helfen die Blockkondensatoren aus, in dem sie kurfristig 
genau diese Spannungseinbrüche 'auffüllen'.

Das kann die Ursache sein, muss es aber nicht sein. Allerdings: oft ist 
es genau dieses und ein paar zusätzliche Kondensatoren (durchaus auch am 
LCD direkt an der Anschlussleiste angelötet) können das Problem beheben.

von ;-) (Gast)


Lesenswert?

Pascal schrieb:
> ;-) schrieb:
>> @pascal:
>>
>> wie regulierst du den kontrast, welche aufgabe hat der sw kondensator
>> bei dir?
>>
>> ;-)
>
> keine, auf dem Brett ist nur noch der alte Aufbau.
> Kontrast regle ich im mom beim Testaufbau garnicht, der liegt dirket 0
> V.

kannst du das mal mit kontrast
3  Vee  Kontrastspannung (0V bis 5V)  versuchen und die pausen mal auf
von 3 sekunden auf 10 ms stellen und das beobachten?
regle mal so, dass er etwas kontrast am anfang hat,
wird es im lauf immer dunkler? sagen wir mal bei 10ms nach 10 minuten?

>
> Ich hab aber auch eine Schaltung auf Platine , die hat genau den selben
> fehler(anderes Display)

ist der kontrast dort angeschlossen also auf 0?

von ;-) (Gast)


Lesenswert?

@pascal:
karl heinz kann recht haben,
mit meinem tip wollte ich die stromversorgung am display ausreizen und 
durch die ms das example verfolgbar machen ob es einsackt

..

von pascal (Gast)


Lesenswert?

Hallo, ich habe jetzt 2 104 100nF Kondensatoren auf mein Steckbrett 
gesteckt,weil ich nicht am Display rumlöten will ohne genauers zu 
wissen....

die Zeit hab ich nun auf 10ms gestellt ,die Schrift wird jetzt etwas 
blasser angezeigt, die 1 nur noch sehr schwer zu erkennen, ich glaube 
10ms ist zu schnell für das Ding, aber ich lass das jetzt mal laufen 
....

von pascal (Gast)


Lesenswert?

jetzt läuft es ca. 3 min dann steht nichts mehr auf dem 
Display.Versorgungsspannung ist auf dem Bett aber sehr glatt.

von Karl H. (kbuchegg)


Lesenswert?

pascal schrieb:

> die Zeit hab ich nun auf 10ms gestellt ,die Schrift wird jetzt etwas
> blasser angezeigt, die 1 nur noch sehr schwer zu erkennen, ich glaube
> 10ms ist zu schnell für das Ding

nicht wirklich.
Das 'Problem' ist, dass man auf derartigen LCD nicht alle paar 
Millisekunden das Display löscht. Denn das löschen dauert seine Zeit. 
Die Abnahme der Helligkeit begründet sich dadurch, dass sich das 
Verhältnis der Zeiten zwischen "Das Display ist leer" und "Auf dem 
Display wird was angezeigt" dann immer mehr in Richtung "Das Display ist 
leer" verschiebt.

Im Grunde ist das wie bei einem Buch, dass ich dir eine zeitlang vor die 
Nase halte und dann wieder weg nehme. Ist diese 'zeitlang' im Bereich 
von Minuten, dann kannst du was lesen. Zeige ich dir das Buch aber nur 
für Sekundenbruchteile, dann kannst du nichts mehr lesen.

Also: merken.
Die Operation CLS willst du eigentlich nicht einsetzen. Wenn aber doch, 
dann so sparsam wie möglich. Lieber überschreibst du nur das Display mit 
den jeweils neuen Informationen, so dass zb fixe Texte die ganze Zeit 
über sichtbar sind.

ABer ok. Das kommt später. Erst mal muss es stabil laufen.

von pascal (Gast)


Lesenswert?

Karl Heinz schrieb:
> ABer ok. Das kommt später. Erst mal muss es stabil laufen.

Richtig , soll ja jetzt nur ein Stressprogamm sein um den Fehler zu 
finden.
aber dafür bin ich auf euch angewiesen,ich bin mit meinem Latein am Ende 
.

von pascal (Gast)


Lesenswert?

1
$regfile = "m8def.dat"
2
$crystal = 8000000
3
$baud = 2400
4
$hwstack = 150
5
$swstack = 150
6
$framesize = 100
7
 Dim Test As Word
8
9
'---------------------------------------------------------------------------
10
 Const Timer1_preload = 34286
11
12
Config Timer1 = Timer , Prescale = 256
13
Enable Timer1
14
Timer1 = Timer1_preload
15
On Timer1 Isr_timer1
16
Enable Interrupts                                           'display
17
18
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , _
19
Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
20
Config Lcd = 16 * 2
21
Initlcd
22
Cursor Off
23
 Test = 0
24
Do
25
If Test = 10 Then
26
Test = 0
27
 Initlcd
28
 End If
29
 Waitms 10
30
 Cls
31
  Locate 1 , 1
32
  Lcd "hallo"
33
  Waitms 10
34
 Cls
35
  Locate 1 , 1
36
  Lcd "hallo1"
37
Loop
38
End
39
40
41
 Isr_timer1:
42
  Timer1 = Timer1_preload
43
Incr Test
44
Return

so läuft es bisher, aber kann/soll ich das auf auer so lassen?

von Karl H. (kbuchegg)


Lesenswert?

So ein initlcd zwischendurch ist natürlich eine Möglichkeit. Persönlich 
würdeich es fürs erste nicht so lassen, sondern lieber dem Problem auf 
den Grund gehen.

Es kann sich natürlich rausstellen, dass man in 'verseuchten' Umgebungen 
zwischendurch mal ein LCD neu initialisieren muss. Aber das sollte der 
allerletzte Notbehelf sein, wenn man die Störungen von aussen gar nicht 
in den Griff kriegt.
Mein LCD an der Heizungssteuerung läuft seit nunmehr 2 Jahren durch, 
ohne dass ich es ein einziges mal resetten musste.

von pascal (Gast)


Lesenswert?

Karl Heinz schrieb:
> Aber das sollte der
> allerletzte Notbehelf sein

das denke ich eigentlich auch ,aber was soll ich noch testen?

von Winne Z. (rugbywinne)


Lesenswert?

> das denke ich eigentlich auch ,aber was soll ich noch testen?
hhast Du überprüft ob der Prozessor noch läuft oder ob nur das Display 
"abgesoffen" ist ?

Schließ mal eine LED an einen freien Port an und lass diese regelmäßig 
blinken.

von pascal (Gast)


Lesenswert?

Winne Z. schrieb:
>> das denke ich eigentlich auch ,aber was soll ich noch testen?
> hhast Du überprüft ob der Prozessor noch läuft oder ob nur das Display
> "abgesoffen" ist ?
>
> Schließ mal eine LED an einen freien Port an und lass diese regelmäßig
> blinken.

nur display , der rest läuft

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
Noch kein Account? Hier anmelden.