CAN-Bus Status auslesen geht nicht!

OP #807037
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
Gast #808255
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.
OP #808388
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren