Hallo!! habe ein problem mit dem CAN- Bus des C167CR möchte daten von einem Teilnehmer zum anderen schicken, dafür habe ich 2 Phytec- Kitcon Boards, zwischen welchen ich über den CAN-Bus etwas senden möchte. hat schon jemand ein ähnliches projekt gemacht? bei mir funktioniert anscheinend der interrupt zum empfangen nicht! hat vl. jemand ein bsp programm welches einfach eine Test Nachricht über den CAN-Bus schickt und diese auf der anderen seite im Serial window anzeigt. Sitz schon seit 4 Tagen dabei und finde den fehler einfach nicht. Wär euch sehr dankbar, wenn mir jemand helfen könnte, bin schon total verzweifelt Grüße Alex
@Alex, hast Du schon mal die ApNote von Infineon angeschaut: "Interrupt Register behavior of the CAN module in our 16-bit Microcontrollers." Schon etwas betagt aber das ist der C167CR ja auch Weiss nicht ob dieser dynamische Link funktioniert? http://de.sitestat.com/infineon/infineon/s?infineon.pdf.Guest.Home.Products.Product_Categories.Microcontrollers.Application_Notes___16_bit_Microcontrollers.p2902410_Interupt_register_CAN.pdf&ns_type=pdf&ns_url=[http://www.infineon.com/upload/Document/AIM/Microcontroller/16bit/p2902410_Interupt_register_CAN.pdf Robert
Hallo Alex! Was sich bei C167-Controllern anbietet ist DAVE von Infineon. In dem Programm gibst Du an, welche Komponenten Du nutzen willst. DAVE erzeugt Dir dann ein C-Rahmenprogramm, in dem Du Deine Änderungen vornimmst. Lohnt sich bei CAN auf jeden Fall. Auch wenn Du nur nachsehen willst, was Du falsch machst. Geht denn nur der Interrupt nicht, oder ist es mehr? Grüße, Rainer
Hi habe die Konfiguration mittels DAVE durchgeführt, jedoch erreichen anscheinend die Nachrichten den anderen CAN- Teilnehmer nicht, ich denke, dass es am Empfangs Interrupt liegt. In DAve hab ich jedoch den CAN INT gesetzt. hab keine ahnung warum es nicht funktioniert! Kann ich euch unter umständen mal den Source schicken Grüß alex
Hallo, Wenn ich mich nicht irre, musst du nicht nur den Empfangs-INT aktivieren, sondern diesen auch noch einer der 8 Interrupt-Nodes des CAN-Moduls zuweisen. Zumindest beim XC16x ist es glaube ich so. mfg Reinhard
Hallo Alex, damit Du CAN-Messages empfangen kannst mußt Du im CAN-Controller eines er 15 Messagebuffer für den Empfang konfigurieren, das machst du indem Du in das Message Control Register (MCRn wobei n für eines der 15 Messagebuffer steht) in das 2 Bit Feld RXIE (Receive Interrupt Enable) eine 0b01 einträgst. In diesem Zusammenhang darf man auch nicht die CAN-Mask-Register vergessen, damit die CAN-Nachricht nicht schon von der Hardware weggefiltert wird und gar nicht erst zu den Messagebuffern kommt. Hier noch ein Beispiel aus dem aktuellen Manual des C167CR von der Infineon Seite www.infineon.com . Dort ist jetzt auch ein Beispiel für die Konfiguration eine Objektes enthalten, hier ein Auszug : MCR (Message object is idle, i.e. waiting for a frame to be received) 1514 1312 1110 98 76 54 32 10 01 01 01 01 10 01 10 01 RMTPND TXRQ MSGLST NEWDAT MSGVAL TXIE RXIE INTPND Ich gehe jetzt mal davon aus das deine Bitrate auf beiden Modulen korrekt sind. Denk auch an die Abschlußwiderstände die der CAN-Bus braucht. An jeden Ende ein Widerstand mit 120 Ohm. Mir einem funktioniert er auch mit kleinen Längen noch, aber ohne ist er nicht funktionsfähig. Viel Erfolg, vielleicht konnte ich helfen. Microman
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.