[Bascom] PI Regelung

mh die Regelung funzt jetzt 1a , allerdings kackt mein mega8 immer ab ?!
sendet dann nurnoch murks (wilde zeichen) über Rs232.
schon komisch.
Hier mein komplettes Programm, kanns sein das mein Mega einfach alt is ? bzw ich ihn zu oft beschrieben und gelöschd hab ? und er deshalb nicht mehr geht?

Code:
'HEADER##########################################
$regfile = "m8def.dat"                                      'Chip
$baud = 9600                                                'Baud für RS232
$crystal = 8000000                                          'Quarz auf 8mhz eingestellt
$hwstack = 32                                               'Standardwert 32 für hardware stack
$swstack = 10                                               'Standardwert 10 für the SW stack
$framesize = 40                                             'Standardwert 40 für the frame space
'Ein/Ausgänge configurieren
Config 1wire = Portd.2                                      '1-Wire Pins Configurieren
Config Portb.1 = Output                                     'PWM Out1
Config Portb.2 = Output                                     'PWM Out2
Config Portd.3 = Output                                     'Piezo

'Ein/Ausgängen Namen Zuweisen
Piezo Alias Portd.3

'Declarationen
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1024
Declare Function Piregler(byval Istwert As Single , Channel As Byte) As Single

'Variablen Config
Dim Scratch(9) As Byte                                      'werte des Temp sensors
Dim Temp As Word                                            'temperatur vorverarbeitungswert
Dim Temp1 As Integer                                        'temporärer tempwert
Dim Ist_temp1 As Single                                     'ist temperatur Gehäuse
Dim Ist_temp2 As Single                                     'ist temperatur Kühler
Dim Sensor1(8) As Byte                                      'Array Sensor Gehäuse
Dim Sensor2(8) As Byte                                      'Array Sensor Kühler
Dim Ausgabe As Single
Dim Piregel1 As Single
Dim Piregel2 As Single
Dim Change1 As Byte                                         'wandelt das ergbnis der Funktion Pi_regler in Word format
Dim Change2 As Byte                                         'wandelt das ergbnis der Funktion Pi_regler in Word format
Dim Sollwert As Single                                      'Sollwert = Gewünschte Temp
Dim Regelgroesse As Single                                  'Ergebnis der PI_regler funktion
Dim Kri As Integer                                          'Integrierbeiwert
Dim Krp As Integer                                          'Proportionalbeiwert
Dim Channel As Word                                         'Enthält Kanal change oder change1
Dim Alarm As Single                                         'alarm temperatur!

'Variablen setzen
Kri = 1
Krp = 10                                                    '20
Sollwert = 25                                               'Sollwert auf 40°C setzen
Alarm = 70                                                  'Alarmtemperatur
'$sim
'PROGRAMM########################################
Sensor1(1) = 1wsearchfirst()                                'Suche nach erstem Gerät am Bus
   If Err = 0 Then                                          'Wenns ein Gerät am Bus gibt
      Do                                                    'Nach Weiterem Gerät Suchen
         Sensor2(1) = 1wsearchnext()                        'Bis es keine mehr gibt
      Loop Until Err = 1
   End If
    'Print Hex(sensor1(1))                                   'familycode sensor1 ausgeben
    'Print Hex(sensor2(1))                                   'familycode sensor2 ausgebe
Do                                                          'Beginn Der Hauptschleife
   Enable Timer1
   Start Timer1

'Temp auslesen von DS18S20 Gehäusetemp, Family code &H10=(dez)16
   1wreset                                                  ' Initialisierung
   1wwrite &HCC                                             ' überspringe ROM-Befehl
   1wwrite &H44                                             ' Temperaturmessung anstoßen
   Wait 1                                                   ' warten bis Messung fertig
   1wreset                                                  ' Initialisierung
   1wverify Sensor1(1)                                      'sensor mit bestimmter id ansprechen
   1wwrite &HBE                                             ' Temperatur auslesen
   Scratch(1) = 1wread(9)                                   'scratchpad auslesen
   'Print Hex(crc8(Scratch(1) , 7) )                     ' Prüfsumme ausgeben
    'If Scratch(8) = Crc8(scratch(1) , 7) Then               ' Prüfsumme vergleichen
    '    Print "Daten OK"
   ' Else
    '    Print "Fehler"
    'End If
   Temp = Scratch(2)
   Shift Temp , Left , 8
   Temp = Temp + Scratch(1)
   Temp1 = Temp
   Temp1 = Temp1 / 2
   Ist_temp1 = Scratch(8) - Scratch(7)
   Ist_temp1 = Ist_temp1 / Scratch(8)
   Ist_temp1 = Ist_temp1 + Temp1
   Ist_temp1 = Ist_temp1 - 0.25

'Temp auslesen von DS1822 Kühlertemp, Family code &H22=(dez)34
   1wreset                                                  ' Initialisierung
   1wwrite &HCC                                             ' überspringe ROM-Befehl
   1wwrite &H44                                             ' Temperaturmessung anstoßen
   Wait 1                                                   ' warten bis Messung fertig
   1wreset                                                  ' Initialisierung
   1wverify Sensor2(1)                                      ' sensor mit bestimmter id ansprechen
   1wwrite &HBE                                             ' Temperatur auslesen
   Scratch(1) = 1wread(9)                                   'scratchpad auslesen
   'Print Hex(crc8(scratch(1) , 7) )                         ' Prüfsumme ausgeben
   'If Scratch(8) = Crc8(scratch(1) , 7) Then                ' Prüfsumme vergleichen
   '    Print "Daten OK"
   'Else
   ''    Print "Fehler"
   'End If
   Temp = Scratch(2)                                        'MSB holen
   Shift Temp , Left , 8                                    'Platz für LSB machen
   Temp = Temp + Scratch(1)                                 'zu Word Format zusammenfügen
   Temp1 = Temp                                             'Integer Format
   Temp1 = Temp1 / 16
   Ist_temp2 = Scratch(8) - Scratch(7)
   Ist_temp2 = Ist_temp2 / Scratch(8)
   Ist_temp2 = Ist_temp2 + Temp1
   Ist_temp2 = Ist_temp2 - 0.25

'Hauptprogramm#################################

   Piregel1 = Piregler(ist_temp1 , Change1)                 'funktion regler aufrufen
   Piregel2 = Piregler(ist_temp2 , Change2)                 'funktion regler aufrufen
   Change1 = Piregel1                                       'in typ word wandeln
   Change2 = Piregel2                                       'in typ word wandeln

   'If Anzahl_sensoren <= 2 Then
   '   Compare1b = 255                                       'Gehäuselküfter
   '   Compare1a = 255
   'Else
      Compare1b = Change1                                   'Gehäuselküfter 'weisst compare1a den wert von Change zu
      Compare1a = Change2                                   'Kühlerlüfter 'weisst compare1a den wert von Change zu
   'End If
   If Ist_temp1 > Alarm Then
      Set Piezo
   Else
      Reset Piezo
   End If
'sonstige Ausgaben############################
  'KONTROLLWERTE ÜBERMITTELN ÜBER RS232
  Print Change1 ; "|" ; Change2 ; "|" ; Ist_temp1 ; "|" ; Ist_temp2 ;
  Print
  Loop
  End
'Funktion PI-Regeler#########################################
Function Piregler(byval Istwert As Single , Channel As Word) As Byte
      Local Regeldifferenz As Single                        'Regeldifferenz
      Local Pverstellung As Integer
      Local Iverstellung As Integer
      Local Tmp_i As Integer
      Local Tmp_i2 As Integer
      Local I_alt As Integer

      'Regelbedingung
        Regeldifferenz = Istwert - Sollwert


         'P-Anteil
           Pverstellung = Regeldifferenz * Krp
           If Pverstellung < 0 Then Pverstellung = 0
           If Pverstellung > 255 Then Pverstellung = 255

         'I Anteil
           Tmp_i = Regeldifferenz * Kri
           Tmp_i2 = Tmp_i                                   '/ T
           I_alt = Iverstellung
           If Channel < 255 Then                            ' Integral wirkt erst im Regelbereich
              Iverstellung = Tmp_i2 + I_alt
           Else
              Iverstellung = Tmp_i2
           End If

           If Iverstellung < 0 Then Iverstellung = 0
           If Iverstellung > 255 Then Iverstellung = 255

           'Ergebnis
           Ausgabe = Iverstellung + Pverstellung
           If Ausgabe < 0 Then Ausgabe = 0
           If Ausgabe > 255 Then Ausgabe = 255

           Print "Regeldifferenz: " ; Regeldifferenz ; " | Temp: " ; Istwert ; " | P: " ; Pverstellung ; " | I: " ; Iverstellung ;
           Print
      If Regeldifferenz > 0 Then
         Piregler = Ausgabe
      Else
         'Pverstellung = 0
         'Iverstellung = 0
         Piregler = 0
      End If                                                'entspricht der regelgröße
End Function
HTML:
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 30
Regeldifferenz: 5.875 | Temp: 30.875 | P: 58 | I: 35
0|93|23.9375|30.875
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 34
Regeldifferenz: 6.25 | Temp: 31.25 | P: 62 | I: 40
0|102|23.9375|31.25
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 39
Regeldifferenz: 6.5625 | Temp: 31.5625 | P: 65 | I: 45
0|110|23.9375|31.5625
Regeldifferenz: -1.0 | Temp: 24.0 | P: 0 | I: 44
Regeldifferenz: 6.8125 | Temp: 31.8125 | P: 68 | I: 50
0|118|24.0|31.8125
Regeldifferenz: -1.0 | Temp: 24.0 | P: 0 | I: 49
Regeldifferenz: 7.0 | Temp: 32.0 | P: 70 | I: 56
0|126|24.0|32.0
Regeldifferenz: -1.0 | Temp: 24.0 | P: 0 | I: 55
Regeldifferenz: 7.1875 | Temp: 32.1875 | P: 71 | I: 62
0|133|24.0|32.1875
Regeldifferenz: -1.0 | Temp: 24.0 | P: 0 | I: 61
Regeldifferenz: 7.4375 | Temp: 32.4375 | P: 74 | I: 68
0|142|24.0|32.4375
Regeldifferenz: -1.0 | Temp: 24.0 | P: 0 | I: 67
Regeldifferenz: 7.5 | Temp: 32.5 | P: 75 | I: 74
0|149|24.0|32.5
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 73
Regeldifferenz: 7.5 | Temp: 32.5 | P: 75 | I: 80
0|155|23.9375|32.5
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 79
Regeldifferenz: 7.125 | Temp: 32.125 | P: 71 | I: 86
0|157|23.9375|32.125
Regeldifferenz: -1.0 | Temp: 24.0 | P: 0 | I: 85
Regeldifferenz: 6.1875 | Temp: 31.1875 | P: 61 | I: 91
0|152|24.0|31.1875
Regeldifferenz: -1.0 | Temp: 24.0 | P: 0 | I: 90
Regeldifferenz: 5.25 | Temp: 30.25 | P: 52 | I: 95
0|147|24.0|30.25
Regeldifferenz: -1.0 | Temp: 24.0 | P: 0 | I: 94
Regeldifferenz: 4.3125 | Temp: 29.3125 | P: 43 | I: 98
0|141|24.0|29.3125
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 97
Regeldifferenz: 3.75 | Temp: 28.75 | P: 37 | I: 100
0|137|23.9375|28.75
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 99
Regeldifferenz: 3.25 | Temp: 28.25 | P: 32 | I: 102
0|134|23.9375|28.25
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 101
Regeldifferenz: 2.8125 | Temp: 27.8125 | P: 28 | I: 103
0|131|23.9375|27.8125
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 102
Regeldifferenz: 2.4375 | Temp: 27.4375 | P: 24 | I: 104
0|128|23.9375|27.4375
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 103
Regeldifferenz: 2.25 | Temp: 27.25 | P: 22 | I: 105
0|127|23.9375|27.25
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 104
Regeldifferenz: 1.9375 | Temp: 26.9375 | P: 19 | I: 105
0|124|23.9375|26.9375
Regeldifferenz: -1.0 | Temp: 24.0 | P: 0 | I: 104
Regeldifferenz: 1.625 | Temp: 26.625 | P: 16 | I: 105
0|121|24.0|26.625
Regeldifferenz: -1.0 | Temp: 24.0 | P: 0 | I: 104
Regeldifferenz: 1.1875 | Temp: 26.1875 | P: 11 | I: 105
0|116|24.0|26.1875
Regeldifferenz: -1.0 | Temp: 24.0 | P: 0 | I: 104
Regeldifferenz: 0.75 | Temp: 25.75 | P: 7 | I: 104
0|111|24.0|25.75
Regeldifferenz: -1.0 | Temp: 24.0 | P: 0 | I: 103
Regeldifferenz: 0.375 | Temp: 25.375 | P: 3 | I: 103
0|106|24.0|25.375
Regeldifferenz: -1.0 | Temp: 24.0 | P: 0 | I: 102
Regeldifferenz: 0.0625 | Temp: 25.0625 | P: 0 | I: 102
0|102|24.0|25.0625
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 101
Regeldifferenz: -0.25 | Temp: 24.75 | P: 0 | I: 101
0|0|23.9375|24.75
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 100
Regeldifferenz: -0.5 | Temp: 24.5 | P: 0 | I: 100
0|0|23.9375|24.5
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 99
Regeldifferenz: -0.625 | Temp: 24.375 | P: 0 | I: 99
0|0|23.9375|24.375
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 98
Regeldifferenz: -0.6875 | Temp: 24.3125 | P: 0 | I: 98
0|0|23.9375|24.3125
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 97
Regeldifferenz: -0.75 | Temp: 24.25 | P: 0 | I: 97
0|0|23.9375|24.25
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 96
Regeldifferenz: -0.8125 | Temp: 24.1875 | P: 0 | I: 96
0|0|23.9375|24.1875
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 95
Regeldifferenz: -0.875 | Temp: 24.125 | P: 0 | I: 95
0|0|23.9375|24.125
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 94
Regeldifferenz: -0.9375 | Temp: 24.0625 | P: 0 | I: 94
0|0|23.9375|24.0625
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 93
Regeldifferenz: -1.0 | Temp: 24.0 | P: 0 | I: 92
0|0|23.9375|24.0
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 91
Regeldifferenz: -1.0 | Temp: 24.0 | P: 0 | I: 90
0|0|23.9375|24.0
Regeldifferenz: -1.125 | Temp: 23.875 | P: 0 | I: 89
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 88
0|0|23.875|23.9375
Regeldifferenz: -1.125 | Temp: 23.875 | P: 0 | I: 87
Regeldifferenz: -1.0625 | Temp: 23.9375 | P: 0 | I: 86
0|0|23.875|23.9375
Regeldifferenz: -1.125 | Temp: 23.875 | P: 0 | I: 85
Regeldifferenz: -1.125 | Temp: 23.875 | P: 0 | I: 84
0|0|23.875|23.875
Regeldifferenz: -1.125 | Temp: 23.875 | P: 0 | I: 83
Regeldifferenz: -1.125 | Temp: 23.875 | P: 0 | I: 82
0|0|23.875|23.875
Regeldifferenz: -1.125 | Temp: 23.875 | P: 0 | I: 81
Regeldifferenz: -1.125 | Temp: 23.875 | P: 0 | I: 80
0|0|23.875|23.875
Regeldifferenz: -1.1875 | Temp: 23.8125 | P: 0 | I: 79
Regeldifferenz: -1.125 | Temp: 23.875 | P: 0 | I: 78
0|0|23.8125|23.875
Regeldifferenz: -1.125 | Temp: 23.875 | P: 0 | I: 77
Regeldifferenz: -1.1875 | Temp: 23.8125 | P: 0 | I: 76
0|0|23.875|23.8125
Regeldifferenz: -1.125 | Temp: 23.875 | P: 0 | I: 75
Regeldifferenz: -1.1875 | Temp: 23.8125 | P: 0 | I: 74
0|0|23.875|23.8125
Regeldifferenz: -1.125 | Temp: 23.875 | P: 0 | I: 73
Regeldifferenz: -1.1875 | Temp: 23.8125 | P: 0 | I: 72
0|0|23.875|23.8125
 
$hwstack = 32 'Standardwert 32 für hardware stack
$swstack = 10 'Standardwert 10 für the SW stack
$framesize = 40 'Standardwert 40 für the frame space
Die Standardwerte sind sicherlich zu klein, besonders swstack und frame.
Such mal in der Hilfe nach 'memory usage'. Dort ist erklärt, wie du die Werte berechnen kannst.

HBA
 
wenn ich mal den syntax check durchlaufn lasse und dann mir den Error report anschaue stehen da folgende werte?
Report : AC_2WIRE
Date : 05-14-2010
Time : 19:02:41

Compiler : BASCOM-AVR LIBRARY V 1.11.9.0
Processor : M8
SRAM : 400 hex
EEPROM : 200 hex
ROMSIZE : 2000 hex

ROMIMAGE : 11A0 hex -> Will fit into ROM
ROMIMAGE : 4512 dec
FLASH USED : 55 %
BAUD : 9600 Baud
XTAL : 8000000 Hz
BAUD error : 0.16%

Stack start : 45F hex
Stack size : 20 hex
S-Stacksize : A hex
S-Stackstart : 440 hex
Framesize : 28 hex
Framestart : 417 hex
Space left : 860 dec

LCD DB7 : PORTB.7
LCD DB6 : PORTB.6
LCD DB5 : PORTB.5
LCD DB4 : PORTB.4
LCD E : PORTB.3
LCD RS : PORTB.2
LCD mode : 4 bit

--------------------------------------------------------------------------------
Variable Type Address(hex) Address(dec)
--------------------------------------------------------------------------------
HWSTACK Word 005D 93
SWSTACK Word 001C 28
FRAME Word 0004 4
COUNTER0 Byte 0052 82
TIMER0 Byte 0052 82
COUNTER2 Byte 0044 68
TIMER2 Byte 0044 68
COMPARE2 Byte 0043 67
ADCD Word 0024 36
COUNTER1 Word 004C 76
TIMER1 Word 004C 76
CAPTURE1 Word 0046 70
COMPARE1A Word 004A 74
PWM1A Word 004A 74
COMPARE1 Word 004A 74
PWM1B Word 0048 72
COMPARE1B Word 0048 72
ERR Bit 0006 6
SCRATCH Byte (9) 0060 96
TEMP Word 0069 105
TEMP1 Integer 006B 107
IST_TEMP1 Single 006D 109
IST_TEMP2 Single 0071 113
SENSOR1 Byte (8) 0075 117
SENSOR2 Byte (8) 007D 125
AUSGABE Single 0085 133
PIREGEL1 Single 0089 137
PIREGEL2 Single 008D 141
CHANGE1 Byte 0091 145
CHANGE2 Byte 0092 146
SOLLWERT Single 0093 147
REGELGROESSE Single 0097 151
KRI Integer 009B 155
KRP Integer 009D 157
CHANNEL Word 009F 159
ANZAHL_SENSOREN Byte 00A1 161
ALARM Single 00A2 162
SENSORAUSFALL Byte 00A6 166
 
--------------------------------------------------------------------------------
Constant Value
--------------------------------------------------------------------------------
SREG &H3F
SPH &H3E
SPL &H3D
GIMSK &H3B
GICR &H3B
GIFR &H3A
TIMSK &H39
TIFR &H38
SPMCR &H37
SPMCSR &H37
I2CR &H36
TWCR &H36
MCUCR &H35
MCUSR &H34
MCUCSR &H34
TCCR0 &H33
TCNT0 &H32
OSCCAL &H31
SFIOR &H30
TCCR1A &H2F
TCCR1B &H2E
TCNT1H &H2D
TCNT1L &H2C
OCR1AH &H2B
OCR1AL &H2A
OCR1BH &H29
OCR1BL &H28
ICR1H &H27
ICR1L &H26
TCCR2 &H25
TCNT2 &H24
OCR2 &H23
ASSR &H22
WDTCR &H21
UBRRH &H20
UBRRHI &H20
EEARH &H1F
EEARL &H1E
EEDR &H1D
EECR &H1C
PORTB &H18
DDRB &H17
PINB &H16
PORTC &H15
DDRC &H14
PINC &H13
PORTD &H12
DDRD &H11
PIND &H10
SPDR &H0F
SPSR &H0E
SPCR &H0D
UDR &H0C
UCSRA &H0B
USR &H0B
UCSRB &H0A
UCR &H0A
UCSRC &H20
UBRRL &H09
UBRR &H09
ACSR &H08
ADMUX &H07
ADCSR &H06
ADCSRA &H06
ADCH &H05
ADCL &H04
I2DR &H03
I2AR &H02
I2SR &H01
I2BR &H00
TWDR &H03
TWAR &H02
TWSR &H01
TWBR &H00
INT1 7
INT0 6
IVSEL 1
IVCE 0
INTF1 7
INTF0 6
TOIE0 0
TOIE1 2
OCIE1B 3
OCIE1A 4
TICIE1 5
TOIE2 6
OCIE2 7
TOV0 0
TOV1 2
OCF1B 3
OCF1A 4
ICF1 5
TOV2 6
OCF2 7
SPMIE 7
RWWSB 6
RWWSRE 4
BLBSET 3
PGWRT 2
PGERS 1
SPMEN 0
SELFPRGEN 0
SE 7
SM2 6
SM1 5
SM0 4
ISC11 3
ISC10 2
ISC01 1
ISC00 0
WDRF 3
BORF 2
EXTRF 1
PORF 0
CS02 2
CS01 1
CS00 0
COM1A1 7
COM1A0 6
COM1B1 5
COM1B0 4
FOC1A 3
FOC1B 2
PWM11 1
PWM10 0
WGM11 1
WGM10 0
ICNC1 7
ICES1 6
CTC11 4
CTC10 3
WGM13 4
WGM12 3
CTC1 3
CS12 2
CS11 1
CS10 0
FOC2 7
PWM2 6
WGM20 6
COM21 5
COM20 4
CTC2 3
WGM21 3
CS22 2
CS21 1
CS20 0
ADHSM 4
ACME 3
PUD 2
PSR2 1
PSR10 0
WDCE 4
WDTOE 4
WDE 3
WDP2 2
WDP1 1
WDP0 0
EERIE 3
EEMWE 2
EEWE 1
EEPE 1
EERE 0
PB7 7
PB6 6
PB5 5
PB4 4
PB3 3
PB2 2
PB1 1
PB0 0
DDB7 7
DDB6 6
DDB5 5
DDB4 4
DDB3 3
DDB2 2
DDB1 1
DDB0 0
PINB7 7
PINB6 6
PINB5 5
PINB4 4
PINB3 3
PINB2 2
PINB1 1
PINB0 0
PC6 6
PC5 5
PC4 4
PC3 3
PC2 2
PC1 1
PC0 0
DDC6 6
DDC5 5
DDC4 4
DDC3 3
DDC2 2
DDC1 1
DDC0 0
PINC6 6
PINC5 5
PINC4 4
PINC3 3
PINC2 2
PINC1 1
PINC0 0
PD7 7
PD6 6
PD5 5
PD4 4
PD3 3
PD2 2
PD1 1
PD0 0
DDD7 7
DDD6 6
DDD5 5
DDD4 4
DDD3 3
DDD2 2
DDD1 1
DDD0 0
PIND7 7
PIND6 6
PIND5 5
PIND4 4
PIND3 3
PIND2 2
PIND1 1
PIND0 0
RXC 7
TXC 6
UDRE 5
FE 4
OR 3
DOR 3
UPE 2
PE 2
U2X 1
MPCM 0
RXCIE 7
TXCIE 6
UDRIE 5
RXEN 4
TXEN 3
CHR9 2
UCSZ2 2
RXB8 1
TXB8 0
URSEL 7
UMSEL 6
UPM1 5
UPM0 4
USBS 3
UCSZ1 2
UCSZ0 1
UCPOL 0
SPIE 7
SPE 6
DORD 5
MSTR 4
CPOL 3
CPHA 2
SPR1 1
SPR0 0
SPIF 7
WCOL 6
SPI2X 0
ACD 7
ACBG 6
ACO 5
ACI 4
ACIE 3
ACIC 2
ACIS1 1
ACIS0 0
REFS1 7
REFS0 6
ADLAR 5
MUX3 3
MUX2 2
MUX1 1
MUX0 0
ADEN 7
ADSC 6
ADFR 5
ADIF 4
ADIE 3
ADPS2 2
ADPS1 1
ADPS0 0
TWINT 7
TWEA 6
TWSTA 5
TWSTO 4
TWWC 3
TWEN 2
TWIE 0
TWA6 7
TWA5 6
TWA4 5
TWA3 4
TWA2 3
TWA1 2
TWA0 1
TWGCE 0
TWS7 7
TWS6 6
TWS5 5
TWS4 4
TWS3 3
TWPS1 1
TWPS0 0
AS2 3
TCN2UB 2
OCR2UB 1
TCR2UB 0
_DATE_FORMAT 0
_DATE_SEPARATOR 92
_RTSCTS 0
_RTSCTS1 0
_CHIP 17
_RAMSIZE 1024
_ERAMSIZE 512
_SIM 0
_XTAL 8000000
_BUILD 11190
_COMPILER 90
_HWMUL 1
_ROMSIZE 8192
_DOSFILEWRITE 0
_DOSDIRWRITE 0
_1WEXT 0
_ADC_REFMODEL 0
 
Was willst du uns denn mit dem Report sagen?
Auf jeden Fall steht dort, dass du noch 860 Byte im SRAM frei hast, sodass du jeden der drei Stack Werte auf mindestens 100 vergrößern könntest.
Danach wird dein Programm nicht mehr hängen oder irgendwelchen Blödsinn ausgeben.

HBA
 
was ich damit sagen will, weiss ich selbnst ned, hab gedacht könnte vielleicht hilfreich sein,.
hab jetzt mal putty genommen als serial prog, da funzt es einwandfrei,. seid über ner stunde,,.
realtherm hat auf einmal solche probs gemacht
 
Hallo,

was ich damit sagen will, weiss ich selbnst ned, hab gedacht könnte vielleicht hilfreich sein,.
hab jetzt mal putty genommen als serial prog, da funzt es einwandfrei,. seid über ner stunde,,.
realtherm hat auf einmal solche probs gemacht
Das nehm ich eigentlich nur noch. Die einzige vernünftige freie Alternative
dazu ist Teraterm. ZOC wär auch noch ok aber es ist Shareware (also zahlen).
Und über Hyperterm braucht man wohl kein weiteres Wort verlieren. Das einzig
gute ... es ist immer vorhanden ( bis auf Win7 :p )

Ich bin vorgestern beim stöbern in der BASCOM-Anleitung auf den Befehl
STCHECK gestoßen. Auch die Erklärung zu den Stacks und Frame usw die
bei dem Befehl zu finden ist, ist recht interessant. Es lohnt sich, das mal
genauer durchzulesen ;)

Gruß
Dino
 
irgendwie hängts bei mir, hab jetzt soviel drüber geschrieben usw,,. aber hab immnernoch noch en denkfehler/problem, sobald der PWM-Wert 255 erreicht hat, wird beim nächsten durchgang mein wert resetet und es fängt wieder bei 0 an ? IS mir erst gestern aufgefallen.

Code:
'Funktion PI-Regeler#########################################
Function Piregler(byval Istwert As Single , Channel As Word) As Byte
      Local Regeldifferenz As Single                        'Regeldifferenz
      Local Pverstellung As Integer
      Local Iverstellung As Integer
      Local Tmp_i As Integer
      Local Tmp_i2 As Integer
      Local I_alt As Integer

      'Regelbedingung
        Regeldifferenz = Istwert - Sollwert


         'P-Anteil
           Pverstellung = Regeldifferenz * Krp
           If Pverstellung < 0 Then Pverstellung = 0
           If Pverstellung > 255 Then Pverstellung = 255

         'I Anteil
           Tmp_i = Regeldifferenz * Kri
           Tmp_i2 = Tmp_i                                   '/ T
           I_alt = Iverstellung
           If Channel < 255 Then                            ' Integral wirkt erst im Regelbereich
              Iverstellung = Tmp_i2 + I_alt
           Else
              Iverstellung = Tmp_i
              'Iverstellung = Tmp_i2 + I_alt
           End If

           If Iverstellung < 0 Then Iverstellung = 0
           If Iverstellung > 255 Then Iverstellung = 255

           'Ergebnis
           Ausgabe = Iverstellung + Pverstellung
           If Ausgabe < 0 Then Ausgabe = 0
           If Ausgabe > 255 Then Ausgabe = 255

           Print "Regeldifferenz: " ; Regeldifferenz ; " | Temp: " ; Istwert ; " | P: " ; Pverstellung ; " | I: " ; Iverstellung ;
           Print
      If Regeldifferenz > 0 Then
         Piregler = Ausgabe
      Else
         'Pverstellung = 0
         'Iverstellung = 0
        Piregler = 0
      End If                                                'entspricht der regelgröße
End Function
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)