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

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.