Forum: Mikrocontroller und Digitale Elektronik MultiByte SPI PIC18F Slave-Master Communication


von Alex M. (alex_m83)


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?

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.