letzte Woche lief mit der 1.11.9.3 noch alles 1a, auf einen Schlag kam immer die Fehlermeldung Out of SRAM space [Error 22 Line 11]
Ich habe jetzt schon zig Einstellungen getestet nichts geht.
In der 1.11.9.1 gehts momemtan noch.
hier mal der Code:
Ich danke euch schon mal im vorraus, für die HilfeCode:$prog &HFC , &HFF , &HD9 , &H00 $regfile = "attiny2313.dat" $crystal = 4000000 Open "COMD.0:9600,8,n,2" For Input As #1 ' Software UART konfigurieren ' Variablendeklaration Dim Zeiger As Byte At &HA0 Zeiger = 1 Dim Flag As Byte At &HA1 Dim Adresse As Eram Byte Dim Hot As Eram Byte 'Scharfschalt-Status im eeProm Dim Adresse_temp As Byte At &HA2 Dim Tempword As Word At &HA3 Adresse_temp = Adresse Dim Tempbyte As Byte At &HA5 Dim Tempbyte2 As Byte At &HA6 Dim Init As Byte At &HA7 Dim Protokoll(10) As Byte 'Ausgangsports konfigurieren Ddrd = &B10111110 Ddrb = &B11111111 'Beispiel: DDRx = &B0000100 'Pin Px2 Ausgang, Rest Eingang Portb = 0 Portd = &B01000000 ' 2-mal Timer konfigurieren Config Timer0 = Timer , Prescale = 1024 On Timer0 Timer_irq 'Nosave Stop Timer0 Config Timer1 = Timer , Prescale = 64 On Timer1 Timer_irq2 'Nosave Disable Timer1 Stop Timer1 Timer1 = 0 Enable Timer0 Enable Interrupts Waitms 100 ' Initialisieren bereit If Pind.6 = 0 Then Waitms 100 If Pind.6 = 0 Then Portd.5 = 0 Init = 1 Hot = 0 Waitms 100 Timer1 = 20500 Enable Timer1 Start Timer1 End If End If If Hot = 1 And Init = 0 Then 'Scharfschalt-Status setzen Portd.5 = 1 End If Do ' Mainloop, hier dreht der Controller seine Runden Tempbyte = Waitkey(#1) ' ware auf Zeichenempfang über Soft-UART Gosub Zeichenempfang ' gehe zu Zeichenverarbeitung If Flag = 1 Then ' Protokoll ist komplett ? Gosub Proto Flag = 0 ' Protokollflag wieder rücksetzen Zeiger = 1 Elseif Flag = 2 Then ' Protokoll ist komplett ? Gosub Scharfschalten ' Protokoll abarbeiten Flag = 0 ' Protokollflag wieder rücksetzen Zeiger = 1 ' zeiger für Speicherung des nächsten eingehenden Zeichens rücksetzen End If Loop Zeichenempfang: 'Tempbyte = Udr Protokoll(zeiger) = Tempbyte ' empfangenes Byte in Protokoll ablegen If Tempbyte = 0 Then ' Protokollende erreicht Zeiger = 1 ' Protokollzeiger zurücksetzen End If If Protokoll(1) = 27 Then ' Wenn Protokollbeginn erkannt If Tempbyte = 0 Then ' und aktuell empfangenes Byte ist Protokollende Flag = 1 ' Protokollabarbeitung veranlassen End If Incr Zeiger ' sonst nächste Speicherstelle für Protokoll auswählen Elseif Protokoll(1) = 35 Then ' Wenn Protokollbeginn erkannt If Tempbyte = 0 Then ' und aktuell empfangenes Byte ist Protokollende Flag = 2 ' Protokollabarbeitung veranlassen End If Incr Zeiger ' sonst nächste Speicherstelle für Protokoll auswählen Else Zeiger = 1 ' Protokoll wieder von vorne beginnen Timer0 = 0 ' Timer 0 resetten Start Timer0 ' timer 0 starten Enable Timer0 ' und Interrupt aktivieren End If Return End Timer_irq: Stop Timer0 Disable Timer0 Zeiger = 1 Return End Timer_irq2: If Init = 1 Then Timer1 = 60500 Toggle Portb.0 Else Portb = 0 ' Ports rücksetzen Timer1 = 0 ' Timer zurücksetzen Disable Timer1 ' Timer interrupt deaktivieren Stop Timer1 ' Timer stoppen Protokoll(1) = 0 Protokoll(2) = 0 Protokoll(3) = 0 Protokoll(4) = 0 End If Return End Proto: If Protokoll(2) = Adresse_temp Then ' prüfen ob diese Platine angesprochen ist Flag = 3 End If If Protokoll(2) = 255 Then ' prüfen ob alle angesprochen sind Flag = 3 End If If Flag = 3 Then ' Ausführung wenn Adresse stimmt oder alle angesprochen sind Flag = Protokoll(3) If Flag = 64 And Init = 0 Then ' Programm verzweigen nach Steuerbyte des Protokolls Portb = Protokoll(4) ' Port setzen Timer1 = 53036 Enable Timer1 Start Timer1 End If ' INITIALISIEREN If Flag = 72 And Init = 1 Then Init = 0 Flag = Protokoll(4) Adresse = Flag ' Adresse in EEPROM speichern, wird bei nächstem Reset verwendet Adresse_temp = Protokoll(4) ' neue Adresse ab sofort verwenden, auch ohne Reset Portb = 0 End If End If Protokoll(1) = 0 ' gespeichertes Protokoll löschen Protokoll(2) = 0 Protokoll(3) = 0 Protokoll(4) = 0 Return End Scharfschalten: ' Programmteil scharf schalten If Init = 0 Then Portb = 0 If Protokoll(2) = 255 Then Flag = 4 If Flag = 4 Then Flag = Protokoll(3) End If If Flag = 64 Then Flag = Protokoll(4) End If If Flag = 0 Then Portd.5 = 0 'Module unscharf Hot = 0 'Status ins eeProm End If If Flag = 1 Then Portd.5 = 1 'Module scharf Hot = 1 'Status ins eeProm End If End If Protokoll(1) = 0 ' gespeichertes Protokoll löschen Protokoll(2) = 0 Protokoll(3) = 0 Protokoll(4) = 0 Timer1 = 53036 Enable Timer1 Start Timer1 End If Return End







Zitieren

Lesezeichen