Hallo
ich bin ein guter mitleser in diesem Forum und habe auch schon alle
möglichen Fehler mit euerer Hilfe lösen können, doch aktuell ist mein
Latein am Ende.
Mein Code erzeugt beim Einsprung in die Funktion den folgenden Code.
Wenn ich jedoch steppe, stürzt mir der Debugger bei RCALL weg. Ohne zu
debuggen wird mein Code komplett ausgeführt.
Optimierungseinstellungen haben auch nichts gebracht. Als ich allerdings
den Teil in einem neuen PRojekt angeleget habe konnte ich auch den Code
debuggen.
Der Stack sieht auch wunderbar aus, die letzte gesicherte Sprungstelle
ist vorhanden und die aktuelle wird auch weggeschrieben.
In der Funktion erzeuge ich noch eine Variable
1 | function test()
|
2 | {
|
3 | uint16_t uTest = 0;
|
4 | function1(&uTest); //pointer zu Funkion
|
5 | function2(uTest); //explizite übergabe
|
6 | }
|
Definiere ich die Variable "static"/Global ist alles IO, aber sonst
nicht.
1 | 112: { //Einsprung in test()
|
2 | 000013FA PUSH R28 Push register on stack
|
3 | 000013FB PUSH R29 Push register on stack --> von R29 nach RCALL
|
4 | 000013FC RCALL PC+0x0001 Relative call subroutine --> bleibt der Debugger hängen
|
5 | 000013FD IN R28,0x3D In from I/O location
|
6 | 000013FE IN R29,0x3E In from I/O location
|
7 | 117: uint16_t uTest = 0;
|
8 | 00001407 STD Y+2,R1 Store indirect with displacement
|
9 | 00001408 STD Y+1,R1 Store indirect with displacement
|
10 | 118: function1(&uBaud);
|
11 | 00001409 MOVW R24,R28 Copy register pair
|
12 | 0000140A ADIW R24,0x01 Add immediate to word
|
13 | 0000140B CALL 0x00000A72 Call subroutine
|
Hätte von euch jemand eine Idee wo ich noch suchen kann?
Vielen Dank.