ATmega Registerbezeichnungen

Gast #6599922
Lesenswert?

Nabend!
Bin gerade dabei, mit einem ATmega324 über SPI zu kommunizieren. Laut 
Datenblatt ist dazu u.A. das SPE-Bit im Register SPCR zu setzen. Soweit 
so gut.

Nun bekomme ich im MicrochipStudio den Fehler "'SPCR' undeclared (first 
use in this function)" in der entsprechenden Zeile:
1
SPCR = (1<<SPIE) | (1<<SPE) | (1<<MSTR) | (1<<SPR0) | (1 << SPR1);

Wenn ich jedoch den Register-/Bit-Bezeichnern eine Null anhänge (d.h. 
von "SPCR" zu "SPCR0" ändere), klappt es problemlos:
1
SPCR0 = (1<<SPIE0) | (1<<SPE0) | (1<<MSTR0) | (1<<SPR00) | (1 << SPR10);

Im Datenblatt steht dazu kein Wort, die Zeichenkette "SPCR0" ist sogar 
im ganzen Datenblatt nicht zu finden.
Daher meine Frage: Warum weichen die Bezeichner vom Datenblatt ab und wo 
finde ich die korrekten Bezeichner?
Gast #6599927
Lesenswert?

Johnny W. schrieb:

> Im Datenblatt steht dazu kein Wort

Doch.

> die Zeichenkette "SPCR0" ist sogar
> im ganzen Datenblatt nicht zu finden.

Das stimmt.

> Daher meine Frage: Warum weichen die Bezeichner vom Datenblatt ab

Tun sie nicht wirklich.

> und wo
> finde ich die korrekten Bezeichner?

Durch Lesen dessen, was da steht und minimale geistige Transferleistung 
auf dem Level eines Grundschülers...
#6599946
Lesenswert?

In dem Datenblatt steht dazu sicherlich SPCRn oder so. Und genau so ist 
es bei den Bit Bezeichnungen - SPIEn; SPEn; MSTRn; SPRn0; SPRn1 usw.

Da es inzwischen mehrere Instanzen der Schnittstellen in manchen AVR's 
geben kann muss man doch nicht für jede Instanz das gleiche nochmal 
schreiben. Zum Beispiel für den SPI0 gilt ja das gleiche wie für einen 
SPI1 oder SPI2. Das "n" steht einfach nur für die Instanz in deinem AVR.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren