SPI-Schnittstelle von PIC16F1825 funktioniert nicht

OP #3117827
Lesenswert?

Hallo Forum,

ich habe ein Programm (MPLABX, PICKIT3) für den PIC16F1823 geschrieben, 
das ich jetzt aufgrund des RAMs auf den PIC16F1825 portieren wollte. Mit 
dem 1823 funktioniert alles bestens, die ID des RFM70 wird erfolgreich 
ausgelesen. Wenn ich jedoch dasselbe Programm auf dem 1825 laufen lasse, 
erhalte ich nur (per UART/RS232) Nullen. Ich dachte, der 1825 sei 
einfach nur der große Bruder vom 2823 mit mehr RAM, etc.

INIT:
1
void vInitSsp(void) //Buffer: SSP1BUF
2
{
3
    INTCONbits.INTE             = 1;    //Enable Interrupt pin
4
    PIE1bits.SSP1IE             = 0;    //Enables the MSSP interrupt to determine when the transmission/reception has completed.
5

6
    OPTION_REGbits.INTEDG       = 0;    //Interrupt on falling edge of RB0/INT pin (RA2)
7

8
    CSN                         = 1;    //Chip select active
9

10
    SSP1CON1bits.CKP            = 0;    //Wellenform Typ 3
11
    SSP1CON1bits.SSPEN          = 1;    //Enable SSP-Transmitting
12
    SSP1CON1bits.SSPM           = 0000; // SPI Master mode, clock = FOSC/4
13
    SSP1CON1bits.WCOL           = 0;    //Clear write collusion detection bit
14

15
    SSP1STATbits.CKE            = 1;    //Wellenform Typ 3, read and write at rising edge
16
    SSP1STATbits.SMP            = 0;    //Input data sampled at middle of data output time
17

18
    BF                          = 0;    //Clear buffer full flag, Receive complete
19
    PIR1bits.SSP1IF             = 0;    //Clear synchronous Serial Port (MSSP) Interrupt Flag bit
20

21
    APFCON0bits.SDOSEL           = 0;    //SDO on pin RC2, not RA4
22
    APFCON0bits.SSSEL            = 0;    //SS on pin RC3, not RA3
23
}
Aufruf:
1
UINT8 SPI_RW(UINT8 value)                                    
2
{                                                           
3
    SSP1BUF = value;
4
    while (!BF);
5
    value = SSP1BUF;
6
    return value;
7
}

Kennt sich jemand aus, wo sich der PIC16F1825 und der 1823 bei der 
Initialisierung unterscheiden? Uart stimmt, ein U kommt erfolgreich an.

Danke im Voraus,
Frederik

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