PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pollin Display Wintek 4x27



jens722003
05.05.2008, 13:04
Hallo

Habe ein heftiges Problem mit dem o.g. Display. Ich hoffe es hat hier schon mal jemand so ein Problem gehabt und kann mir helfen.
Das Programm ist im Anhang gepackt.
Die Initialisierung des Display und die AnzeigeRoutinen vor der Endlosschleife klappen wunderbar.
Die Probleme fangen erst an wenn wenn die Subroutinen durch einen der Debounce-Befehle angesprochen werden.
Dann werden teilweise die Inhalte der oberen DisplayHälfte in der unteren dargestellt, aber leider auch nicht immer. Meist taucht aber auch nur der Text der oberen Hälfte kurz in der unteren auf und wird dann mit dem richtigen Text überschrieben, was aber auch nicht wirlich schön ist.
Jens
[/code]

for_ro
05.05.2008, 19:34
Wie groß sind deine Stacks? Evtl. mal vergrößern.

Gruß

Rolf

jens722003
05.05.2008, 21:48
Danke für die schnelle Antwort.
Die momentanen Werte sind:
HW-Stack:32
Soft-Stack:8
Framesize:16

Woher weiß man eigendlich welche Werte einzustellen sind?? Was sind die Maximalen Werte und welche Auswirkung hat es, wenn man die Werte zu hoch einstellt???
Habe bisher kaum eine brauchbare Info in der Hilfe oder im Netz gefunden.

Werde morgen einfach mal mit anderen Werten testen.

Jens

linux_80
06.05.2008, 00:31
Hallo,

man kann die Werte so gross einstellen bis der RAM voll ist ;-)

Wieviel belegt ist, sieht man nach dem compilieren in der Reportdatei.
Wenn genug übrig ist, kann man ruhig alle Werte vergrössern, um auf der sicheren Seite zu sein.
Nachrechnen muss man nur, wenn man verschachtelte Subs aufruft, denn dann multipliziert sich Framesize.

mr_energy
06.05.2008, 13:37
Hallo,

ich verwende auch dieses Display am ATmega32 und 644.
Man muss die Lib "lcd4e2.lbx" includieren. Im Source der Lib ist die Konfiguration zu beachten:
##########
;the default library for BASCOM can handle worst case scenarios where each pin of the LCD
;is connected to a random pin of the micro
;When we choose the data port pin in sequence, we can save some code
;This lib shows how to use the LCD in 4 bit mode with 2 E lines !

;Rs = PortB.0
;RW = PortB.1 we dont use the R/W option of the LCD in this version so connect to ground
; E = PortB.2
;E2 = PortB.3 for lcd with 2 chips
;Db4 = PortB.4 the data bits must be in a nibble to save code
;Db5 = PortB.5
;Db6 = PortB.6
;Db7 = PortB.7



;This routine is called when the LCD must be initialized
;dont forget to dimension a byte named ___LCDE
[_Init_LCD]
.EQU LCDDDR=$17 ; change to another address for DDRD ($11)
.EQU LCDPORT=$18 ; change to another address for PORTD ($12)
############

Allso alle Pins des LCDs müssen an den gleichen PORT.
Hier ein auszug aus meinem Bascom Source:
'##########################################
'Einbindung der LCD-Bibliothek für ein 2-Prozessor-Display
' Hier speziell für den atmega644 und PortB ansonsten lcd4e2.lbx
$lib "lcd4e2-644.lbx"
'##########################################

'####### New LCD Config 4x27 Zeichen ###########
'man achte auf die Ergänzung E2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.2 , E2 = Portb.3 , Rs = Portb.0
Dim ___lcde As Byte
___lcde = 0
Config Lcd = 40 * 4
Config Lcdbus = 4 '4 Bit Modus
Cursor Off Noblink 'LCD = Cursor aus

#################

Ich hoffe das hilft weiter.
PS: Und nicht vergessen RW vom LCD auf Ground

Gruß mr_energy

Hackes
06.05.2008, 21:57
Hallo Jens,

ich benutze genau dieses Display jetzt schon eine ganze Weile und steuer es genauso an wie Du auch. Funzt bestens.

Sind Deine Verbindungen zum Display einwandfrei? Wackelkontakte, kalte Lötstellen oder leichte Übergänge zwischen den Pins???!!!

WAS mir sehr zu denken gibt:

Deine Subroutine Display_unten besitzt kein RETURN!!! Nach ihrem Aufruf wird also nicht korrekt zum Hauptprogramm zurückgesprungen!

Meckert da nicht schon Dein Compiler??? Da ich jedoch noch ziemlich neu bin bei den Micros, kann ich nicht ganz nachvollziehen, wie das Programm ohne das Return weiterläuft. Ich schätze mal, daß es in das Label der ISR weiterläuft, danach erst zurückspringt und dadurch sehr ungewollte Ergebnisse produziert!!!

Hab aus Neugier gerade mal Dein Programm compiliert. Tatsächlich ohne Fehler. Überprüft der Compiler nicht, ob vor einem folgenden Label ein Return steht??

Vielleicht bin ich ja auch auf dem Holzweg. Mal gespannt was die Profis so sagen!

Gruß Hackes.

jens722003
07.05.2008, 08:05
Habe es mal mit verdoppelten Stackwerten versucht - Leider ohne Erfolg

@Hackes:
Du hast recht da fehlt wirklich das Return - und der Compiler hats nicht gemerkt :-). Muß wohl bei meinen diversen Versuchen abhanden gekommen sein. Aber auch mit Return klappts nicht. Leider.

@mr_energy:
Das mit der LIB werde ich noch ausprobieren. is auf jeden Fall nen Versuch wert.

Danke Euch allen für eure Ideen - weiter so

Jens

jens722003
08.05.2008, 23:21
Hab mir jetzt mal die Lib genauer angeschaut.
Versteh ich das recht, das man sich genau an die Pin-Belegung wie in der Lib angegeben halten muß oder kann man diese mit config LCDPin noch ändern (vorausgesetzt das alle auf einem Port sind und die Datenleitungen dort bleiben wo sie sind)???

Jens