Programm hängt nach SPI Send

OP #4153840
Lesenswert?
• ▲
▼
Hallo Zusammen,

ich habe gerade ein Problem mit SPI Module.
Ich habe zwei PICs (SPI Master + SPI Slave).

Sobald ich ein Byte per SPI verschicke, hängt das ganze Programm von PIC 
Master SPI.
Interessanterweise PIC Slave SPI bekommt das richtige Byte und läuft 
weiter.


Weißt jemand, was in der SPI Kommunikation falsch läuft ?

Hier isr der Code:
Master:
SC_SCK_TRIS = 0;
SC_SDO_TRIS = 0;
SC_SDI_TRIS  = 1;

SC_SPISTATbits.CKE = 1;
SC_SPISTATbits.SMP = 0;
SSP1CON1bits.CKP = 1;
// F(spi)= Fsys/16;
SSP1CON1bits.SSPM = 1;
SSP1CON1bits.SSPEN = 1;
//Enable Interrupts
RCONbits.IPEN = 1;        // Enable interrupt priorities
INTCONbits.GIEH = 1;
INTCONbits.GIEL = 1;
INTCONbits.PEIE = 1;

IPR1bits.SSP1IP = 0;
SC_SPI_IE_FLAG = 1;
SC_SPI_INT_FLAG = 0;

// send
void SPIPut(BYTE byte)
{
    BYTE i;
    SC_SSPBUF = byte;
    while(!SC_SPI_INT_FLAG);
  SC_SPI_INT_FLAG = 0;
    i= SC_SSPBUF;

}




Slave:
SC_SCK_TRIS = 1;
SC_SDI_TRIS  = 1;
SC_SDO_TRIS = 0;
PIC_CS_TRIS  = 1;

SC_SPISTATbits.CKE = 1;
//SMP must be cleared when SPI is used in Slave mode
SC_SPISTATbits.SMP = 0;
SSP1CON1bits.CKP = 1;
// F(spi)= Fsys/16;
SSP1CON1bits.SSPM = 4;

IPR1bits.SSP1IP = 0;
SC_SPI_IE_FLAG = 1;
SC_SPI_INT_FLAG = 0;

SSP1CON1bits.SSPEN = 1;
RCONbits.IPEN = 1;        // Enable interrupt priorities
INTCONbits.GIEH = 1;
INTCONbits.GIEL = 1;


// read
BYTE SPIGet()
{

    BYTE byte;

    byte = SC_SSPBUF;
    while(!SC_SPI_INT_FLAG);
  SC_SPI_INT_FLAG = 0;

    return byte;
}




Danke & Grüße
Alex

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.