PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD Ausgabe stimmt nicht



emulein
06.02.2005, 23:09
Hi,

seit ich die neue Bascom Version 1.11.77 (Vollversion) nutze,
simmt meine LCD Ausgabe nicht mehr.
Habe mal ein kleines Testprogramm geschrieben um das Problem
zu verdeutlichen.


$regfile = "m16def.dat"
$crystal = 16000000 '16MHz-Quarz

Ddrc = &B00010000

Led Alias Portc.4

Dim I As Byte


'------------------------lcd---------------------------------------------
Config Lcd = 20 * 4
Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portd.1 , Rs = Portd.0

Initlcd
Cls
Cursor Off
'----------------------------------------------------------------------------------------------

Locate 1 , 5
Lcd "Testrutine"
Locate 2 , 7
Lcd "Handrad"
Wait 2
Cls

I = 0


Do

Led = Not Led
Cls

Upperline
Lcd " " ; I

Wait 1

Incr I


Loop


End




Die Textausgabe am Anfang geht noch so wie´s soll, auch die zu erwartende Null danach stimmt noch, aber dann kommt 49, 53,54.
Die LCD Ausgabe stopt an diesem Punkt der Prozi läuft aber weiter,
also die LED blinkt munter weiter. Nach einem Reset das gleiche von vorne, immer die selbe Reihenfolge, was kann das den sein??
Ach ja, wenn ich Prog. mit meinem alten Bascom übersetze kommt das gleiche raus, und da bin ich mir sicher das es ging.


Gruss Frank

pebisoft
07.02.2005, 09:34
hallo, villeicht ist der puffer im display voll, bei dieser geschwindigkeit kommt die ausgabe nicht mit. stell doch intern mal auf 4mhz oder setzt die waitzeit höher.
mfg pebisoft

07.02.2005, 12:11
Hallo pebisoft,

was meinst du " kommt nicht mit " in der Hauptschleife ist ein Wait 1 drin,
sollte doch reichen, oder?. Wird die LCD-Ausgabe in diese Wait-Zeit immer aktualisiert, nein oder?

werde es aber heute Abend mal versuchen

Danke

Gruss Frank

emulein
07.02.2005, 12:25
sorry!! , war nicht eingeloggt

Gruss Frank

emulein
08.02.2005, 12:27
Hallo,

habe mal den Prozi auf den internen Takt umgestellt, genau das selbe
Ergebnis. Hab mal das Prog im Simulator (Bascom) laufen lassen,
dort läufst wie´s soll, ist doch schon seltsam, oder?.

Gruss Frank

emulein
09.02.2005, 23:36
Hallo,

muss mich noch mal hier melden, also ich komme nicht weiter?????.
Habe das Programm jetzt so geändert das es nicht mal hochzählen muss.
Einfach den Text am Anfang und nach der Pause eine Zahl.
Aber warum auch immer kommt wieder die schei...ß Zahlenreihe nur
diesesmal um ein weniger, also 0, 48, 52, 53 und dann wieder aus.
Habe auch mal einen anderen Prozi versucht, das Gleiche.

Bräuchte echt einen Hinweis, Danke!!

Gruss Frank

14.02.2005, 18:11
Hallo,
ich hatte auch das selbe Problem und hab nach einiger Zeit folgendes rausgefunden.
Schreibe bei dir im Programm statt deiner Zeile (Lcd " " ; I )
folgende Zeile:
Lcd " " ; CHR(I)
Dies sollte dann klappen.
gruss
Stefan

14.02.2005, 21:02
Hallo an alle,

danke Stefan für deinen Tipp, das hat zwar keine Änderung gebracht,
aber hat mich auf eine Idee gebracht.
Bei der Neuinstallation von Bascom muss etwas schief gegangen sein,
im HW-Stack (Compiler Optionen) stand 0 drin. Ich bin zwar nicht sicher was früher drin stand, aber es war nicht Null. Habe mal 22 eingetragen, und es ging auf anhieb, hatte da noch nie was dran rumgespielt deshalb ist es mir nicht gleich aufgefallen. Was hat das HW-Stack für eine Bedeutung?

Also alles wieder beim alten, gut!!!!!!!!!!

Danke an alle die mir helfen wollten!

Gruss Frank

tobimc
14.02.2005, 21:28
HI

Im Stack merkt sich der AVR so Sachen wie, wo (bei welcher Adresse) er bei einem Interrupt aufgehört hat und solche Scherze.
Wenn du Funktionen aufrufst (lcd()), dann wird von dieser Anweisung nach irgendwo im FLASH gesprungen. Dass der AVR weis, wo er losgesprungen ist, wenn er wieder zurück will von deiner Routine,
schreibt er die Adresse, an der die Anweisung steht in den Stack.

Ist der aber 0, gibt es große Probleme mit Funktionen.

Ich hoffe du verstehst's... ;)

Ganz liebe Grüße,
Tobi