ATMEGA644 SPI ..out of range...

Gast #438171
Lesenswert?
• ▲
▼
Hilfe,

ich versuche mit AVR-Studio 4 SP4 die einfache Routine "schreiben" auf 
den SPI BUS.

Leider kommt beim erstellen immer ein Fehler!!!



.include "m644def.inc"     Version           : 2.24

sbis SPSR0,SPIF0


: error: Operand 1 out of range: 0x2d

SPSR0 hat wohl einen falschen Verweis?

Wer hat ähnliche Erfahrungen?

Gruß rookie...
Gast #438472
Lesenswert?
• ▲
▼
Vielen Dank für die schnellen Antworten.

In der include "m644def.inc" Datei stehen die Register jeweils immer nur 
mit der 0 deshalb SPIF0 usw.

Es kamen Fehlermeldungen weil die Registernamen nicht bekannt waren.

Hab ich vielleicht eine falsche ...inc?

.equ  SPDR0  = 0x2e
.equ  SPSR0  = 0x2d
.equ  SPCR0  = 0x2c

; SPSR0 - SPI Status Register
.equ  SPI2X0  = 0  ; Double SPI Speed Bit
.equ  WCOL0  = 6  ; Write Collision Flag
.equ  SPIF0  = 7  ; SPI Interrupt Flag

; SPCR0 - SPI Control Register
.equ  SPR00  = 0  ; SPI Clock Rate Select 0
.equ  SPR10  = 1  ; SPI Clock Rate Select 1
.equ  CPHA0  = 2  ; Clock Phase
.equ  CPOL0  = 3  ; Clock polarity
.equ  MSTR0  = 4  ; Master/Slave Select
.equ  DORD0  = 5  ; Data Order
.equ  SPE0  = 6  ; SPI Enable
.equ  SPIE0  = 7  ; SPI Interrupt Enable

Ich sehe den Wald vor lauter Bäumen nicht mehr.

Melde mich noch mal.
Vielen Danke erst einmal.


Gruß





Gast #438480
Lesenswert?
• ▲
▼
Der Befehl sbis funktioniert nur mit den unteren 32 I/O-Registern (bis 
Adresse 0x1F). Deshalb auch die Fehlermeldung. Da steht eindeutig 
"Operand 1 out of range: 0x2d", und Operand 1 des Befehls ist die 
Registeradresse, die anscheinend sehr wohl bekannt ist, da der Assembler 
den Bezeichner korrekt mit 0x2d ersetzt hat.
Gast #438491
Lesenswert?
• ▲
▼
Erstaunlich, dass ATMEL in der m644def.inc andere Registernamen benutzt 
als im Datenblatt (da heißen die Register SPSR, SPCR und SPDR, alles 
ohne die 0...). Die liegen aber alle noch im "normalen" I/O-Bereich, 
deshalb ist ein "lds" da nicht nötig. Da funktioniert auch noch "in" und 
"out".

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.