Forum: Compiler & IDEs Kompilierungsfehler bei SPI und Attiny2313


von Alexander (Gast)


Lesenswert?

Hallo,
zur Zeit versuche ich ein paar Sache mit meinem Attiny2313 und habe mir 
nun das Beispiel von Atmel für den SPI angeschaut und es in mein 
Programm zur Ansteuerung des TLC5940 eingebaut. Leider klappt das ganze 
nicht so.

Ich erhalte als Fehlermeldung folgendes:
1
 Invoking: AVR Compiler
2
avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=attiny2313 -DF_CPU=1000000UL -MMD -MP -MF"tlc5940.d" -MT"tlc5940.d" -c -o "tlc5940.o" "../tlc5940.c"
3
../tlc5940.c: In Funktion »init_tlc_con«:
4
../tlc5940.c:23:2: Fehler: »SPCR« nicht deklariert (erste Benutzung in dieser Funktion)
5
../tlc5940.c:23:2: Anmerkung: jeder nicht deklarierte Bezeichner wird nur einmal für jede Funktion, in der er vorkommt, gemeldet
6
../tlc5940.c:23:15: Fehler: »SPE« nicht deklariert (erste Benutzung in dieser Funktion)
7
../tlc5940.c:23:28: Fehler: »MSTR« nicht deklariert (erste Benutzung in dieser Funktion)
8
../tlc5940.c:23:42: Fehler: »SPR0« nicht deklariert (erste Benutzung in dieser Funktion)
9
../tlc5940.c: In Funktion »send_to_device«:
10
../tlc5940.c:48:3: Fehler: »SPDR« nicht deklariert (erste Benutzung in dieser Funktion)
11
../tlc5940.c:50:12: Fehler: »SPSR« nicht deklariert (erste Benutzung in dieser Funktion)
12
../tlc5940.c:50:25: Fehler: »SPIF« nicht deklariert (erste Benutzung in dieser Funktion)
13
make: *** [tlc5940.o] Error 1

Mit #include habe ich die avr/io.h und die util/delay.h eingebunden. Ich 
habe jetzt schon gegoogled und auch hier gesucht und habe immer dieses 
Beispiel gefunden, indem SPCR und Co. genutzt worden sind.

Habe ich irgendwas vergessen mit #include einzufügen (in den Beispielen 
die ich bisher gesehen habe (allerdings zu ATmega8/16), war auch nur 
avr/io.h eingebunden)?

von Troll (Gast)


Lesenswert?

Deine Sourcen fehlen

von Alexander (Gast)


Angehängte Dateien:

Lesenswert?

Anbei die Sourcen, die hatte ich ganz vergessen.

von Coder (Gast)


Lesenswert?

Bin kein AVR Experte aber hat der Attiny eine SPI-Schnittstelle?

von Alexander (Gast)


Lesenswert?

Ja hat er, jedenfalls gehe ich von aus, wenn es ein Assembler Beispiel 
im Datenblatt gibt. Explizit auf der ersten Seite wie beim Atmega48-20PU 
wird der allerdings nicht aufgeführt.

Link zum Datenblatt: http://www.atmel.com/images/doc2543.pdf ab Seite139

von Alexander (Gast)


Lesenswert?

Hallo Coder,
ich hab meinen Code gerade mal für einen Atmega48 (den hab ich hier auch 
noch rumliegen) kompiliert. Wie es scheint hast du Recht, der Attiny 
besitzt kein SPI.
Vielen Dank für die Hilfe

von Coder (Gast)


Lesenswert?

Dann verifiziere das :-) Wenn ich Dich schon so Frage hast einen Wink 
mit dem Zaunenpfahl bekommen....schau dir Die Nomenklatur der Register 
mal an.

von Coder (Gast)


Lesenswert?

Stichwort USI. Im übrigen wenn der ATtiny eine ISP-Schnittstelle hat er 
eine SPI-Schnittstelle. Nur kann Du diese nicht programmieren. 
Klugsch***er-Modus aus...

von Oliver (Gast)


Lesenswert?

Alexander schrieb:
> Link zum Datenblatt: http://www.atmel.com/images/doc2543.pdf ab Seite139

Datenblätter verlinken bringt nix, Datenblätter lesen dagegen viel.

Dein Tiny hat kein SPI, und damit auch keins der Register aus deinem 
o.a. Code.

Oliver

von temp (Gast)


Lesenswert?

Oliver schrieb:
> Datenblätter verlinken bringt nix, Datenblätter lesen dagegen viel.

Richtig. Und wenn man das macht, dann stellt man fest, dass

Oliver schrieb:
> Dein Tiny hat kein SPI

totaler Blödsinn ist, natürlich kann der 2313 SPI.

von Oliver (Gast)


Lesenswert?

temp schrieb:
> totaler Blödsinn ist, natürlich kann der 2313 SPI.

Natürlich kann der SPI, mit der USI. Und mit 3 Minuten Datenblatt lesen 
hätte der TO das auch rausgefunden...

Oliver

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.