Forum: Mikrocontroller und Digitale Elektronik CAN-Bus Status auslesen geht nicht!


von Nador R. (rifman)


Lesenswert?

Hallo,
MC:        LPC2468-Board
Kompiler:  GNUARM
ich versuche die ganze Zeit der CAN-Bus Zustand auszulesen(Passiv oder 
Aktive), es geht aber nicht.Ich mache nichts anders als Die CAN-Bus 
Zustand vom CANxSR Register auszulesen und die Receive Status Bit zu 
überprüfen, wenn ich aber der CAN-Bus starte, gibt mir das Programm 
immer aus, das es keine CAN Aktivitäten vorhanden sind,obwohl es CAN-Bus 
Verkehr gibt(ich kann die CAN-Frames auch sehen).
1
unsigned char CANState(void)
2
{
3
 unsigned char retval;
4
 unsigned int recvstate;
5
 
6
 recvstate = CAN1SR;
7
 if(recvstate & (1<<4))  
8
 {
9
   retval = TRUE;
10
 }
11
 else
12
 {
13
   retval = FALSE;
14
 }
15
16
 return(retval);
17
}

Gibt es irgendwas falsches im Programm? muss ich vielleicht die CAN 
Interrupts vorher ausschalten?

Danke

von Nador R. (rifman)


Lesenswert?

OK, anscheinend hat keiner von euch eine Idee.

Andere Frage: Muss man immer den CAN-Interrupt ausschalten wenn man die 
CAN-Daten bearbeiten will?,z.B. von CAN Receive Buffer zum anderen 
Buffer kopieren, oder wie ist das?

Danke

von Jonas A. (Firma: GreenWire-Elektronik) (padrejohn)


Lesenswert?

Hi,

ich kann dir zwar nicht helfen in Sachen CAN, aber in der aktuellen 
Elektor war ein guter Artikel zum auslesen vom CAN-Bus!

von Peter (Gast)


Lesenswert?

Kenne den 2468 nicht, aber den 2378. Die CAN Controller sollten 
eigentlich identisch sein.
Du musst die Interrupts nicht ausschalten, um die Register lesen zu 
können.
Typischer Fehler beim CAN Empfang ist ein fehlerhafter oder ganz 
vergessener Akzeptanzfilter. Du musst für jede ID die du empfangen 
möchtest einen Eintrag in die Liste machen. Das wird gerne vergessen.

von Nador R. (rifman)


Lesenswert?

Jonas Arndt wrote:
> Hi,
>
> ich kann dir zwar nicht helfen in Sachen CAN, aber in der aktuellen
> Elektor war ein guter Artikel zum auslesen vom CAN-Bus!

Danke für die Infos.

@Peter:
>Du musst die Interrupts nicht ausschalten, um die Register lesen zu
>können.
Ok, aber was ist mit den CAN-Daten, der Datenstrom wird jedesmal 
unterbrochen, wenn ich die Daten bearbeiten will,oder?

>Typischer Fehler beim CAN Empfang ist ein fehlerhafter oder ganz
>vergessener Akzeptanzfilter. Du musst für jede ID die du empfangen
>möchtest einen Eintrag in die Liste machen. Das wird gerne vergessen.
Das würde ich so nicht sagen, wenn ich den Akzeptanzfilter auf bypass 
mode einstelle dann muss ich das nicht tun.

von Martin (Gast)


Lesenswert?

> ich kann dir zwar nicht helfen in Sachen CAN, aber in der aktuellen
> Elektor war ein guter Artikel zum auslesen vom CAN-Bus!

http://martinsuniverse.de/projekte/caninterceptor/caninterceptor.html

Die Software ist zwar noch nicht komplett fertig aber für den Anfang 
einsatzfähig.

von Lutz (Gast)


Lesenswert?

Was ist den CANISR bei
recvstate = CAN1SR; ???

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.