Forum
Atmega als SPI Slave (Elektronik)
Hallo, ich möchte mit einem Atmega als SPI Slave Daten von einem anderen
IC empfangen, der als Master läuft. Den Atmega habe ich wie folgt
konfiguriert:
SPI.c
#include
#include
#include "uart.h"
unsigned char status;
void spi_slave_init (void) {
DDRB |= (1<
SPCR = (1<
}
char spi_slave_receive(void)
{uint8_t dummy;
/* Wait for reception complete */
while(!(SPSR & (1<
/* Return Data Register */
return SPDR;
}
Allerdings bin ich beim Empfang nicht sicher, wie das richtig gemacht
wird.
SETREG_DATA // grün
SETRXTX // blau
SPDR=0x00;
byte2=spi_slave_receive();
if(byte2==0x13) uart_puts_P("byte2"); // Inhalt soll testweise per UART ausgegeben werden (code von Peter Fleury)
else uart_puts_P("xxx");
_delay_ms(20);
CLRREG_DATA
CLRRXTX
Auf dem Bild im Anhang ist zu sehen, wie der Master-IC bei Aktivierung
der beiden Ports (grün & blau) den Clock wieder aktiviert und dann 24
Bit sendet. Ein SS vom Master aus gibt es nicht, deshalb habe ich den
Atmega SS dauerhaft auf GND gelegt.

Gesamter Thread:
