INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Soft WDT reset
07.11.2019, 17:36
Beitrag #1
Soft WDT reset
Hallo Leute. Ich habe angefangen einen Code für den ESP8266 zu schreiben. Ich möchte zwischen zweien ESP32 D1 Mini per UDP kommunizieren. Der Code den ich für den sendenden ESP gebaut habe, führt aber immer einen Soft WDT reset herbei. Hier mein Code:

Code:
#include <ESP8266WiFi.h>
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>

char *ssid = "***";
char *password = "***";

// Network Settings
byte mac[] = { 0x84, 0xF3, 0xEB, 0x**, 0x**, 0x** };
IPAddress ip(192, 168, 178, ***);            //IP-Adresse dieses Microcontrollers
IPAddress gateway(192, 168, 178, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress RecipientIP(192, 168, 178, ***);   // Empfänger IP-Adresse
unsigned int RecipientPort = 55056;         // Empfänger Port
unsigned int localPort = 9000;              // Port auf dem UDP-Pakete empfangen werden
char packetBuffer[UDP_TX_PACKET_MAX_SIZE];  // Puffer für empfangene UDP-Daten
EthernetUDP Udp; // Öffnet die UDP-Instanz

int pin_button = 4;
uint32_t aktMillis;
uint32_t prevMillis;
boolean ledStatus = false;

void setup()
{
  Serial.begin(115200);
  pinMode(pin_button, INPUT_PULLUP);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println(WiFi.macAddress());
  Serial.println(WiFi.localIP());
  Ethernet.begin(mac, ip);
  _udp_send("UDP Ready");
}



void loop() {
  _button_check();
}

void _button_check() {
  int button_status = digitalRead(pin_button);
  //Serial.println(button_status);
  if ( button_status == LOW ) {
    Serial.println("pressed");
    _udp_send("001");
    delay(800);
  }
}

void _udp_send(String text) {
  Udp.beginPacket(RecipientIP, RecipientPort);
  Udp.write("Test");
  Udp.print(text);
  Udp.endPacket();
  delay(10);
}

Ich möchte bei einem Tastendruck eine einfache Zahlenfolge per UDP versenden. Der Befehl "Udp.print();" scheint die Probleme zu machen. Ohne diesen Befehl kommt es nämlich nicht zu diesem Fehler.

Bei einem anderen Projekt hatte ich diesen Fehler bereits schon einmal. Das kam offenbar wegen einer While-Schleife. Ein yield(); dort mit abarbeiten zu lassen half in dem Fall.

Ich vermute, dass in dem aktuellen Fall nicht mein Code Schuld ist, sondern dass es eher an der Ethernet.h-Library liegt. Aber wie kann ich das beheben?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.11.2019, 17:43
Beitrag #2
RE: Soft WDT reset
Hallo,

#include <Ethernet.h>
#include <EthernetUdp.h>
wozu dieses? Die Ethernet-Lib hat mit dem ESP8266 nichts am Hut und SPI benutzt Du auch nicht.

Die UDP-Lib des ESP8266 heißt
#include <WiFiUDP.h>

Beispiele dazu sind doch in der IDE mit dabei...

Gruß aus Berlin
Michael
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  ESP32 hängt -> reset per Attiny85 hYtas 84 1.285 Heute 15:57
Letzter Beitrag: amithlon
  Soft WDT reset wemos d1 mini pro Patrick117 4 1.157 19.07.2019 14:00
Letzter Beitrag: Fips

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste