RKS+CAN Adapter für CAN-Bus Sniffing
CAN-Interface
CAN Hardware, CAN Software, CAN Protokolle - CAN-Bus Forum für Dein CAN-Bus Projekt. CAN-Bus und Elektronik.

CAN Bus Filter Problem


 
Gehe zu Seite: 1, 2  Weiter
Neues Thema beginnen Auf Beitrag antworten Weitergeben, Thema teilen Lesezeichen setzen Druckansicht CANhack.de - Übersicht » Mikrocontroller und Elektronik, Programmierung
Autor Nachricht
Michael42



CAN Hacker seit: 10.07.2023
Beiträge: 12
Karma: +0 / -0   Danke, gefällt mir!


Kostenloser Account, kein CAN Entwicklungs-Support

Beitrag10-07-2023, 1:22    Titel: CAN Bus Filter Problem Antworten mit Zitat

ich habe den obigen Thread hier gefunden aber ich werde weder draus schlau noch bekomme ich es hin die Nachricht 0x280 (Die im Seriellen Monitor der Ardunio IDE u.a. sehe) zu filter.

Ich möchte auf dem TFT Display die Drehzahl zum Beispiel des Autos darstellen. Frage: wie mache ich das ? Ich bin das ganze Wochenende dabei gewesen, über viele Stunden das hinzubekommen. Ich schaffe es nicht.

Mein Code

Code:


#include <mcp_can>
#include <SPI>

long unsigned int rxId;
unsigned char len = 0;
unsigned char rxBuf[8];

MCP_CAN CAN0(5); // CS ist am Pin 5 am ESP32

void setup()
{
Serial.begin(115200);
if(CAN0.begin(MCP_STD, CAN_500KBPS, MCP_8MHZ) == CAN_OK) Serial.print("MCP2515 Init Okay!!\r\n");
else Serial.print("MCP2515 Init Failed!!\r\n");
pinMode(34, INPUT); // Setting pin 2 for /INT input

CAN0.init_Mask(0,0,0x07FF); // Init first mask...
CAN0.init_Filt(0,0,0x280); // Init first filte
CAN0.init_Filt(0,0,0x288); // Init first filter...

CAN0.init_Mask(1,0,0x07FF); // Init second mask...
// CAN0.init_Filt(0,0,0x0288); // Init third filter...
// Init sixth filter...

Serial.println("MCP2515 Library Mask & Filter Example...");
CAN0.setMode(MCP_NORMAL);
}

void loop()
{
if(!digitalRead(34)) // Int ist am Pin 34 am ESP32
{
CAN0.readMsgBuf(&rxId, &len, rxBuf); // Read data: len = data length, buf = data byte(s)
Serial.print("ID: ");
Serial.print(rxId, HEX);
Serial.print(" Data: ");
for(int i = 0; i<len; i++) // Print each byte of the data
{
if(rxBuf[i] < 0x10) // If data byte is less than 0x10, add a leading zero
{
Serial.print("0");
}
Serial.print(rxBuf[i], HEX);
Serial.print(" ");
}
Serial.println();
}
}



Die Ausgabe im Arduino Seriellen Monitor:

D2 Data: 00 00 00 20 00 06 6B
ID: 2A0 Data: 00 00 00 00 00 00 30 30
ID: 4A0 Data: 00 00 00 00 00 00 00 00
ID: 2A0 Data: 00 00 00 00 00 00 40 40
ID: 4A0 Data: 00 00 00 00 00 00 00 00
ID: 2A0 Data: 00 00 00 00 00 00 50 50
ID: 4A0 Data: 00 00 00 00 00 00 00 00
ID: 2A0 Data: 00 00 00 00 00 00 60 60
ID: 4A0 Data: 00 00 00 00 00 00 00 00
ID: 2A0 Data: 00 00 00 00 00 00 70 70
ID: 4A0 Data: 00 00 00 00 00 00 00 00
ID: 2A0 Data: 00 00 00 00 00 00 80 80
ID: 4A0 Data: 00 00 00 00 00 00 00 00
ID: 2A0 Data: 00 00 00 00 00 00 90 90
ID: 4A0 Data: 00 00 00 00 00 00 00 00
ID: 2A0 Data: 00 00 00 00 00 00 A0 A0
ID: 4A0 Data: 00 00 00 00 00 00 00 00
ID: 2A0 Data: 00 00 00 00 00 00 B0 B0
ID: 4A0 Data: 00 00 00 00 00 00 00 00
ID: 2A0 Data: 00 00 00 00 00 00 C0 C0
ID: 4A0 Data: 00 00 00 00 00 00 00 00

Ich verstehe den Zusammenhang (trotz lesens im Internet u. im Code) nicht, wie ich

a) die FIlter setze.

b) wieso 2A0 und 4A0 dabei herauskommen.

c) Muss ich in meinem Fall überhaupt Filter setzen ?

d) wie kann ich mit (cansniffer) mit dem Arduino + mcp2515 Daten auslesen. Im Seriellen Monitor der Arduino IDE sehe ich die Can Nachrichten, in Savvy Can oder cansniffer in der bash, sehe ich gar nichts.

e) wie kommt man überhaupt auf "07FF" in der Maske? Ich bin Automechaniker und lerne C+ seit 7 Monaten mit ChatGPT aber nach meiner Logik sollte die Maske doch ab 0x000 alle Daten blockieren ? Die Maske ist doch dafür da, alle Nachrichten draußen zu halten ? Und die Filter lassen jeweils die einzelnen Nachrichten durch ?

Wer kann mir helfen ? Ich komme absolut nicht weiter und es ist nur noch ein Rätsel raten.


Zuletzt bearbeitet am 10-07-2023, 1:26, insgesamt 1-mal bearbeitet.
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden  
Zampan0
CAN-Profi
CAN-Profi


CAN Hacker seit: 28.06.2016
Beiträge: 30
Karma: +20 / -0   Danke, gefällt mir!


CAN Support

CAN-Diagnose gefällt das.
Beitrag10-07-2023, 8:29    Titel: CAN Bus Filter Problem Antworten mit Zitat

Du musst die Filter nicht verwenden, allerdings wenn am Bus viel los ist, musst du dich um die Auswertung der gewünschten Pakete kümmern und dabei Pakete verloren gehen (bei serieller Ausgabe)

Hier ist das Datenblatt vom MCP2515, der hier verwendet wird.

https://ww1.microchip.com/downloads/en/DeviceDoc/MCP2515-Stand-Alone-CAN-Controller-with-SPI-20001801J.pdf

Auf Seite 33 werden die Filter erklärt.

Du musst die Filter Bitweise sehen und nicht als Byte, da könnte es etwas schwieriger werden.

nimm den Windows Rechner und stelle den auf Programmierer
dann kannst du zwischen Hex und Bin direkt umschalten und so genau erkennen was gefiltert wird und was nicht
07FF -> 00000111 11111111
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden  
Michael42



CAN Hacker seit: 10.07.2023
Beiträge: 12
Karma: +0 / -0   Danke, gefällt mir!


Kostenloser Account, kein CAN Entwicklungs-Support

Beitrag10-07-2023, 8:57    Titel: CAN Bus Filter Problem Antworten mit Zitat

danke für deine Mühe, aber ich werde daraus nicht schlau. Das ist alles fiktiv und gar nicht erklärlich.

ID 0x280, Byte 2+3 für rpm, die will ich umstellen und berechnen. Wozu brauch ich da die Bits ? Ich debugge doch gar nicht. Es geht erstmal nur um die Berechnung. Übrigends macht die Bibliothek mcp_2515.h keine Probleme mit den Filtern. Hat sofort hingehauen, mir nur 0x280 seriell anzuzeigen.

Habe ich was falsch verstanden ?

Noch eine Frage, kann ich den Arduino + mcp2515 irgendwie mit Scavvy Can oder cansniffer zum laufen bekommen ? Ich benutze Linux und habe kein Windows (nur in der VM).

Ich habe einen A3 8p der dient nur zum testen. Es geht um einen Ferrari 360, TCU. Ich will die Sequenz aus dem teuren Texa Tester über ein Y OBD Kabel mitschneiden. Der Sinn: ich will den PIS Wert im Auto über ein TFT oder OLED anzeigen und einstellen können. An diesem Wagen wird gewiss alles Neuland sein. Es gibt dazu keine Dokumentation oder Erfahrung. Von der TCU brauche ich den PIS Wert, Kupplungsverbrauch, Druck der SMG Pumpe. Das wäre dann schon Mega top - so die Theorie. Ohne einen Sniffer wie Savvy Can der die Bitfolgen der einzelnen Bytes grafisch darstellen kann wird es schwer bis unmöglich. Einen TTL USB Adapter hätte ich hier.. und ein OBD Diag Kabel für VAG COM

Was ich bisher auch nicht verstanden habe: wo kommen die PIDs her ? Es gibt doch nur CANId + leng + Data.

Vielen Dank für deine Mühe....

Und noch eine Frage...

wenn man mit einer hohen Wahrscheinlichkeit die Bytefolge hat für die man sich interessiert... wie haben die Leute die Berechnung herausgefunden ? Anhand von durchgesickerten Infos der Hersteller ? Ich habe auch einen Launch x431 Tester... kann man da die PIDs rausfiltern ? Am Kabel oder in der SW ?

Ich suche noch die CANId für km Stand und Batteriespannung - ist das vlt bekannt ? Ich konnte dazu bisher leider nichts im Netz finden. Vielen Dank nochmals für deine Mühe. Ich gebe mein Bestes alles zu verstehen. Für mich einfach Neuland HEX / BIN / HEXDEZ. ich verstehe nicht wo unten und oben dabei ist und noch eine Frage, braucht man die CAN Protokolle nur, um zu wissen oder die Bits vorn oder hinten gezählt werden? Und ja, ich habe die PDF The Car Hackers Handbook. Aber da stehen nur Basics finde ich. Bisher konnte mich das Buch nicht sehr viel weiter helfen, als ich schon durch recherche oder ChatGPT herausgefunden habe.

Mein Projekt besteht momentan aus einem 4" TFT und einem ESP32dev. Auf diesem habe ich ein Neo 6M bisher als 7 Segment schöne gerenderte Zahlem darstellen können, GPS Zeit mit Zeitumstellung und Durchschnittsgeschwindigkeit, sowie mit Menu/Seitenfunktion per Button+ Codeupdate per OTA. Erst lief alles auf ein OLED dann musste ich die drawrec Funktion erst lesen, um auf dem TFT alte Zeichen / Zahlen zu löschen - war mir natürlich neu. Dabei habe ich gleich gelernt was ein array und ein string ist und wie man das programmmiert. Ich bin mit dem Projekt schon 7 Monate beschäftigt und habe von 0 angefangen. Das ich soweit kommen werde, hätte ich anfangs nicht gedacht.... 3 Monate ging es nicht vorran,weil der Quarz den ich von 8 auf 16 Mzh geupdatet hatte, defekt gewesen ist und ich keine Daten seriell trotz korrekter Setting im Code (Baudrate, CS Pin, int Pin, Busspeed) erhalten hatte..

Also die Maske setz die Bits die durchgelassen werden ? also brauche ich als Maske nur 7FF = 11 Bits für die Can Standard Nachricht - korrekt ?

Dann bräuchte ich nach meiner Logik keine weiteren Filter, da ich auf alle Bits von verschiedenen CanIDs zugreifen will - ist das korrekt ?

Kann ich die 0x280 durch

if (mcp2515.readMessage(&canMsg) ==0x280 {....

}

verarbeiten ? Paketverluste hat man nur seriell ?


Zuletzt bearbeitet am 10-07-2023, 9:23, insgesamt 7-mal bearbeitet.
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden  
Zampan0
CAN-Profi
CAN-Profi


CAN Hacker seit: 28.06.2016
Beiträge: 30
Karma: +20 / -0   Danke, gefällt mir!


CAN Support

CAN-Diagnose und Michael42 gefällt das.
Beitrag10-07-2023, 9:16    Titel: CAN Bus Filter Problem Antworten mit Zitat

genau dafür ist ja das Interface von dieser Seite sehr gut geeignet!

https://www.canhack.de/viewtopic.php?t=1852

damit kannst du Filtern und Änderungen von Daten schön darstellen um so herauszufinden was die jeweiligen Bytes beinhalten
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden  
Michael42



CAN Hacker seit: 10.07.2023
Beiträge: 12
Karma: +0 / -0   Danke, gefällt mir!


Kostenloser Account, kein CAN Entwicklungs-Support

Beitrag10-07-2023, 9:30    Titel: CAN Bus Filter Problem Antworten mit Zitat

klingt gut...

wenn das den Support hier beinhaltet, bezahle ich den Betrag auch ohne dieses Kabel. Ich vermute mal das man mit dem Arduino und TTLUSB Adapter auch die bekannten Sniffer benutzen kann.

Ich kaufe so ein Kabel kommende Woche von Euch.

Vielen Dank nochmals für deine Mühe. Echt nett. War das so richtig was ich über Maske und Filter gesagt hatte ?

Wie ich gehört habe, planen die Hersteller ein verschlüsselten CAN in Zukunft... aber ich kann von neuen Autos sowieso nur Jedem abraten. Absoluter Schr***. Steuerkette hinten, zwischen Motor und Getriebe... Zahnriemen die durch Öl laufen... Zylinder ohne Laufbuchsen... DSG Kupplungen die nur 50tkm halten. Es kommt nur noch Schrott auf den Straßen.*kopfschüttel*


Zuletzt bearbeitet am 10-07-2023, 9:32, insgesamt 1-mal bearbeitet.
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden  
Zampan0
CAN-Profi
CAN-Profi


CAN Hacker seit: 28.06.2016
Beiträge: 30
Karma: +20 / -0   Danke, gefällt mir!


CAN Support

CAN-Diagnose gefällt das.
Beitrag10-07-2023, 9:56    Titel: CAN Bus Filter Problem Antworten mit Zitat

Die verschiedenen Adapter haben eigene Protokolle zwischen Hardware und Software, die Hardware dafür eigene Prozessoren die das meiste schon im Interface erledigen.

Habe selbst mehrere verschiedene CAN-USB Adapter für den Marinebereich, da werden Konfigurationen in Geräten über dessen eigener Software und dazugehörigen Gateway gemacht, ein Arduino Gateway wird einfach ignoriert.

Verschlüsselte Daten am CAN sind jetzt teilweise schon üblich aber wegen der geringen Übertragungschwindigkeit sehr selten.

Gut, die Steuerkette zwischen Motor und Getriebe hatte mein alter A6 4F 3.0tdi 2010 auch schon, hatte aber nie Probleme damit.
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden  
CAN-Diagnose
Administrator
Administrator
Avatar-CAN-Diagnose

CAN Hacker seit: 07.06.2011
Beiträge: 550
Karma: +27 / -0   Danke, gefällt mir!
Wohnort: Ländle



Beitrag10-07-2023, 20:07    Titel: CAN Bus Filter Problem Antworten mit Zitat

Michael42 hat folgendes geschrieben:
klingt gut...

wenn das den Support hier beinhaltet, bezahle ich den Betrag auch ohne dieses Kabel. Ich vermute mal das man mit dem Arduino und TTLUSB Adapter auch die bekannten Sniffer benutzen kann.

Ich kaufe so ein Kabel kommende Woche von Euch.

Vielen Dank nochmals für deine Mühe. Echt nett. War das so richtig was ich über Maske und Filter gesagt hatte ?

Wie ich gehört habe, planen die Hersteller ein verschlüsselten CAN in Zukunft... aber ich kann von neuen Autos sowieso nur Jedem abraten. Absoluter Schr***. Steuerkette hinten, zwischen Motor und Getriebe... Zahnriemen die durch Öl laufen... Zylinder ohne Laufbuchsen... DSG Kupplungen die nur 50tkm halten. Es kommt nur noch Schrott auf den Straßen.*kopfschüttel*

😅 Ein USB Interface läuft nicht an einer seriellen Schnittstelle mit Rx/Tx und auch nicht auf der anderen Seite (USB Device), egal wie viele Steckeradapter man verbindet.
Eine Mission, die zum Scheitern verurteilt ist.

Das CAN USB Interface ist für einen PC oder Laptop. Siehe Systemvoraussetzungen in der Produktbeschreibung.
Dipl.-Ing. (FH) Rainer Kaufmann - Embedded @ Kaufmann Automotive GmbH
CANhack.de System RKS+CAN: CAN-Bus Interface


Zuletzt bearbeitet am 10-07-2023, 20:39, insgesamt 3-mal bearbeitet.
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael42



CAN Hacker seit: 10.07.2023
Beiträge: 12
Karma: +0 / -0   Danke, gefällt mir!


Kostenloser Account, kein CAN Entwicklungs-Support

Beitrag10-07-2023, 20:35    Titel: CAN Bus Filter Problem Antworten mit Zitat

Das habe ich doch so gar nicht gesagt oder gemeint. Missverständnis...

Meine Frage war ob ich die CAN Hig/ LOW an die RX und TX an den CH340 klemmen kann und dann über einen Cansniffer den Bustraffic abhören kann.. oder mit dem Rosstech Kabel sniffen. So war meine Frage zu verstehen. Wenn Euer Kabel besser geeignet ist, dann wird dem so sein. M.m, sind in den meisten Diagnose Kabel FTDI Chips lediglich verbaut.


Zuletzt bearbeitet am 10-07-2023, 20:48, insgesamt 8-mal bearbeitet.
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden  
CAN-Diagnose
Administrator
Administrator
Avatar-CAN-Diagnose

CAN Hacker seit: 07.06.2011
Beiträge: 550
Karma: +27 / -0   Danke, gefällt mir!
Wohnort: Ländle



Zampan0 gefällt das.
Beitrag10-07-2023, 20:47    Titel: CAN Bus Filter Problem Antworten mit Zitat

Ich habe es noch nett geschrieben. Dir fehlen die Grundlagen. Ich meine, das Datenblatt zum MCP, was willst Du mehr?

Da steht alles drin was es über das IC zu wissen gibt.

Ich helfe gerne, aber von Deiner Seite wäre etwas mehr Demut angesagt. Die Aussage, Support (lies Nachhilfe) zu Elektronik und Entwicklung mit einem USB Interface zu bekommen, ist etwas schräg. Sehr vorsichtig formuliert.

Bei Deinem Arduino ist ja auch kein Programmierkurs dabei gewesen. icon_idea.gif
Dipl.-Ing. (FH) Rainer Kaufmann - Embedded @ Kaufmann Automotive GmbH
CANhack.de System RKS+CAN: CAN-Bus Interface


Zuletzt bearbeitet am 10-07-2023, 20:49, insgesamt 1-mal bearbeitet.
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael42



CAN Hacker seit: 10.07.2023
Beiträge: 12
Karma: +0 / -0   Danke, gefällt mir!


Kostenloser Account, kein CAN Entwicklungs-Support

Beitrag10-07-2023, 20:49    Titel: CAN Bus Filter Problem Antworten mit Zitat

du verstehst mich wieder falsch: ich schätze und respektiere eure Hilfe. Und ich bin für Eure Hilfe sehr dankbar. Ich wollte nicht undankbar erscheinen. Sorry.

Ich habe bereits das Selbststudienprogramm von Audo 286 gelesen, um zu wissen, wie eine CAN Nachricht aufgebaut ist. Aber ich habe eben nicht Informatik studiert und ich glaube, dass ich das für mein Vorhaben auch nicht brauch. Dafür kann man doch einfach i.d.S. einfach hätte erklären können dass

eine Maske nicht anderes ist wie ein "Bit Filter" und jeder nachgeschaltete Filter, einfach die Can IDs Filter. Zusammen lassen Sie ein bestimmtes Byte einfach durch, und oder eben die ganze Can ID.
Alles Wissen zu C++ und Arduino habe ich über das Netz und der KI erworben und ich versuche von Anfang an, stets den Code nachzuvollziehen und zu verstehen, weil man nur so lernt. Früher ohne KI hätte man das niemals in einem überschaubarem Zeitraum alles alleine Daheim lernen können.

Mit CH340 meinte ich den USBTTL adapter.. den Benutze ich für die Serielle Kommunikation z.Bsp. um den Neo6m über das U Center zu konfigurieren. Ich habe noch immer nicht verstanden, wo die PIDs herkommen ? Also ich meine, über Arduino sehe ich die RAW Daten am Can? und die PIDs sind über das BusProtokoll definiert, worauf man nur zugreifen kann, wenn man die entsprechende HW hat ? Ich finde das alles auf jedenfall mega Interessant und möchte über Can Bus alles lernen, weil ich das beherrschen möchte und ich es interessant finde. Der Traffic auf dem Arduino kommt seriell rein. Genau. Leider kann ich das nicht über einen Sniffer weiter verarbeiten. Vcan und Slcan habe ich schon versucht, die seriellen Daten einfach auf die Vcan umzuleiten. Ich habe das auch geschafft und konnte Daten empfangen, aber es waren keine CanIDs mehr und die Ausgabe zeigte nur leng und einstellige Zahlen. Baudrate etc wurden natürlich richtig konfiguriert.

Zur AI hast du selbstreden vollkommen Recht. Das Ding macht jede Menge fehler. Aber wenn ich was nicht verstehe, dann werfe ich diese Kiste an und Sie erklärt mir den Code und ich habe bislang jeden Code verstanden. Früher hätte ich niemals begriffen, was ein Array ist oder ein String, char etc. Ich fands bisher aber sehr interessant und möchte mich damit künftig hobbymäßig beschäftigen. Ich habe auch Abitur und habe studiert. Aber ich schraube einfach gerne an Autos. Studiert habe ich 7 Semester Rechtswissenschaft und zuvor habe ich Automachaniker gelernt mit Abschluss.


Zuletzt bearbeitet am 10-07-2023, 21:22, insgesamt 8-mal bearbeitet.
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden  
CAN-Diagnose
Administrator
Administrator
Avatar-CAN-Diagnose

CAN Hacker seit: 07.06.2011
Beiträge: 550
Karma: +27 / -0   Danke, gefällt mir!
Wohnort: Ländle



Beitrag10-07-2023, 20:54    Titel: CAN Bus Filter Problem Antworten mit Zitat

Die VCDS Interfaces sind für direkten Buszugriff ungeeignet, nicht weil die Hardware es nicht könnte sondern weil Software und Treiber für eine andere Zielgruppe sind.

Was meinst Du mit CH340?

Dein Sourcecode sieht doch schon so aus, als würde der Bustraffic auf der seriellen Schnittstelle ausgedruckt.

Zitat:
ID: 2A0 Data: 00 00 00 00 00 00 30 30

Na alsogeht doch.
0x2a0 ist die CAN-ID, also WELCHE Nachricht. Und danach halt die 8 Datenbytes jeder Nachricht.

0x280 ist nicht in Deiner Ausgabe. Die 0x280 wird vom Motorsteuergerät (VAG Modelle) gesendet, kein VW/Audi/Seat/Skoda Motorsteuergerät, keine 0x280...

PID: andere Baustelle, vermutlich OBD2.

ChatGPT: produziert fragwürdigen Code, schlecht brauchbar. Umkehrfunktion bestehenden Codes klappt aber gut.

Du musst verstehen was abgeht und es selber machen. Wenn Du ChatGPT fragst wie es geht, ist es so, wie wenn Du auf der Fantribüne einen fragst, was der Weltmeister falsch gemacht hat.

Skifahren kannst auch nicht von einem lernen, der alle Skirennen im TV gesehen hat und nun darüber glaubhaft und überzeugt phantasiert, wie man Weltmeister wird. 😉
Dipl.-Ing. (FH) Rainer Kaufmann - Embedded @ Kaufmann Automotive GmbH
CANhack.de System RKS+CAN: CAN-Bus Interface


Zuletzt bearbeitet am 10-07-2023, 21:09, insgesamt 4-mal bearbeitet.
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael42



CAN Hacker seit: 10.07.2023
Beiträge: 12
Karma: +0 / -0   Danke, gefällt mir!


Kostenloser Account, kein CAN Entwicklungs-Support

Beitrag11-07-2023, 3:48    Titel: CAN Bus Filter Problem Antworten mit Zitat

Ich habe noch ein Problem: ich habe es soweit hinbekommen, dass ich mit dem ESP32+mcp2515 can tool betreiben kann. Jedoch wird der Canbus nur am Anfang, während der Initalisierung ausgelesen. Danach kommt keine Aktualisierung mehr. Ich habe den INT auf Pin 34,36, 39 versucht zu legen im Code, jedoch ohne Erfolg.In der can tool.h habe ich die Clock auf 8Mhz angepasst.

Da der Code für den Arduino und den CanShield ist, muss ich etwas anpassen, für den Betrieb mit dem ESP32? Danke für Eure Mühe

Folgenden Code habe ich verwendet:

Code:


#include <can>
#include <mcp2515>

#include <can tool>
#include <CanHackerLineReader>
#include <lib>

#include <SPI>

const int SPI_CS_PIN = 5;
const int INT_PIN = 32;

CanHackerLineReader *lineReader = NULL;
can tool *can tool = NULL;

void setup() {
    Serial.begin(115200);
    SPI.begin();
   
    can tool = new can tool(&Serial, NULL, SPI_CS_PIN);
    lineReader = new CanHackerLineReader(can tool);
   
    pinMode(INT_PIN, INPUT);
}

void loop() {
    if (digitalRead(INT_PIN) == LOW) {
        can tool->processInterrupt();
    }

    // uncomment that lines for Leonardo, Pro Micro or Esplora
    // if (Serial.available()) {
    //   lineReader->process();   
    // }
}

// serialEvent handler not supported by Leonardo, Pro Micro and Esplora
void serialEvent() {
    lineReader->process();
}


Der Code geht geht nach meinem Verständnis davon aus, dass der MCP2515 int auf low zieht, wenn neue Daten Empfangen wurden.


Zuletzt bearbeitet am 11-07-2023, 4:01, insgesamt 3-mal bearbeitet.
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden  
Zampan0
CAN-Profi
CAN-Profi


CAN Hacker seit: 28.06.2016
Beiträge: 30
Karma: +20 / -0   Danke, gefällt mir!


CAN Support

CAN-Diagnose gefällt das.
Beitrag11-07-2023, 7:28    Titel: CAN Bus Filter Problem Antworten mit Zitat

Michael42 hat folgendes geschrieben:
Ich habe noch ein Problem: ich habe es soweit hinbekommen, dass ich mit dem ESP32+mcp2515 CAN Tool betreiben kann. Jedoch wird der Canbus nur am Anfang, während der Initalisierung ausgelesen. Danach kommt keine Aktualisierung mehr. Ich habe den INT auf Pin 34,36, 39 versucht zu legen im Code, jedoch ohne Erfolg.In der CAN Tool.h habe ich die Clock auf 8Mhz angepasst.

Da der Code für den Arduino und den CanShield ist, muss ich etwas anpassen, für den Betrieb mit dem ESP32? Danke für Eure Mühe

Der Code geht geht nach meinem Verständnis davon aus, dass der MCP2515 int auf low zieht, wenn neue Daten Empfangen wurden.

Kenne den CANShild nicht, aber der Interruppt Pin muss Hardware-seitig da angeschlossen sein, wo er auch Software-seitig definiert ist.
Der MPC hat 3 Buffer und solange Daten in diesen Buffern liegen, ist der INT auf Low
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden  
Michael42



CAN Hacker seit: 10.07.2023
Beiträge: 12
Karma: +0 / -0   Danke, gefällt mir!


Kostenloser Account, kein CAN Entwicklungs-Support

Beitrag11-07-2023, 9:47    Titel: CAN Bus Filter Problem Antworten mit Zitat

https://github.com/autowp/arduino-mcp2515

Ich hatte schon gestern mich daran versucht den Code ohne INT anzupassen. Das Problem (für mich), in dem code ist die lib. mcp2515.h included, aber wird nicht verwendet. Ich verstehe überhaupt die can tool lib nicht. Ich habe dazu auch keine Syntax gefunden.In der can tool.h ? Der Code Funktioniert, aber nur einmal. Ich verstehe den Fehler nicht.


Zuletzt bearbeitet am 11-07-2023, 10:34, insgesamt 4-mal bearbeitet.
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden  
CAN-Diagnose
Administrator
Administrator
Avatar-CAN-Diagnose

CAN Hacker seit: 07.06.2011
Beiträge: 550
Karma: +27 / -0   Danke, gefällt mir!
Wohnort: Ländle



Zampan0 gefällt das.
Beitrag11-07-2023, 21:26    Titel: CAN Bus Filter Problem Antworten mit Zitat

Michael42 hat folgendes geschrieben:
https://github.com/autowp/arduino-mcp2515

Ich hatte schon gestern mich daran versucht den Code ohne INT anzupassen. Das Problem (für mich), in dem code ist die lib. mcp2515.h included, aber wird nicht verwendet. Ich verstehe überhaupt die CAN Tool lib nicht. Ich habe dazu auch keine Syntax gefunden.In der CAN Tool.h ? Der Code Funktioniert, aber nur einmal. Ich verstehe den Fehler nicht.

Im Posting am Anfang waren doch ganz viele CAN-Frames zu sehen, wie kann nun der IRQ nicht kommen?

Ist diese Ausgabe wirklich das, was Du mit Deinem Testaufbau bekommen hast?

Hat es jemals funktioniert? Gibt es Beispielcode zu genau Deinem CAN-Shield? Bitte nicht verschiedene Sachen (Code von A, Shield von B etc.) zusammenmixen...

Edit: Der Code am Anfang ist auch anders, ich würde von dort weitermachen, wo es funktioniert hat.
Und der Code unten ist von der Logik her ja nicht wirklich schlauer/anders... im ersten Beispiel ist der IRQ-Pin 34 und unten 32... wenn es mit 34 funktioniert hat, ist naheliegend warum Pin 32 der falsche Pin ist...
Dipl.-Ing. (FH) Rainer Kaufmann - Embedded @ Kaufmann Automotive GmbH
CANhack.de System RKS+CAN: CAN-Bus Interface


Zuletzt bearbeitet am 11-07-2023, 21:33, insgesamt 4-mal bearbeitet.
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Zampan0
CAN-Profi
CAN-Profi


CAN Hacker seit: 28.06.2016
Beiträge: 30
Karma: +20 / -0   Danke, gefällt mir!


CAN Support

CAN-Diagnose gefällt das.
Beitrag12-07-2023, 8:31    Titel: CAN Bus Filter Problem Antworten mit Zitat

Ich denke du musst erst mal lernen wie eine Library aufgebaut ist.
die .h Files sind Headerfiles zu den dazugehörigen .cpp

habe da was gefunden, hier wird ganz einfach erklärt wie das aufgebaut ist.

https://wolles-elektronikkiste.de/bibliotheken-und-klassen-erstellen-teil-i

Ich würde auf jedem Fall den Interrupt verwenden, da es für dich einfacher ist, zu erkennen wann Daten im Buffer liegen.
Du kannst auch ohne arbeiten (wie im Beispiel https://github.com/autowp/arduino-mcp2515/blob/master/examples/CAN_read/CAN_read.ino , belastet aber natürlich den SPI Bus stärker, da über die Register ständig abgefragt werden muss ob Daten vorhanden sind.

Aber wie Rainer schon geschrieben hat, scheint es ja am Anfang mit Interrupt schon funktioniert zu haben.

Bevor du allerdings mit einen CAN am Fahrzeug experimentierst würde ich einen kleinen Bus mit zwei Arduinos aufbauen und von einem was zum anderen schicken.
Da sind PID´s Filter und Masken erst mal unwichtig, du musst noch viel lernen.
Nach oben CAN Hacker - Profil anzeigen Private Nachricht senden  
Neues Thema beginnen Auf Beitrag antworten Weitergeben, Thema teilen Lesezeichen setzen Druckansicht CANhack.de - Übersicht » Mikrocontroller und Elektronik, Programmierung
Gehe zu Seite: 1, 2  Weiter
Ähnliche Fachartikel und Themen
Thema Community Bereich
Keine neuen Beiträge Brauche Hilfe bei Filter CAN Softwaretools und Software
Keine neuen Beiträge Hilfe bei Filter/Maske setzen CANHacker v2 CAN Softwaretools und Software
Keine neuen Beiträge Problem mit RKS+CAN CANhack.de CAN-USB System: RKS+CAN
Keine neuen Beiträge CAN-Bus-Kollision-Symulation: ... 307cc - Eco-Mode Problem Fahrzeugspezifische Hardware und Pinbelegungen
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.