Forum: Mikrocontroller und Digitale Elektronik ESP32 andauern reset


von Johannes (Gast)


Lesenswert?

Hallo,
ich habe drei ESP32, mit denen ich ESP-NOW implementieren möchte.
Zunächst einen Master. Allerdings resettet sich der ESP immer, seitdem 
ich einen Task hinzugefügt habe.
main.c:
1
void app_main(void)
2
{
3
    static const char *TAG = "main";
4
5
    //Get the derived MAC address for each network interface
6
    uint8_t macAddr[6] = {0};;
7
    ESP_ERROR_CHECK_WITHOUT_ABORT(esp_read_mac(&macAddr[0], ESP_MAC_WIFI_STA));
8
    ESP_LOGI("WIFI_STA MAC", "0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x",
9
             macAddr[0], macAddr[1], macAddr[2],
10
             macAddr[3], macAddr[4], macAddr[5]);
11
12
    ESP_LOGI(TAG, "Starting program");
13
    //Initialize NVS
14
    esp_err_t ret = nvs_flash_init();
15
    if((ret == ESP_ERR_NVS_NO_FREE_PAGES) || (ret == ESP_ERR_NVS_NEW_VERSION_FOUND))
16
    {
17
      ESP_ERROR_CHECK(nvs_flash_erase());
18
      ret = nvs_flash_init();
19
    }
20
    ESP_ERROR_CHECK(ret);
21
    ESP_LOGI(TAG, "Done nvs_flash_init");
22
23
    ESP_LOGI(TAG, "Starting Tasks");
24
25
    initMasterTask();
26
27
    while(1)
28
    {
29
        vTaskDelay(2000 / portTICK_PERIOD_MS);
30
    }
31
}

master.c:
1
static void onDataSent(const uint8_t *mac_addr, esp_now_send_status_t status)
2
{
3
  ESP_LOGI(TAG, "Last Packet Send Status:\t%s", (status == ESP_NOW_SEND_SUCCESS ? "Delivery Success" : "Delivery Fail"));
4
}
5
6
7
static void masterTask(void* pvParameters)
8
{
9
    esp_err_t result;
10
    message_ts message_s;
11
12
    ESP_LOGI(TAG, "starting task");
13
14
    esp_now_peer_info_t peerInfo;
15
16
    ESP_LOGI(TAG, "esp_now_init()");
17
    ESP_ERROR_CHECK(esp_now_init());
18
19
    ESP_LOGI(TAG, "register onDataSent");
20
    esp_now_register_send_cb(onDataSent);
21
22
    memcpy(peerInfo.peer_addr, broadcastAddress, 6);
23
    peerInfo.channel = 0;
24
    peerInfo.encrypt = false;
25
26
    ESP_LOGI(TAG, "esp_now_add_peer");
27
    ESP_ERROR_CHECK(esp_now_add_peer(&peerInfo));
28
    message_s.id = 0x01u;
29
    message_s.x = 1u;
30
    message_s.y = 0u;
31
32
    while(1)
33
    {
34
        ESP_LOGI(TAG, "sendData");
35
        result = esp_now_send(broadcastAddress, (uint8_t*)&message_s, sizeof(message_s));
36
        message_s.x++;
37
        message_s.y--;
38
        vTaskDelay(2000 / portTICK_PERIOD_MS);
39
    }
40
}
41
42
43
void initMasterTask(void)
44
{
45
    xTaskCreate(masterTask, "masterTask", 100000, (void*)1, tskIDLE_PRIORITY, NULL);
46
}

im LOG kann ich sehen
1
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
2
configsip: 0, SPIWP:0xee
3
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
4
mode:DIO, clock div:2
5
load:0x3fff0030,len:4
6
load:0x3fff0034,len:7056
7
ho 0 tail 12 room 4
8
load:0x40078000,len:13212
9
load:0x40080400,len:4568
10
entry 0x400806f4
11
I (30) boot: ESP-IDF v4.2-dirty 2nd stage bootloader
12
I (30) boot: compile time 10:15:36
13
I (31) boot: chip revision: 1
14
I (34) boot_comm: chip revision: 1, min. bootloader chip revision: 0
15
I (41) boot.esp32: SPI Speed      : 40MHz
16
I (45) boot.esp32: SPI Mode       : DIO
17
I (50) boot.esp32: SPI Flash Size : 2MB
18
I (54) boot: Enabling RNG early entropy source...
19
I (60) boot: Partition Table:
20
I (63) boot: ## Label            Usage          Type ST Offset   Length
21
I (71) boot:  0 nvs              WiFi data        01 02 00009000 00006000
22
I (78) boot:  1 phy_init         RF data          01 01 0000f000 00001000
23
I (86) boot:  2 factory          factory app      00 00 00010000 00100000
24
I (93) boot: End of partition table
25
I (97) boot_comm: chip revision: 1, min. application chip revision: 0
26
I (104) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x097bc ( 38844) map
27
I (128) esp_image: segment 1: paddr=0x000197e4 vaddr=0x3ffb0000 size=0x021e0 (  8672) load
28
I (132) esp_image: segment 2: paddr=0x0001b9cc vaddr=0x40080000 size=0x00404 (  1028) load
29
I (135) esp_image: segment 3: paddr=0x0001bdd8 vaddr=0x40080404 size=0x04240 ( 16960) load
30
I (151) esp_image: segment 4: paddr=0x00020020 vaddr=0x400d0020 size=0x18970 (100720) map
31
I (191) esp_image: segment 5: paddr=0x00038998 vaddr=0x40084644 size=0x067a0 ( 26528) load
32
I (209) boot: Loaded app from partition at offset 0x10000
33
I (209) boot: Disabling RNG early entropy source...
34
I (210) cpu_start: Pro cpu up.
35
I (213) cpu_start: Application information:
36
I (218) cpu_start: Project name:     empty
37
I (223) cpu_start: App version:      cf459c5-dirty
38
I (228) cpu_start: Compile time:     Mar 13 2022 11:15:43
39
I (234) cpu_start: ELF file SHA256:  853443c441f6a1ce...
40
I (240) cpu_start: ESP-IDF:          v4.2-dirty
41
I (246) cpu_start: Starting app cpu, entry point is 0x400816cc
42
I (0) cpu_start: App cpu up.
43
I (256) heap_init: Initializing. RAM available for dynamic allocation:
44
I (263) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
45
I (269) heap_init: At 3FFB3F70 len 0002C090 (176 KiB): DRAM
46
I (275) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
47
I (282) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
48
I (288) heap_init: At 4008ADE4 len 0001521C (84 KiB): IRAM
49
I (294) cpu_start: Pro cpu start user code
50
I (313) spi_flash: detected chip: generic
51
I (313) spi_flash: flash io: dio
52
W (313) spi_flash: Detected size(4096k) larger than the size in the binary image header(2048k). Using the size in the binary image header.
53
I (324) cpu_start: Starting scheduler on PRO CPU.
54
I (0) cpu_start: Starting scheduler on APP CPU.
55
I (334) system_api: Base MAC address is not set
56
I (344) system_api: read default base MAC address from EFUSE
57
I (344) WIFI_STA MAC: 0x8c, 0xaa, 0xb5, 0x8b, 0x25, 0x50
58
I (354) main: Starting program
59
I (394) main: Done nvs_flash_init
60
I (394) main: Starting Tasks
61
I (404) master: starting task
62
I (404) master: esp_now_init()
63
Guru Meditation Error: Core  0 panic'ed (LoadProhibited). Exception was unhandled.
64
65
Core  0 register dump:
66
PC      : 0x400d74c0  PS      : 0x00060030  A0      : 0x800d2f83  A1      : 0x3ffd06c0
67
A2      : 0x00000000  A3      : 0x3ffb1428  A4      : 0x3ffb2a28  A5      : 0x00000194
68
A6      : 0x3f403004  A7      : 0x00000000  A8      : 0x80088390  A9      : 0x3ffd0660
69
A10     : 0x00000000  A11     : 0x00000005  A12     : 0x3f403068  A13     : 0x0000001f
70
A14     : 0x00000001  A15     : 0x00000001  SAR     : 0x00000004  EXCCAUSE: 0x0000001c
71
EXCVADDR: 0x0000003c  LBEG    : 0x400014fd  LEND    : 0x4000150d  LCOUNT  : 0xfffffffe
72
73
Backtrace:0x400d74bd:0x3ffd06c0 0x400d2f80:0x3ffd06e0 0x40084e01:0x3ffd0730
74
75
76
ELF file SHA256: 853443c441f6a1ce
77
78
Rebooting...
79
ets Jun  8 2016 00:22:57
80
81
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
82
configsip: 0, SPIWP:0xee
Allerdings bekomme ich auch einen reset, wenn ich alle esp 
funktionalitäten im masterTask auskommentiere.

von Johannes (Gast)


Lesenswert?

Wifi initialisieren hat das Problme behoben.
Des weiteren funktioniert es (bei mir) nicht
1
    memcpy(peerInfo.peer_addr, broadcastAddress, 6);
2
    peerInfo.channel = 0;
3
    peerInfo.encrypt = false;
4
    ESP_LOGI(TAG, "esp_now_add_peer");
5
    ESP_ERROR_CHECK(esp_now_add_peer(&peerInfo));

als ich peerInfo ebenfalls als const definiert habe ging auch dies.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.