Da wäre mal interessant, wie das Programm aussieht und was da hinzugefügt wurde. Nur mit dem bisschen Code kann es alles sein.
Hallo
Ich bekomme folgende Fehlermeldung in Bascom:
Error:61 Line:660 Label not found [_DBL_K2SRAM ]
Error:221: Line:660 Backward jump out of range [_DBL_K2SRAM [2966]]
Error:61 Line:660 Label not found [_DBL_K2SRAM ]
Error:221: Line:660 Backward jump out of range [_DBL_K2SRAM [2966]]
Was soll das Bedeuten?
Line 660 ist meine letzte Zeile, wie ihr sehen könnt st das Programm nicht gerade klein.
Hat es was mit den Stacks oder so zu tun?
Der Anfang sieht so aus:
Ich habe das Programm immer wieder getestet und hat bisher funktioniert, ich hab gerade nur etwas hinzugefügt und dann kam eben dieser Fehler.Code:$prog , 255 , &B11011001 , 'Quarz an / Teiler aus / Jtag aus $regfile = "m2560def.dat" 'Definitionsfile für M2560 Prozessor $hwstack = 82 '80 Hardwarestack $framesize = 68 '64 Framesize $swstack = 68 '44 Softwarestack $baud = 19200 'Baudrate für UART $crystal = 16000000
Vorschläge?
Da wäre mal interessant, wie das Programm aussieht und was da hinzugefügt wurde. Nur mit dem bisschen Code kann es alles sein.
#ifndef MfG
#define MfG
Hinzugefügt wurde:
auch noch was anderes, aber wenn ich jeweils die IF-Teile auskommentiere kommt der Fehler nicht, es ist eine Interrupt Routine.ISR_DECODERR:
If Kette_Rechts >= 0 Then Incr LEFT_DISTANCE
If Kette_Rechts <= 0 Then Decr LEFT_DISTANCE
Return
ISR_DECODERL:
If Kette_Links >= 0 Then Incr RIGHT_DISTANCE
If Kette_Links <= 0 Then Decr RIGHT_DISTANCE
Return
Zeig mal das ganze Programm.
Der Code, der dasteht, sagt alleine nix aus. Der Fehler kann woanders auch liegen.
#ifndef MfG
#define MfG
Beitrag von Autor gelöscht.
2. Teil Hauptschleife, Funktionen usw
Trennung musste sein wegen Limit der Zeichen in einem beitrag
Wunderbar... sieht mal wieder nach nem Bug in Bascom aus.
Wenn man die beiden ISRs nämlich umschreibt:
... dann funktionierts. Keine Ahnung warum.Code:Isr_decoderr: If Kette_rechts >= 0 Then Left_distance = Left_distance + 1 If Kette_rechts <= 0 Then Left_distance = Left_distance - 1 Return Isr_decoderl: If Kette_links >= 0 Then Right_distance = Right_distance + 1 If Kette_links <= 0 Then Right_distance = Right_distance - 1 Return
Wenn ich ne andere Double-Variable deklariere und die mit INCR/DECR veränder, dann klappt das auch. Also ich werd da draus nicht schlau, warum Bascom hier so rumzickt.
#ifndef MfG
#define MfG
Vielen Dank!
Ersetzt der Compiler das DECR/INCR nciht sowieso durch die Operation? Komisch...
Hm keine Ahnung.
In C ist eigentlich x++ und x = x + 1 auch das gleiche...
#ifndef MfG
#define MfG
Wenn du dies
Left_Distance = 0
einfügst, nachdem Left_Distance deklariert ist, geht es auch.
Seltsam.
Lesezeichen