Master Bus Collision Detect bei I2C

Gast #4464925
Lesenswert?
• ▲
▼
Liebes Forum,

Ich bin gerade dabei eine I2C-Verbindung zu erstellen. Ich verwende den 
PIC24FJ128GB204 (=Master) und einen digitalen Temperatur-Sensor 
(=Slave).

Für den Anfang wollte ich einfach mal nur etwas an den Slave senden, um 
auf ein ACK abzuwarten.
Aber bereits hier habe ich ein Problem.
Sobald ich die Condition starten will (I2C1CONLbits.SEN = 1) tut sich 
leider nichts. Ich habe mein Projekt debuggt und habe festgestellt, dass 
sobald ich das Bit SEN setzen will, es nicht gesetzt wird. Jedoch wird 
stattdessen im Status-Register angezeigt, dass ein "Master Bus 
Collision" detektiert worden ist (Bit 10 im I2CXSTAT: I2C Status 
Register).

Ein möglicher Fehler könnte laut meinem Recherche-Ergebnis eine falsche 
Baud-Rate sein.
Zum Berechnen dieser habe ich folgende Annahmen gemacht:
FSCL = 400kHz
PGDx = 104ns
FCY = 16MHz

Daraus ergibt sich nach der Formel (siehe Anhang) eine Baudrate von: 17 
(in Hex: 11)

Weiß jemand von euch, was ich falsch mache?

Danke für eure Hilfe!

Ein Ausschnitt meines Codes:

1
#define FOSC    (32000000ULL)
2
#define FCY (FOSC/2)
3

4
int main(void)
5
{
6
    
7

8
    TRISBbits.TRISB8 = 0; //SCL1 is output
9
    TRISBbits.TRISB9 = 0; // SDA1 is output
10

11
    I2C1CONLbits.I2CEN = 0; //disable I2C1 module
12

13
    I2C1BRG = 0x0011;      //set baudrate
14

15
    I2C1CONLbits.DISSLW = 0;  // Disable slew rate control
16
    IFS1bits.MI2C1IF = 0;   // Clear Interrupt
17

18
    I2C1CONLbits.I2CEN = 1;  // Enable I2C Mode
19

20
    I2C1CONLbits.SEN = 1;        //start condition
21

22

23
    return (EXIT_SUCCESS);
24
}
Angehängte Dateien:

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.