Slave SPI mehrere Byte empfangen

OP #1719900
Lesenswert?
• ▲
▼
Hi,

ich sende von meinem SPI-Master zwei Byte (das geht auch, mein 
Oszilloskop bestätigt das).
Die Byte werden gesendet, ohne daß die SS-Leitung zwischendurch auf HIGH 
leget wird.
Die Slave-Empfangsroutine sieht wie folgt aus:
1
ISR (SPI_STC_vect)
2
{
3
  data[i] = SPDR;
4
  i++;
5
}

in der Slave-Main werden sollen die zwei Byte per UART ausgegeben 
werden. Alla:
1
  while(1)
2
  {
3
    if(data[1] != 0)
4
      {
5
        i=0;
6
        uart_puts(itoa(data[0],buffer,10));
7
        uart_puts(itoa(data[1],buffer,10));
8
        
9
        data[0]=0;
10
        data[1]=0;
11
      }
12
  }

Nur wird nur das erste Byte ausgegeben und auch nur bei jedem zweiten 
Senden von Master...
Ich find den fehler nicht! Hilfe!

data und i sind wie folgt deklariert:
1
volatile unsigned char data[10], i=0;

Achja, Ich verwende nen ATmega8 und AVR-gcc...

Grüße!
#1720024
Lesenswert?
• ▲
▼
A. K. schrieb:
> Wobei du zwischen den Bytes ein bischen Zeit lassen solltest, da ein AVR
> beim SPI nicht puffert.

Falsch. Zitat aus dem Datenblatt: "The system is single buffered in the 
transmit direction and double buffered in the receive direction." Beim 
Senden musst du warten, bis das vorherige Byte vollständig gesendet 
wurde, bevor du etwas neues in SPDR schreiben kannst, beim Empfangen 
musst du SPDR auslesen, bevor das zweite Byte vollständig empfangen 
wurde.

Andreas

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.