SPI-Problem beim senden Slave->master

Gast #793172
Lesenswert?
• ▲
▼
hallo leute,

ich experimentiere gerade mit spi auf einem ATMega16.
ich habe aus der codesammlung ein beispiel genommen um von einem master 
zu einem slave senden zu können.
jetzt versuche ich gerade vom slave zum master zu senden, aber ich komm 
nicht weiter, der slave sendet komische bytes die nicht mit dem zu tun 
haben das ich eigentlich senden will. im anhang hab ich das beispiel das 
ich grad verwende.
zu debug zwecken sende ich die byte die der master vom slave kriegt dann 
über den uart zum pc.
findet irgendwer einen fehler im code weswegen das nicht funzt?

danke im voraus

JR1984
Angehängte Dateien:
Gast #793232
Lesenswert?
• ▲
▼
1
void master_transmit (unsigned char data) {
2
   PORTB &= ~_BV(PB0);   //SS am Slave Low --> Beginn der bertragung
3
  SPDR = data;                //Schreiben der Daten
4
  while (!(SPSR & (1<<SPIF)));
5
  //PORTA = SPDR;
6
  //PORTB |= _BV(PB0);              //SS High --> Ende der �bertragung
7
}

warum kommentierst du das setzen des SS?
nach der warteschleife musst du das SPDR register lesen. da sind die 
empfangenen daten drin.
Gast #793243
Lesenswert?
• ▲
▼
die kommentare waren schon im bsp vorher drin.

es müsste doch egal sein ob ich nach der warteschleife die daten auslese 
oder in der SIGNAL (SIG_SPI) routine, habs aber jetzt so ausprobiert 
geht such nicht. ich will eigentlich 0x63(sollte 'c' sein) empfangen 
aber ich krieg 0x20 oder 0x21, und das folgt keinem schema.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren