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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.