Hallo zusammen,
ich kämpfe aktuell mit dem CAN Peripheral auf einem Microchip Curiosity Ultra Board. Dort sitzt ein PIC32CZ8110CA80208 µC.
Grundlage: Ich habe versucht ein möglichst nacktes neues Projekt zu erstellen, ohne die unzähligen Bibliotheken und zigfach verschachtelten "#defines" aus Beispielen und Bibliotheken. Grundlegendes, wie die Register-Definitionen und Adressen habe ich aber aus Beispielprojekten übernommen. Programiert wird für mich erstmals in der MPLAB X IDE und in der Sprache C.
Nun zum Problem: Ich wollte im ersten Schritt eine CAN-Botschaft über einen TX-Buffer schicken. Nach vielem hin und her scheine ich nun die Clock- und Peripheraleinstellungen richtig zu haben, allerdings werden die Infos (CAN-ID, Daten, DLC, ...) meiner Testbotschaft welche im "MSG-RAM" abgelegt werden erst dann übernommen, wenn ich folgendes Prozedere durchführe:
- Einen Breakpoint setze und den µC einmal anhalten.
- Einmal im Reiter "Data Memory" der IDE den Speicherbereich vom MSG-RAM "anschauen"
- Den µC weiterlaufen lassen
Wenn ich dieses Prozedere nicht mache kommen meist Botschaften mit ID = 0x00, DLC = 0, ...
Jemand eine Idee woran sowas liegen kann?
Hier noch ein Code-Ausschnitt mit Kommentaren:
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 |
|
Da tatsächlich zuverlässig korrekte Botschaften ausgegeben werden, wenn ich das obere Prozedere durchführe, denke ich dass die Clock- und Peripheral-Einstellungen und Adressen wohl korrekt sein müssen. Wieso wird der Inhalt aber nicht sauber übernommen wenn ich das Prozedere nicht durchführe.
Die Projektsettings sollten wohl auf den Default-Einstellungen stehen, kenne mich aber wie gesagt mit der IDE nicht aus. Ist der erste versuch mit dem µC und der IDE.
Beste Grüße, frohe Festtage und schonmal besten Dank, Fabian