Forum: Mikrocontroller und Digitale Elektronik XC886/888


von Leonhardt (Gast)


Lesenswert?

Guten Morgen,

ich möchte mit dem Infineon-Mikrocontroller XC886/888 eine CAN BUS 
Verbindung realisieren. Hat jemand schon einige Erfahrungen mit dem 
Mikrocontroller gemacht? Ist es ein sehr schwierig die CAN Schnittstelle 
zu konfigurieren?

von Carsten S. (carsten)


Lesenswert?

Hallo Leonhardt,
das ist alles relativ einfach. Sehr vieles wird vom Konfigurationstool 
DAvE abgenommen.

von Leonhardt (Gast)


Lesenswert?

Ist das Konfigurationstool kostenlos erhältlich?
Ist das nicht der neue Keil Compiler?
Kann man das Tool downloaden?

von Carsten S. (carsten)


Lesenswert?

DAvE ist kostenlos.
http://www.infineon.com/cgi-bin/ifx/portal/ep/programView.do?channelId=-65525&programId=35134&programPage=%2Fep%2Fprogram%2Finformation.jsp&pageTypeId=17099

Du brauchst dann noch das DIP-File für den XC886.
Als Compiler wird im Moment nur Keil und SDCC unterstützt. Ich würde dir 
Keil empfehlen (die freie 2k Version müsste zu Beginn reichen)

Es gibt auch noch ein Beispiel von Infineon unter:
http://www.infineon.com/cgi-bin/ifx/portal/ep/programView.do?channelId=-81334&programId=48184&programPage=%2Fep%2Fprogram%2Fdocument.jsp&pageTypeId=17099

von Leonhardt (Gast)


Lesenswert?

Achso das heisst ich verwende dafür nur das DAvE Konfigurationstool. Und 
damit kann ich ja den Compiler auswählen. In diesem Fall den Keil 
Compiler. Programmieren tut ich dann mit einem Editor von DAvE. Ist das 
richtig so?

von Carsten S. (carsten)


Lesenswert?

Nein,
DAvE hat keinen Editor. Du musst aber zu Anfang auswählen für welchen 
Compiler er ein Projekt aufsetzt.

Das ganze läuft in etwa so ab:
1. Mit DAvE ein Projekt erzeugen
2. Initilaisierung des µC (Ports auswählen, UART einrichten, ADC 
einrichten
   etc.) in DAvE und Projekt erzeugen
3. Den von DAvE erzeugten Code im Compiler aufmachen und weiter 
bearbeiten
   (Der µC ist bis dahin nur initialisiert, macht aber nichts - main() 
ist
   leer)
   ACHTUNG beim editieren: Schreibe deinen Code nur zwischen die
   Kommentarzeilen
   //User Code Beginns und
   //User Code Ends.
   Wenn du dies beherzigst kannst du dein Programm auch noch 
nachträglich in
   DAvE uminitialisieren (z.B. Baudraten ändern) ohne dass dein eigener 
Code
   verloren geht.
4. Programm im Compiler übersetzen und Debuggen

von Leonhardt (Gast)


Lesenswert?

Danke für die schnelle Hilfe!
Ok so wie es aussieht, ist das wohl nicht so sehr kompliziert.
Das Konfigurationstool nimmt ja einiges an Arbeit ab.
Wenn ich zum Beispiel den CAN Teil benutzen will, dann muss man mit dem 
Konfigurationstool die Einstellungen dort für den CAN vornehmen.
Dannach wird ein CODE Rumpf erzeugt. Dort kann man dann seinen 
gewünschten Code platzieren.

von Carsten S. (carsten)


Lesenswert?

Genau,
in jedem Modul-Teil in DAvE gibt es einen Reiter functions mit der 
Initfunktion (z.B. IO_vInit, ADC_vIinit, MultiCAN_vInit, etc.)
Mit Aktivierung diese Punktes wird für das Modul eine C-Datei (z.B. 
IO.c, ADC.c) mit der entsprechenden Initialisierung und ausgewählten 
Funktionen erzeugt

von Leonhardt (Gast)


Lesenswert?

Hallo Carsten Steiner, ja hast du schon mal was mit dem Mikrocontroller 
gemacht?
Wie sieht denn zum Beispiel zu eine C-Code für den CAN BUS aus?

von Carsten S. (carsten)


Lesenswert?

Habe sehr viel mit den XC800 von Infineon zu tun.
Auf der Infineon-Homepage befindet sich ein Beispiel für den 
LoopBack-Mode.

http://www.infineon.com/cgi-bin/ifx/portal/ep/programView.do?channelId=-81334&programId=48184&programPage=%2Fep%2Fprogram%2Fdocument.jsp&pageTypeId=17099
runterscrollen bis Application Example.

Komm erst einmal mit DAvE, Keil und dem Beispiel klar, dann kann man 
noch weitere Demos angehen.

von Daniel Schwalm (Gast)


Lesenswert?

Hallo!

Ich schlage mich zur Zeit auch mit XC886 und CAN rum. Ich habe mir mit 
DAVE die Konfiguration und die CAN-Funktionen erzeugen lassen und 
folgendes in meine main-Funktion eingefügt:

un_32bit canTestObject;

canTestObject.ubDB[0] = 0x77;
canTestObject.ubDB[1] = 0x76;
canTestObject.ubDB[2] = 0x75;
canTestObject.ubDB[3] = 0x74;

CAN_vLoadData(0x00, &canTestObject.ulVal);
CAN_vSetMSGVAL(0x00);
CAN_vTransmit(0x00);

Leider funktioniert der Code dann nur im Software-Simulator von Keil 
microVision (im Peripherals -> MultiCAN -> CAN Communication 0 Fenster 
erscheint die gesendete CAN Message) und nicht auf meiner Hardware (Wenn 
ich an den eingestellten Output-Pins CAN_RXD und CAN_TXD mit einem Oszi 
messe, passiert nichts).

Hat jemand eine Idee, wo ran das liegen könnte oder ähnliche Probleme 
gehabt? Oder hat jemand ein Beispiel-Programm, dass über die Pins P1_6 
und P1_7 eine CAN-Message versendet? Wenn ja bitte mal an 
daniel@richardt-elektrotechnik.com schicken. Danke!

Das MultiCAn Getting Started von Infineon hab ich mir auch schon 
angeschaut, aber das hat mich auch nicht weiter gebracht.

Daniel

von Carsten S. (carsten)


Lesenswert?

Alle meine Beispiel sind für P1.0 und P1.1.
Hilf dir das weiter? Müsstest ja nur im Dave kurz die Pinbelegung 
umändern

von Daniel Schwalm (Gast)


Lesenswert?

Ja, das würde mir sicher weiterhelfen. Wäre super wenn Du mir Deine 
Beispiele mal schicken könntest (daniel@richardt-elektrotechnik.com).

Schon mal vielen Dank :)

Daniel

von HSCH (Gast)


Lesenswert?

Hi Daniel Schwalm,

hast du deinen CAN Bus zu laufen bekommen? Wenn ja ich brächte dringend 
Unterstützung. Könntest du deinen Beispiel Code hierein posten?

von HSCH (Gast)


Lesenswert?

Ich verwende die Ausgänge P1.3 und P1.4 (SUBD9 Stecker)
Ich schaffe es nicht nur mal eine Nachricht an den CAN Dongle zusenden?
Auf beiden Seiten habe ich jeweils 500kBit/s eingestellt.
Kann mir hier noch jemand einige Tipps geben?

von HSCH (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe mein Projekt an den Dateianhang angehängt. Vielleicht sieht da 
jemand noch einen Fehler.

von HSCH (Gast)


Lesenswert?

Brauche dringend Unterstützung!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.