Problem Atmel Studio und ATMega324P - SPI

OP #3949959
Lesenswert?
• ▲
▼
Hallo, ich habe heute ein Programm zur Ansteuerung eines Displays über 
SPI getestet. Der Zielprozessor ist ein ATMega324P. Beim Compilieren im 
AtmelStudio(6.1.2730 SP2) bekomme ich folgende Fehlermeldungen:

'SPCR' was not declared in this scope
'SPE' was not declared in this scope

so geht es weiter für alle SPI spezifischen Ausdrücke (MSTR, SPR1, SPR0 
etc.)

Das Eigenartige: Wenn ich die Zielhardware unter "Device" auf einen 
ATMega644P (also gleiche Familie nur mehr Speicher) ändere läuft das 
Compilieren fehlerfrei. Woran kann das liegen?

Danke

Hier noch die Fehlermeldungen:

------ Build started: Project: Display_Test, Configuration: Debug AVR 
------
Build started.
Project "Display_Test.cppproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; 
('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\Program Files (x86)\Atmel\Atmel Studio 
6.1\Vs\Compiler.targets" from project 
"C:\Users\Mackie-2011\Dropbox\Messtechnik\GPS_Counter\Display_Test\Displ 
ay_Test\Display_Test.cppproj"  (target "Build" depends on it):
  Task "RunCompilerTask"
    C:\Program Files (x86)\Atmel\Atmel Studio 6.1\shellUtils\make.exe 
all
    Building file: .././Display_Test.cpp
    Invoking: AVR8/GNU C Compiler : 3.4.2
    "C:\Program Files (x86)\Atmel\Atmel Toolchain\AVR8 
GCC\Native\3.4.2.1002\avr8-gnu-toolchain\bin\avr-g++.exe" 
-funsigned-char -funsigned-bitfields -DDEBUG  -O1 -ffunction-sections 
-fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega324p 
-c -MD -MP -MF "Display_Test.d" -MT"Display_Test.d" -MT"Display_Test.o" 
-o "Display_Test.o" ".././Display_Test.cpp"
    .././Display_Test.cpp: In function 'void InitSPI()':
C:\Users\Mackie-2011\Dropbox\Messtechnik\GPS_Counter\Display_Test\Displa 
y_Test\Display_Test.cpp(97,1):  'SPCR' was not declared in this scope
C:\Users\Mackie-2011\Dropbox\Messtechnik\GPS_Counter\Display_Test\Displa 
y_Test\Display_Test.cpp(97,13):  'SPE' was not declared in this scope
Gast #3950079
Lesenswert?
• ▲
▼
>Evtl. kann die Makefile nicht mit dem 324p umgehen?

Doch, kann es. Die Bezeichnungen für SPI sind beim 324p auch
bei meinem Compiler in den Headerdateien anders.
Eben mit der '0' am Ende. Warum das so ist?
Gast #3950095
Lesenswert?
• ▲
▼
Hi

>Doch, kann es. Die Bezeichnungen für SPI sind beim 324p auch
>bei meinem Compiler in den Headerdateien anders.
>Eben mit der '0' am Ende. Warum das so ist?

Der ATMega324P und der ATMega644P haben/hatten das gleich Datenblatt. 
Und da gab/gibt es nichts mit einer Null in den Registerbezeichnungen.

MfG Spess
#3950343
Lesenswert?
• ▲
▼
Das Ganze klingt natürlich völlig hirnrissig. Ist aber tatsächlich so.

Normalerweise wird die typspezifische iom.h eingebunden und von dieser 
die allgemeingültige iomxx4.h.

Das ist aber nicht immer so. Bei mir wird von der iom324pa.h die 
iomxx4.h nicht eingebunden, sondern alles ist in der iom324pa.h 
definiert. Und zwar so, wie es vom TO beschrieben wird.
Beim 644PA wird die iomxx4.h ebenfalls nicht eingebunden, dafür sind 
aber die Definitionen in der iom644pa.h richtig.
Kompiliere ich für 324A oder 324P wird wieder die iomxx4.h eingebunden 
und alles ist gut.

Da ist irgendwie der Wurm drin. Aber richtig.

Um nicht ständig hin und her probieren zu müssen, könnte man eine 
Headerdatei als Würgaround mit einbinden:
1
#ifndef SPCR
2
  #define SPCR SPCR0
3
#endif
4

5
#ifndef SPDR
6
  #define SPDR SPDR0
7
#endif

sowas geht mit Copy & Paste recht fix.

mfg.

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.