Forum: Mikrocontroller und Digitale Elektronik SPI-Problem beim senden Slave->master


von JR1984 (Gast)


Angehängte Dateien:

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

von Michael H* (Gast)


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.

von JR1984 (Gast)


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.

von Jörg R. (jr1984)


Lesenswert?

ich habe jetzt weiter getestet, und bin draufgekommen, dass es jetzt 
sporadisch funktioniert, aber nur wenn ich den programmer angesteckt 
habe, der anscheinend irgendwie mit miso und mosi und ss verbunden ist.

von Jörg R. (jr1984)


Lesenswert?

kann es sein dass man beim master den pullup für miso setzen muss?

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.