Gast
#4464925
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 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
