Hallo
Habe hier ein sehr komisches Problem
Das Programm ist eine verkürzte Version vom Original aber der Fehler tritt hier noch auf !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
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 ???!







Zitieren

Lesezeichen