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!