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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.