Forum: Mikrocontroller und Digitale Elektronik SPI Register nicht definiert beim ATtiny85


von Jürgen (Gast)


Lesenswert?

Hallo,

Versuche an meinem ATTiny85 nen Max2771 via SPI zum anzusteuern. Aber 
irgendwie kann den Compiler die SPI Register nicht auflösen.
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#include <stdio.h>
4
#include <stdlib.h>
5
#include <stddef.h>
6
#define F_CPU 1000000
7
#include <util/delay.h>
8
9
void SPI_MasterInit(void)
10
{
11
  /* Set MOSI and SCK and SS output, all others input */
12
  DDRB = (1 << DDB0) | (1 << DDB2) | (1 << DDB3);
13
  
14
  /* Enable SPI, Master,  */
15
  SPCR = (1 << SPE) | (1 << MSTR);
16
}

Bekomme dann:
1
Error  1  'SPCR' undeclared (first use in this function)

Werde wohl nur irgendwas dummes übersehen haben oder?

Vielen Dank

von Peter II (Gast)


Lesenswert?

Jürgen schrieb:
> Werde wohl nur irgendwas dummes übersehen haben oder?

schau doch einfach mal in die Doku, dort gibt es weder SPCR, noch SPE 
noch MSTR

Etweder gibt es komplett anders oder gar nicht.

von Cyblord -. (cyblord)


Lesenswert?

Der Tiny85 hat einfach kein HW-SPI, und hat somit auch diese Register 
nicht.

von cppler (Gast)


Lesenswert?

Der tiny85 hat doch USI, schau mal ins Datenblatt welche Bits da bei SPI 
gesetzt werden müssen.

von Jürgen (Gast)


Lesenswert?

Hallo,

danke!! ich mach das jetzt mit USI.

Habe aber noch eine Frage und zwar bekomme ich bei meiner Send Funktion
1
uint16_t SPI_SendByte(uint16_t data) {
2
...
3
}

Den Fehler:
1
Error  5  conflicting types for 'SPI_SendByte'

von Cyblord -. (cyblord)


Lesenswert?

Verschiedene Funktionsköpfe in .c und .h Datei?

von Timmo H. (masterfx)


Lesenswert?

Wie sieht denn dein Prototyp aus? Wahrscheinlich hast du dort einen 
anderen Datentyp als Rückgabewert angegeben

von holger (Gast)


Lesenswert?

Error  5  conflicting types for 'SPI_SendByte'

Entweder du setzt die Funktion vor deren erstem Aufruf
in den Quellcode oder du legst einen Prototypen an der
die Funktion und deren Parameter bekannt macht. Dann sollte
der Fehler weg sein.

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.