MoinMoin
ich hab mal wieder ein kleines Problem. Ich hab nen Mega128 und wollte
dort testhalber erstmal nur ne LED blinken lassen, da ich mir dafür n
Adapterboard zusammengestrickt hab (siehe mein Beitrag im Zeigt her eure
Kunstwerke2 thread). Der folgende Code funktioniert weder im AVR-Studio
Simulator, noch per Dragon im Debug-Modus. Im Simulator springt er beim
ret wieder an den Anfang der Warteschleife, im Debug-Modus hängt er sich
auf, und ich muss reset klicken. Wenn ich das ganze mit jmps statt mit
calls mache, klappt es. Daher meine Vermutung es hat was mit dem Stack
zu tun. Bei der Suche im Forum bin auf die M103 Fuse gestoßen, die hab
ich dann deaktiviert, was jedoch keine Verbesserung brachte...
Für klärende Hinweise wäre ich wirklich dankbar=)(Ich benutze das
AVRStudio 4.19, und wie gesagt nen Mega128)
1 | .include "m128def.inc"
|
2 |
|
3 | .org 0x0000
|
4 | jmp start
|
5 |
|
6 |
|
7 | start:
|
8 |
|
9 | ;Stackpointer initialisieren
|
10 |
|
11 | ldi r16,HIGH(RAMEND) ;Stackpointer (high) auf
|
12 | out sph,r16 ;RAM-Ende setzen
|
13 | ldi r16,LOW(RAMEND) ;Stackpointer (low) auf
|
14 | out spl,r16 ;RAM-Ende setzen
|
15 |
|
16 |
|
17 |
|
18 | ldi r16,0xff
|
19 | out DDRA,r16
|
20 | ldi r16,0
|
21 |
|
22 |
|
23 | schleife:
|
24 |
|
25 | inc r16
|
26 | out PORTA,r16
|
27 |
|
28 | call Warteschleife
|
29 |
|
30 |
|
31 | Warteschleife:
|
32 |
|
33 | ldi r17,255
|
34 | ldi r18,255
|
35 |
|
36 | W1:
|
37 | dec r17
|
38 | brne W1
|
39 | dec r18
|
40 | brne W1
|
41 | ret
|
MfG Chaos
P.S. beim Zweiten durchlauf im Simulator springt er nicht an den
Schleifenanfang, sondern zum Programmanfang und gibt folgende
Fehlermeldung aus: AVR Simulator: Invalid opcode 0xffff at address
0x00ffff