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.