Re: Probleme mit dem CAN-Bus Kategorie: Verschiedenes (von André H. - 17.04.2004 15:04) | ||
Als Antwort auf Probleme mit dem CAN-Bus von DieterKalkofen - 15.04.2004 14:42 | ||
| ||
Hallo Dieter, Beim Thema CAN-Bus kann ich Dir leider nicht viel helfen. Jedoch, welche Version von can.c2 nutzt Du ? Es gab vor ca. einem Jahr beim Wechsel des C164CI zu einem anderem Derivat ein Problem mit dem CAN-Bus, da sich einige Registereinstellungen hinzukamen. Es soll dann zu ähnlichen Problemen gekommen sein. Mit der neuesten Version von can.c2 sollte dies aber gelöst sein. Wenn Du schon die neueste Version von can.c2 nutzt, kann ich Dir leider keine weiteren Tips geben, da ich mich mit dem CAN-Bus nicht beschäftige. Jedoch kann man von dem beschriebenen Verhalten auch schlie�en, da� es zu einer �berlastung durch zu viele Interrupts kommen könnte. Warum es allerdings funktioniert, wenn das weitere CAN-Modul angesteckt ist, erklärt dies nicht. Vielleicht kommt das Problem auch von woanders. Wie sieht bei Dir die Beschaltung der Interruptsensiblen Ports aus ? (P1H.0 bis .3) Haben diese, falls sie nicht genutzt werden, Pull-Widerstände ? Bzw. mit was für einer Platine nutzt Du die CC2 ? Zu Deinem Programm: Der Init() des CAN-Busses sollte nur einmal bei Systemstart ausgeführt werden. Also nach dem Schema: thread main { // Initialisierungen loop { //Programm } } Auch das Warten auf ready() sollte besser so gemacht werden: wait can.ready(x); Oder wenn schon in einer Schleife: while not can.ready(x); { //... yield; } MfG André H. > Hallo Ich habe Probleme mit dem CAN-Bus > Die C-Controlunit wid in einem Can Netz betrieben > C-Controlunit - PC CAN interface - Frenzen und Berg CAN-Canmodul > Das System läft > wird nur die C-Unit und das PC Interface betrieben (Abschlusswiederstand umgesteckt) > passiert folgendes die Unit wird wird Träge stellt die Sendungen auf den Bus in > will man Die Unit neu Programmieren kommt die Fehlermeldung Vorgang mus wiederholt werden > Zieht man den Can Busstecker ab kann die Unit neu Programmirt werden > und erst wenn das Frenzen und Berg Modul wieder im C-BUS ist läuft das System > trennt man das Modul wieder vom C-Bus funktioniert das System weiter > Erst nach ein par Starts blockiert die Unit wieder > > //CAN-Bustiming 500 kB/s > can.init(4,0x07FF,0x0000); > > do > { > R=1+can.ready(1); > } > while R; > can.send(1,200,data,8); > > // CAN Bus ID=100 DTR 2 Kanal 2 > X=ports.getfreq(0); // V-Signal > candata[0]=X; > X=ports.getfreq(1); // RPM-Signal X/60*Z 700 HZ 7000 1*min > candata[1]=X/10; // Messwert/10 0-70 0-7000 1/min > do > { > R=1+can.ready(2); > } > while R; > can.send(2,100,candata,2); > > // CAN Bus ID 400 DTR 1 Kanal 3 > candata[0]=Viedeounit; > candata[1]=255; > do > { > R=1+can.ready(3); > } > while R; > can.send(3,400, candata,2); > STA=can.error(); > > > Leigt in meinem Programm ein Fehler vor ? > Antworten bitte nur ins Forum! Fragen per EMail auf Forum-Postings werden nicht beantwortet! Das macht meine Heizung gerade | ||
Antwort schreiben Antworten: |