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

Eine eigene Frage? Dieser Thread ist über 19 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.