Forum: Mikrocontroller und Digitale Elektronik SPI-Schnittstelle von PIC16F1825 funktioniert nicht


von Frederik P. (frederikp)


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

von B. S. (bestucki)


Lesenswert?

Benutzt du das richtige Include-File für den neuen Controller? Es muss 
nicht sein, dass die Register der beiden Controller physikalisch auf der 
gleichen Adresse liegen. Ansonsten mal die Datenblätter und Erratas der 
beiden Controller vergleichen.

von Frederik P. (frederikp)


Lesenswert?

Ich benutze die htc.h mit MPLABX-µC-Einstellung...

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.