Can_Bus_Shild-master lib bekomme keine Werte

Hallo Leute…
Ich habe ein MCP2515 Shield und einen Arduino, hab es jetzt hinbekommen das die Verbingung Zwischen Arduino und mein MCP2515 Shield steht =) er sagt mir im Monitor mal:
CAN BUS Shield init ok!!
Begin to set Mask
Set Mask success

So wie ich das Sketch verstehe zeigt er mir doch den ganzen Datenverkehr von Can-Bus an oder versteh ich das falsch ?

/************************************************************************************************* 
  OBD-II_PIDs TEST CODE
  LOOVEE @ JUN24, 2017
  
  Query
  send id: 0x7df
      dta: 0x02, 0x01, PID_CODE, 0, 0, 0, 0, 0

  Response
  From id: 0x7E9 or 0x7EA or 0x7EB
      dta: len, 0x41, PID_CODE, byte0, byte1(option), byte2(option), byte3(option), byte4(option)
      
  https://en.wikipedia.org/wiki/OBD-II_PIDs
  
  Input a PID, then you will get reponse from vehicle, the input should be end with '\n'
***************************************************************************************************/
#include <SPI.h>
#include "mcp_can.h"

// the cs pin of the version after v1.1 is default to D9
// v0.9b and v1.0 is default D10
const int SPI_CS_PIN = 9;

MCP_CAN CAN(SPI_CS_PIN);                                    // Set CS pin

#define PID_ENGIN_PRM       0x0C
#define PID_VEHICLE_SPEED   0x0D
#define PID_COOLANT_TEMP    0x05

#define CAN_ID_PID          0x7DF

unsigned char PID_INPUT;
unsigned char getPid    = 0;

void set_mask_filt()
{
    /*
     * set mask, set both the mask to 0x3ff
     */
    CAN.init_Mask(0, 0, 0x7FC);
    CAN.init_Mask(1, 0, 0x7FC);

    /*
     * set filter, we can receive id from 0x04 ~ 0x09
     */
    CAN.init_Filt(0, 0, 0x7E8);                 
    CAN.init_Filt(1, 0, 0x7E8);

    CAN.init_Filt(2, 0, 0x7E8);
    CAN.init_Filt(3, 0, 0x7E8);
    CAN.init_Filt(4, 0, 0x7E8); 
    CAN.init_Filt(5, 0, 0x7E8);
}

void sendPid(unsigned char __pid)
{
    unsigned char tmp[8] = {0x02, 0x01, __pid, 0, 0, 0, 0, 0};
    Serial.print("SEND PID: 0x");
    Serial.println(__pid, HEX);
    CAN.sendMsgBuf(CAN_ID_PID, 0, 8, tmp);
}

void setup()
{
    Serial.begin(115200);
    while (CAN_OK != CAN.begin(CAN_500KBPS))    // init can bus : baudrate = 500k
    {
        Serial.println("CAN BUS Shield init fail");
        Serial.println(" Init CAN BUS Shield again");
        delay(100);
    }
    Serial.println("CAN BUS Shield init ok!");
    set_mask_filt();
}


void loop()
{
    taskCanRecv();
    taskDbg();
    
    if(getPid)          // GET A PID
    {
        getPid = 0;
        sendPid(PID_INPUT);
        PID_INPUT = 0;
    }
}

void taskCanRecv()
{
    unsigned char len = 0;
    unsigned char buf[8];

    if(CAN_MSGAVAIL == CAN.checkReceive())                   // check if get data
    {
        CAN.readMsgBuf(&len, buf);    // read data,  len: data length, buf: data buf

        Serial.println("\r\n------------------------------------------------------------------");
        Serial.print("Get Data From id: ");
        Serial.println(CAN.getCanId(), HEX);
        for(int i = 0; i<len; i++)    // print the data
        {
            Serial.print("0x");
            Serial.print(buf[i], HEX);
            Serial.print("\t");
        }
        Serial.println();
    }
}

void taskDbg()
{
    while(Serial.available())
    {
        char c = Serial.read();
        
        if(c>='0' && c<='9')
        {
            PID_INPUT *= 0x10;
            PID_INPUT += c-'0';
            
        }
        else if(c>='A' && c<='F')
        {
            PID_INPUT *= 0x10;
            PID_INPUT += 10+c-'A';
        }
        else if(c>='a' && c<='f')
        {
            PID_INPUT *= 0x10;
            PID_INPUT += 10+c-'a';
        }
        else if(c == '\n')      // END
        {
            getPid = 1;
        }
    }
}
// END FILE

Vielen Dank schon mal =)

Hi

Woran ist der CAN-Bus angeschlossen?
Schwätzt dort überhaupt Jemand?
In der richtigen Geschwindigkeit?
In den Tiefen des WWW laß ich, daß der CAN-Bus im Auto mit 16MHz läuft, die CAN-Module haben aber einen 8MHz-Quarz verbaut.
Laut der gleichen Quelle kann man den Quarz aber gegen einen 16MHz tauschen und soll dann am Auto lauschen können.

MfG

Der hängt einmal an einem Passat b7 oder ein Golf4 :slight_smile:
Okay des heist ich muss den 8mhz gegen 16mhz austauschen oder geht des auch mit der Software ?

Hi

Meines Wissen durch Austausch des Quarz.
Kurz vorher würde ich CAN, 16MHz und Golf4 Mal durch Google verifizieren lassen.
Das aber nur, wenn Du derzeit 8MHz Quarze auf den Modulen hast :wink:

MfG

Ja ich habe 8mhz auf meinem Modul und mein adruino geht mit 16mhz :slight_smile:

Hi

Nein nein - die 16MHz vom Arduino sind davon nicht betroffen.
Dein Auto wird mit 16MHz am CAN-Bus rumspielen - deshalb verstehen die 8MHz-Module Nichts von Deinem Auto.
Also laut Dem, was ich dazu in den Tiefen des WWW gelesen hatte, soll man durch einfachen Tausch des 8MHz-Quarz gegen 16MHz im Auto-CAN-Bus mitlesen/schwätzen können - Quarze hätte ich ja da (... Elektronik-Messi ... oder so), aber 'umgebaut' habe ich Das noch nicht.

MfG

Ich hab auch noch ein 16 mhz Quarz da
Aber vom Sketch her passt es ?

Hi

Meines Wissen nach: ja.
Habe aber selber nur die CAN-Module untereinander laufen - Da kann ich mich aber echt nicht beschweren - im Gegenteil!
Für 'was Eigenes' muß man schauen, wie man mit den 8 Nutzbytes zurecht kommt und die Rückwärts-Logik, da beim CAN jeder Teilnehmer eine (oder auch mehrere) eigene, einzigartige IDs hat (keine ID darf doppelt vorkommen) und jeder Teilnehmer auf diese Nachrichten dieser ID reagieren kann.
So reicht Es, wenn der Öl-Temperatur-Sensor die Werte 1x in den Bus schickt, sowohl das Steuergerät wie die Anzeige in den Armaturen lesen Diese mit und machen ihr eigenes Ding damit.
(... vll. blödes Beispiel, kA, ob das MotorSteuerGerät von der Öl-Temperatur abhängig was entscheidet ...)

MfG

Okay hab jetzt mal mein shield umgelötet auf 16 mhz :smiley:
Also Verbindung zum adruino geht mal noch :slight_smile:
Geh jetzt mal schnell zum Auto :wink:
Also des Sketch sollte mit ja alle Daten im Monitor anzeigen richtig ?

Also kommt irgendwie nichts an :frowning:
Er schreibt mir 8 mal in den Monitor:
Begin top set Mask!!
Set Mask success!!
Und des gleiche mit Filter statt Mask
Oder kann ich vllt die lib gar nicht nutzen für mein shield :frowning:

Hi

Meine Lib müsste Die sein:

Klick
Wobei ich die Version 1.1 habe ... in meiner Lib steht leider keine URL drin, in den Kommentaren aber der Name des Progger.

MfG

Hm okay des müsste ja die selbe lib sein :frowning: oh man ich verzweifle hier noch :frowning:

Hab jetzt nochma ein bisschen rumgereister und andere libs probiert aber ich bekomm es nicht zu laufen :frowning:

Hi

Hast Du nur ein CAN-Modul?
Ab Zwei kannst Du zumindest überprüfen, ob die Module an sich ok sind, also zwei Arduino miteinander schwätzen können.

Was im Auto-CAN-Bus unterwegs ist, ist mir nicht bekannt, wenn ich aber wohl auch schon drüber nachgedacht habe, Dort Mal einen Arduino anzustöpseln :o

MfG

Ne hab leider nur ein adruino und nur ein can shield :frowning:
Ja dann aufgehst :smiley: dann kannst mir helfen ^^

Hi

Ak2113:
Ja dann aufgehst :smiley: dann kannst mir helfen ^^

Hehe, wie geil ist Das denn :wink:
Akut bin ich Was am Ausfräsen, alle 15 Minuten drängt mein Handy mich dazu, der Fräse neues Futter zu geben - also Heute wird Das Keinen mehr geben (und die nächsten Tage wohl auch eher unwahrscheinlich, sorry :wink: )

Ne hab leider nur ein adruino und nur ein can shield :frowning:

Also ich sehe hier ein ganz klares Fehlverhalten Deinerseits ... wie kann man nur EINEN Arduino kaufen ... und nur EINE CAN-Platine ... ok, mir ist die Zahl der erworbenen Nano/Uno/Mega akut nicht bekannt, vll. auch nicht DER Weg :wink:
Ähnlich bei den CAN-Platinen, wobei hier 'Haben ist besser als Brauchen' zu 100% passt :wink:

MfG

Hat der Golf 4 CanBus ?

Der Golf 4 hat Can und mein Passat B7 ganz sicher sogar :slight_smile:

Ich man :frowning: schade
Ja vllt bestell ich mir noch einen

So zweiter Arduino und zweites Can Shield sind bestellt