MultiByte SPI PIC18F Slave-Master Communication

OP #4307559
Lesenswert?

Hallo Zusammen,

ich versuche gerade seit mehreren Stunden mehere bytes nacheinander  mit 
einem PIC18 in slave mode von dem andren PIC18 zu lesen.
Irgendwie klappt es nicht. Entweder bleibt der PIC hängen oder bekommt 
keine Daten

Was mir gelungen ist, nur ein Byte zu lesen, mir der Routine
-----------------------------
SPI slave
   #pragma interruptlow LowISR
    void LowISR(void)
    {
        TickUpdate();


        if(SC_SPI_INT_FLAG && SC_SPI_IE_FLAG )
        {

           data = SPIGet();

        }

    }


BYTE SPIGet()
{

    BYTE byte;

    byte = SC_SSPBUF;
    return byte;

}


-----------------------------

SPI Master:
void SPISendByteArray(BYTE *p_txBuf,  BYTE  txLen, BYTE *p_rxBuf, BYTE 
rxLen)
{
    static BYTE i, byteCount;

    PIC_CS_IO = 0;

    byteCount = (txLen >= rxLen)?txLen:rxLen;

    for(i=0; i< byteCount; i++)
    {

        SPIPut(*p_txBuf);
        p_txBuf++;
    }


    PIC_CS_IO = 1;
}


void SPIPut(BYTE byte)
{
    BYTE i;

    SC_SSPBUF = byte;
    WaitForDataByte();
    i= SC_SSPBUF;

}

#define WaitForDataByte()   {while(!SC_SPI_INT_FLAG); SC_SPI_INT_FLAG = 
0;}
-----------------------------


Weisst jemand,wie ich die ISR Routine evnt. SPIGet() anpassen muss, 
damit ich
auch ByteArray lesen kann?

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