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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.