Hallo

Habe hier ein sehr komisches Problem

Code:
$regfile = "m8def.dat"
$crystal = 10000000


'---Config für LCD -----------------
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portb.0 , Db7 = Portb.5 , Rs = Portb.4 , E = Portb.3
Config Lcdbus = 4
Config Lcdmode = Port


'----- Config Timer0 für Regelung ------
Config Timer0 = Timer , Prescale = 8


'---Sonstiges------------------------
Dim A As Integer

Dim Pwm As Long
Dim Soll As Long
Dim Ist As Long

Dim Istwert As Single
Dim Sollwert As Single
Dim Integrator As Single
Dim Lastistwert As Single
Dim P As Single
Dim I As Single
Dim D As Single
Dim Delta As Single
Dim Ausgang As Single
Dim Pw As Word
Dim Wert As Word
Dim Kp As Integer
Dim Kd As Integer
Dim Ki As Integer
Dim Zeit As Single
Dim Invertiert As Word
Dim Istwert_bit As Word


On Timer0 Auswerten
Enable Timer0
Enable Interrupts

Soll = 0
Ist = 0


Pwm = 128


Cls

'========================================================================
'========= Hauptprogramm ================================================
'========================================================================
Do
Cls


Soll = 0

Locate 1 , 1
Lcd "Ist" ; Ist

Locate 2 , 1
Lcd "Soll=" ; Soll


Loop



End

Auswerten:

Sollwert = Soll
Istwert = Ist
       Delta = Sollwert - Istwert
      P = Delta * Kp
      D = Lastistwert - Istwert
      D = D / Zeit
      D = D * Kd
      I = Delta * Zeit
      I = I * Ki
      Ausgang = D
      Ausgang = Ausgang + P
      Ausgang = Ausgang + I
      Lastistwert = Istwert
Pwm = Ausgang + 128

If Pwm < 2 Then Pwm = 2
If Pwm > 253 Then Pwm = 253

Compare1a = Pwm
Timer0 = 0
Return
Das Programm ist eine verkürzte Version vom Original aber der Fehler tritt hier noch auf !

Es soll mit Timer0 eine Routine bearbeitet werden und nebenbei der Wert auf dem LCD ausgegeben werden.

Aber irgendwie kommen für "Soll" und "Ist" immer so komische Zahlen auf das LCD.
Zum Glück tritt der gleiche Fehler auch im Simulator von Bascom auf, nur komme ich nicht dahinter, wie die falschen Zahlen auf das LCD kommen ??

Probiert mal bitte das Programm am Simulator.
(V 1.11.7.9.)
Nach ein wenig Zeit, seht ihr was ich meine..
Das steht dann z.B, für IST 152000000
oder für Soll 880000000

Die Werte selber (ist und Soll) stimmen im Simulator ( sind also =0)

Weis jemand an was das liegt ?

Auch mit einem höheren Prescaler beim Timer, bleibt es noch so..

Irgendwie muss da mit der ansteuerung vom LCD zusamenhängen?!
Irgendwo ein Bit, das nicht so tut wie es soll ???!