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
  Wemos D1 R2, Kein Reset wenn 5V Ausgang belegt ist LutzS 14 485 24.05.2020 21:07
Letzter Beitrag: LutzS
  ESP8266 Reset Button ? Nicole 16 803 18.05.2020 11:33
Letzter Beitrag: N1d45
  ESP32 hängt -> reset per Attiny85 hYtas 107 10.941 06.12.2019 12:48
Letzter Beitrag: amithlon
  Soft WDT reset wemos d1 mini pro Patrick117 4 2.055 19.07.2019 14:00
Letzter Beitrag: Fips

Gehe zu:


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