ATMEGA163 - AT..8535 Problem

Gast #14556
Lesenswert?
• ▲
▼
hallo,
ich habe ein problem mit mit dem atmega163, der folgende code lief auf 
dem 8535 problemlos, aber auf dem 8535 gibt es immer nur einen 
rücksprung auf "Init" wenn die zeile rjmp Init_Main aufgerufen wird.



.include "m163def.inc"  ;definitonsdatei für AT90S9535 einbinden

rjmp Init      ;Reset Handler & Watchdog Reset
rjmp INT_0      ;Externer Reset eingang 0
rjmp INT_1      ;Externer Reset eingang 1
rjmp Timer2_Comp  ;Timer 2 Compare Match
rjmp Timer2_OVF    ;Timer 2 Overflow
rjmp Timer1_Capt  ;Timer 1 Capture Event
rjmp Timer1_CompA  ;Timer 1 Compare Match A
rjmp Timer1_CompB  ;Timer 1 Compare Match B
rjmp Timer1_OVF    ;Timer 1 Overflow
rjmp Timer0_OVF    ;Timer 0 Overflow
rjmp Spi_Comp    ;Spi Transfer Complete
rjmp UartRX_Comp  ;Uart RX Transfer Complete
rjmp Uart_DRE    ;Data Register Emty
rjmp UartTX_Comp  ;Uart TX Transfer Complete
rjmp ADC_Comp    ;Aanlog Digtal Conversion Comlete
rjmp EE_RDY      ;EEprom Ready
rjmp Ana_Compa    ;Analog Compeerator


Init:
;Initialisierung des stack Pointers       <----- 8Kb SRAM max ram = 
$045F
ldi r16, $04    ; Stack Pointer setup
out SPH,r16    ; Stack Pointer High Byte
ldi r16, $5F    ; Stack Pointer setup
out SPL,r16    ; Stack Pointer Low Byte

;Initialisierung der PORTS A-D

;**A**
ldi r16,$00
out DDRA,r16
ldi r16,$00
out PORTA,r16

;**B**
ldi r16,0b11110000
out DDRB,r16
ldi r16,0b00001111
out PORTB,r16

;**C**
ldi r16,$FF
out DDRC,r16
ldi r16,$00
out PORTC,r16

;**D**
ldi r16,0b11110000
out DDRD,r16
ldi r16,0b00111100
out PORTD,r16


rjmp Init_Main    ;Von dieser routine wird immer ein sprung zu main 
gemacht

.
.
.
Init_Main:

wo liegt das problem? den Stack pointer habe ich angepasst und das .h 
file auf den mega163 umgestellt, warum läuft das nicht ??

vielen dank
Sebastian
Gast #14558
Lesenswert?
• ▲
▼
danke so wit bin ich jetzt auch schon, aber die IRQ routinen sind ja 
nicht das prob. sondern dir rcall und rjmp befehle. ein prog das nur 
4058 words lang ist sollte ja problemlos mit rjmp befehlen arbeiten, 
jedenfalls tut es da beim 8535, jetzt muss ich aber die rxxx befehle 
gegen call und jmp austauschen. der IRQ vektor sieht jetzt so aus:
.org 0x0000
jmp Init                        ;Reset Handler & Watchdog Reset
.org INT0addr
jmp INT_0                       ;Externer Reset eingang 0
.org INT1addr
jmp INT_1                       ;Externer Reset eingang 1
.org OC2addr
jmp Timer2_Comp                 ;Timer 2 Compare Match
...

oder bleibt mir nur das eine übrig alle rcall gegen call und rjmp gegen 
jmp befehle zu tauschen ???
ich habe zwar schon viel programmiert aber bei sowas bin ich immer etwas 
ratlos.

Sebastian
Gast #14559
Lesenswert?
• ▲
▼
Wenn Du dir nicht sicher bist das alle mit rcall
bzw. rjmp angesprungenen Label innerhalb von
+-2 kWorten liegen, dann ist ein globaler Tausch
die einfachste Lösung. Beim 8535 werden ja per WRAP
arround positive Sprünge > 2 k Worte in negative verwandelte, da 
hierdurch 8 k Byte Flash komplett
mittels rjmp und rcall adressierbar sind. Daher
verfügen alle AVRs mitr <= 8 k Flash auch nicht
über den rjmp und rcall Befehl.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 24 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.