Gast
#2231900
Hi, ich hhabeein Problem in einem Projekt mit einem MEGA32 und AVRStudio 4.18, das mich etwas stutzig erscheinen lässt. Ich fahre per IJMP indiziert eine Tabelle mit 255 Einträgen an, was seither klaglos funktioniert hat, ach der Standardmethode
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
Der Code ist dann inzwischen reichlich angewachsen (>14k); indem ich etliche rcall-Sprünge innerhalb der aschlußendlich ngesprungenen Subroutinen durch Makros ersetzt habe. Nun konnten die Einträge in der Sprungtabelle per rjmp irgendwann nicht mehr erreicht werden; somit wollte ich stattdesen "jmp" in der Sprungtabelle verwenden. Seither wird grundsätzlich der falsche Tabelleneintrag angesprungen, quasi um Dezimal 81 nach hinten verschoben. Vor Erweiterung des Codes habe ich alle 255 Tabelleneinträge einwandfrei anfahren können. Kann das dadurch bedingt sein, das der Compiler die Makros nicht richtig berücksichtigt? Oder liegt es an den JMPs? Auch die andere Lösung des Anfahrens der Sprungtabelle per lpm un einer Sprungtabelle mit ".dw"-Einträgen arbeitet nicht korrekt; auch die Position der Sprungtabelle im Code ist irrelevant Viele Grüsse Stefan