AVR Atmega644 - grosse Sprünge im Flash

Gast #2076484
Lesenswert?

Hallo alle AVR-Spezialisten.

Ich baue einen LED-Globus und sende meine Bilddaten dafür byteweise an 
den PortD. Zuerst speichere ich 8 Bytes in 8 Registern, dann rufe ich 
eine Funktion auf, welche die Daten nacheinander an den PortD schiebt.
1
ldi r16, 0b11100000
2
ldi   r17, 0b11100000
3
ldi   r18, 0b11100000
4
ldi   r19, 0b11100000
5
ldi   r20, 0b01100000
6
ldi   r21, 0b01100000
7
ldi   r22, 0b11000000
8
ldi   r23, 0b11000000
9
rcall Schiebe8byte
10
ldi   r16, 0b11000000
11
ldi   r17, 0b11000000
12
ldi   r18, 0b11000000
13
ldi   r19, 0b11000000
14
ldi   r20, 0b11000000
15
ldi   r21, 0b11000100
16
ldi   r22, 0b11000100
17
ldi   r23, 0b11000100
18
rcall Schiebe8byte
Das Problem ist, nach ca 1000 Zeile Code, funktionieren die Spünge nicht 
mehr. Jedenfalls sagt der Linker "undifinerte Sprungadresse". Ich werde 
noch bestimmt 4000 Bytes ausgeben und muss einen Weg finden, in die 
Funktion "Schiebe8byte" und wieder zurück zu springen.
Kann mir jemand helfen?

Hier noch die Schiebefunktion:
Schiebe8byte:
1
out  PORTD, r16
2
sbi   PORTB, 1
3
cbi      PORTB, 1
4
out      PORTD, r17
5
sbi   PORTB, 1
6
cbi    PORTB, 1
7
out      PORTD, r18
8
;...
9
out      PORTD, r23
10
sbi   PORTB, 1
11
cbi   PORTB, 1
12
ret

Vielen Dank für jede Hilfe,
Christoph
Gast #2077641
Lesenswert?

Hallo und vielen Dank für die Hilfe. Mit call und jmp funktionieren die 
Sprünge.

Da Sisy aber ab 1000 Zeilen code abstürzt, bin ich jetzt auf AVR Studio 
umgestiegen. Mit dem Atmega32 funktioniert auch alles, ich habe nur 
keine Bibliothek für den Atmega644.

Kann ich da mit
1
.include "m64def.inc"
arbeiten?

Unter "Tools"->"AVR Prog" lässt sich unter "divices" auch nur der 
Atmega64 auswählen. Brennen klappt, prüfen klappt, aber der Controller 
abreitet anschließend nicht in seiner Schaltung.
Gast #2077653
Lesenswert?

Hi

Der ATMega644 hat nichts mit dem ATMega64 zu tun. Sei froh, das du dur 
die Fuses nicht versaut hast.

>ich habe nur keine Bibliothek für den Atmega644.

Im aktuellen AVR-Studio gibt es m644def.inc, m644adef.inc, m644defp.inc 
und
m644defpa.inc. Und welchen hast du?

MfG Spess

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren