Hallo Leute, Ich nutze einen PIC24FJ128GB204 als Master und möchte eine I2C- Verbindung zu einem FT200XD (I2C zu USB) aufbauen. Die Verbindung kann auch aufgebaut werden. aber nach einigen Malen "hängt" der Controller sich beim Senden der Adresse bzw. des Lese/schreib Bits auf. Manchmal fängt er sich wieder und manchmal nicht. Ich habe hier mal zwei Bilder, die den Vorgang zeigen. Im Bild "unvollstaendigeNachricht" seht ihr den Beginn der Nachricht und wie plötzlich beim letzten Bit SDA auf low bleibt und SCL auf high. Das zweite Bild (RestDerNachricht) zeigt wie 54ms später der Rest der Nachricht kommt. Auch, dass danach eine komplette Nachricht ohne Probleme gesendet wird. Ich muss dazu erwähnen, dass der Controller vor dem Fehler bereits über 100 Mal die Nachricht korrekt gesendet hat und das so eine Sittuation immer zu einem anderen Zeitpunkt kommt. Leider rettet er sich immer nur maximal ein mal aus so einem Zustand. Danach bleibt er komplett mit SDA low und SCL high stehen.
Ich habe für die Programmierung den MCC im MPLAB genutzt und vermute, dass dort das problem liegt, da ich nicht alles verstehe was dort programmiert wird. Ich teile mal den Code, den ich nutze hier:
Die Funktion, die ich aufrufe um den den Inhalt des USB speichers abzufragen.
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 |
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 |
|
59 |
|
60 |
|
61 |
|
62 |
|
Die Funktion, die immer wieder aufgerufen wird. (in dieser Frage ich erst Taster ab und dann den USB Speicher)
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 |
|
52 |
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 |
|
59 |
|
60 |
|
61 |
|
62 |
|
63 |
|
64 |
|
65 |
|
66 |
|
67 |
|
68 |
|
69 |
|
70 |
|
71 |
|
72 |
|
73 |
|
74 |
|
75 |
|
76 |
|
77 |
|
78 |
|
79 |
|
80 |
|
81 |
|
82 |
|
83 |
|
84 |
|
85 |
|
86 |
|
87 |
|
88 |
|
89 |
|
90 |
|
91 |
|
92 |
|
93 |
|
94 |
|
95 |
|
96 |
|
97 |
|
98 |
|
99 |
|
100 |
|
101 |
|
102 |
|
Vielleicht kann mir jemand einen Hinweis geben, wo ich noch suchen kann, oder wo der Fehler ist. Schon mal vielen Dank im Voraus. Grüße


