Core 1 и 0 ESP32 не работают отдельно - PullRequest
0 голосов
/ 10 января 2020

Это мой код

#include <WiFi.h>
//#include "StepperMotor.h"
#define SDA_PIN 4
#define SCL_PIN 5

const char* ssid = "StepperMotorWireless";
const char* password = "";


WiFiServer server(9090);
WiFiClient client;

char buffer[50] = {0};
int buffercounter = 0;

TaskHandle_t StepperHandler;
TaskHandle_t WifiHandler;

void setup()
{
  Serial.begin(9600);
  SetWifi(ssid, password);
  pinMode(2, OUTPUT);

  xTaskCreatePinnedToCore(
    StepperLoop, /* Task function. */
    "StepperHandler",   /* name of task. */
    4000,     /* Stack size of task */
    NULL,      /* parameter of the task */
    2,         /* priority of the task */
    &StepperHandler,    /* Task handle to keep track of created task */
    1);        /* pin task to core 0 */
}

void SetWifi(const char* name, const char* password)
{
  WiFi.disconnect();
  WiFi.mode(WIFI_AP_STA);
  WiFi.softAP(name, password);
  delay(2000);
  IPAddress IP = WiFi.softAPIP();
  Serial.print("Server IP : ");
  Serial.println(IP);
  server.begin();
  server.setNoDelay(true);
  Serial.println("Server Started");
}


void availableMessage() {
  if (client && client.connected() && client.available()) {
    while (client.available()) {
      String message = client.readStringUntil('\n');
      Serial.println(message);
      char temp[50];
      message.toCharArray(temp, 50);
      client.flush();
    }
  }
}

void connectClient() {
  if (server.hasClient())
  {
    if (client = server.available()) {
      Serial.println("connected");
    }
  }
}

void StepperLoop( void * pvParameters ) {
  digitalWrite(2, HIGH);
  delay(1000);
  digitalWrite(2, LOW);
  delay(1000);
}



void loop()
{
 connectClient();
  availableMessage();
}

Проблема в том, что мой мигающий светодиод не длится 1 секунду, поэтому что-то его прерывает (по-видимому, это Wi-Fi, потому что это единственное другое, что работает). Это странно, потому что при каждом взгляде на inte rnet задача Wifi прикрепляется к Core 0, и я запускаю свой мерцательный код на Core 1, так что это не должно мешать работе.

Не могу показаться чтобы это исправить, кто-нибудь может мне помочь?

Кстати, я использую Arduino IDE

1 Ответ

1 голос
/ 13 января 2020

Что не мигает 1 секунда? Вы измерили время или могли увидеть его напрямую?

Ваш светодиод / шагер l oop не является oop! Если вы мигаете светодиодом более одного раза:

void StepperLoop( void * pvParameters ) {
    while (1) {
        digitalWrite(2, HIGH);
        delay(1000);
        digitalWrite(2, LOW);
        delay(1000);
    }
}
...