Hmm, also ich hab schon viel "interruptintensivere" Programme laufen gehabt.
Mit dem Befehl
$Hwstack 128 und
$swstack 128 gings auch net...

Gibt es da sonst noch irgendwelche Speicher, die man vergrössern kann?
Also ich find das irgendwie strub... Sowas hatte ich noch nie.. und mein Programm ist nicht sehr verrückt....


T nimmt beim Komparatorinerrupt zu (eben: hier nicht der volle Code)
Der Code sollte funktionieren...

Hier ist er, für alle, die auf Nummer sicher gehen wollen:
Code:
$regfile = "m8def.dat"
$crystal = 6000000
$hwstack 128
$swstack 128

Config Lcd = 20 * 2
Config Lcdpin = Pin , E = Portb.0 , Rs = Portd.4 , Db7 = Portd.3 , Db6 = Portd.2 , Db5 = Portd.1 , Db4 = Portd.0
Cursor On



Ddrd.7 = 0                                                  ' Komparator-Signaleingang

Dim A As Word
Dim B As Word
Dim D As Word
Dim C As Word
Dim E As Word
Dim T As Byte
Dim G As Byte
Dim Z As Byte
Z = 0
Dim U As Byte
Dim I As Byte
U = 0
G = 0

Dim X(40) As Byte


Acsr = &B01001000
On Aci Flankenwechsel
Enable Interrupts

On Timer1 Zeit
Config Timer1 = Timer , Prescale = 64
Start Timer1
Enable Timer1


T = 0

Do

If T = 8 Then
B = A / 4
D = 65534 - B
C = A / 2
E = 65534 - C

Timer1 = D
Z = 1
G = 0
End If

If U = 8 Then
Stop Timer1
Acsr = &B01000000
Cls
Locate 1 , 1
Lcd "Ende"
End If


Locate 2 , 1
Lcd T
Locate 2 , 5
Lcd Z
Locate 2 , 10
Lcd G
Locate 2 , 18
Lcd U

Loop

Flankenwechsel:
A = Timer1

If Z = 0 Then
Timer1 = 0
Incr T
End If

If Z = 1 Then

If G = 1 Then
Incr U
X(u) = Acsr.5
End If
If G = 0 Then
Return
End If


End If




Return

Zeit:
Timer1 = E

If Z = 0 Then
Return
End If

If G = 0 Then
G = 1
Return
End If

If G = 1 Then
G = 0
End If

Return


End
Nach 8 Komparator-Interrupts wird der Timer voreingestellt.
Das Ganze soll ein Empfänger für Manchester-Codierte Bytes werden, befindet sich noch arg in Entwicklung.

??

Herzliche Grüsse
Mario