Ratlos mit MAX3051 am ESP32 (hängt sich beim Senden auf)

Gast #6859633
Lesenswert?

Hallo zusammen,

ich habe zwei ESP32 mit jeweils einem MAX3051 an RXD->IO4 und TXD->IO5 
(Schaltplan im Anhang).

Die beiden habe ich über CANH und CANL mit jeweils 120k verbunden... die 
Strecke zwischen beiden befindet sich im Versuchsaufbau bei etwa einem 
Meter.

mein Code (auf beiden gleich)

das Serial "can go" kommt noch, und dann hängt der ESP (ohne 
Fehlermeldung ohne weiteren informationen)

Hat jemand eine Idee für mich, was ich falsch mache?

sandeepmistry/CAN@^0.3.1
1
void setup() {
2
CAN.setPins(4, 5);
3
if (!CAN.begin(125E3)) {
4
  Serial.println("Starting CAN failed!");
5
  while (1);
6
}
7
CAN.onReceive(onReceive);
8

9
void loop() {
10

11
  if( millis() - rsmTmp > rsmTime )  //timer ... alle 30 Sekunden
12
  {
13
    Serial.println("can go");
14

15
    CAN.beginExtendedPacket(0x18db33f1, 8);
16
    CAN.write(0x02);
17
    CAN.write(0x09);
18
    CAN.write(0x02);
19
    CAN.endPacket();
20

21
    Serial.println("can end");
22
    rsmTmp = millis();
23
  }
24

25
  delay(1);
26
}
27

28
void onReceive(int packetSize) {
29
  uint64_t id = CAN.packetId();
30

31
  //erhalte Nachrichtenstring
32
  String msg = "";
33
  while (CAN.available()) {
34
    msg += (char)CAN.read();
35
  }
36
  int16_t value = atol(msg.c_str());
37

38
  Serial.println(id);
39
  Serial.println(value);
40
}
Angehängte Dateien:
Gast #6859898
Lesenswert?

Leider habe ich nun das nächste Problem mit dem Empfangen.

zwar habe ich bei mir im Setup
  CAN.onReceive(onReceive);


aber die Funktion

void onReceive(int packetSize) {}

wird nicht aufgerufen. Ich habe ganz oben ein Serial.println("empfange 
Daten") eingebaut. Aber die Methode wird nicht aufgerufen.

Hat jemand eine Idee, wie ich das ganze Debugen kann?

Leider kommt mein Oszilloskope erst die nächsten Tage um zu Prüfen ob 
auch sauber gesendet wird. Aber soweit ich weiß sollte der MAX3051 doch 
nur dann Daten senden, wenn die auch woanders ankommen!?!?

Viele Grüße

@Harald hm, soweit ich woanders gesehen habe sind es 4 & 5 (aber ggf. 
sind auch mehrere Ports möglich?) Jetzt bin ich verunsichert. Mit 
CAN.setPins(4, 5); setze ich aber die Pins

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