Das geht nämlich anders?
Wenn du meinst, dass man auch den SPDR auslesen muss, das habe ich probiert, und dennoch hat es nicht funktioniert.
Desweiteren wird dies im Code im Datenblatt ebenfalls nicht gemacht.
Außerdem ist das Problem nicht, dass die Flag nicht gelöscht wird, sondern dass sie nicht gesetzt wird.
Ich zitiere aus dem Datenblatt:
Will heißen, ich habe nur statt char uint8_t genommen, sonst ist außer dem printf() alles gleich.void SPI_MasterTransmit(char cData)
{
/* Start transmission /*
SPDR = cData;
/* Wait für transmission complete */
while/!(SPSR & (1<<SPIF)))
;
}
Bei der SPI_Init() setze ich NUR die Bits, deren Ein/Ausgänge benötigt werden, und nicht auch die anderen.
Sonst habe ich mich selbstverständlich schon an das C Code Example aus dem Datenblatt gehalten!!
Lesezeichen