mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMEGA163 - AT..8535 Problem


Autor: Sebastian__ (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alle rjmp Befehle bei den Interrupt-Vektoren
(1 Wort) sind durch jmp Befehle (2 Worte) zu
ersetzen, da der Mega163 mehr wie 8 k Flash
Programmspeicher hat.

Autor: Sebastian__ (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.