Bonjour,
Je suis sur un projet de lecteur MP3 a base d'ESP32. J'utilise cette librairie
Hier quand j'ai fini ma session de code, tout allait bien. Aujourd'hui, je m'y remets, je lance arduino ide, il me propose une mise a jour des cartes ESP32, je le fait, je change quelques petits trucs dans le code, je lance, et ça plante. Ctrl Z en série pour revenir sur les modifications, et toujours pareil.
J'ai simplifié au maximum le code (lancer un mp3 dans le setup, sans passer par des menus etc ...) ça plante.
J'ai repris un code d'exemple de la librairie :
#include "Arduino.h"
#include "Audio.h"
#include "SD.h"
#include "FS.h"
#include <Wire.h>
#include <TFT_eSPI.h>
#include <SPI.h>
// microSD Card Reader connections
#define SD_CS 5
#define SPI_MOSI 21
#define SPI_MISO 19
#define SPI_SCK 18
// I2S Connections
#define I2S_DOUT 22
#define I2S_BCLK 26
#define I2S_LRC 25
// Create Audio object
Audio audio;
TFT_eSPI tft = TFT_eSPI(); // Invoke custom library
//digitalWrite(TFT_BL, 1);
int maxIndex;
uint32_t Freq = 0;
int Val;
String Btn,SongName;
String Status="Idle";
bool state=true;
bool Current_State=state;
int Current_Millis;
int Previous_Millis;
int Debounce=175;
int Xindex=0;
int Yindex=0;
String Liste[20];
File dir;
const char audioDir[] = "/";
void listDir(fs::FS &fs, const char * dirname, uint8_t levels); //proto
std::vector<char*> v_audioContent;
void setup()
{
pinMode(SD_CS, OUTPUT);
digitalWrite(SD_CS, HIGH);
// Initialize SPI bus for microSD Card
SPI.begin(SPI_SCK, SPI_MISO, SPI_MOSI);
// Start Serial Port
Serial.begin(115200);
// Start microSD Card
if(!SD.begin(SD_CS))
{
Serial.println("Error accessing microSD card!");
while(true);
}
// Setup I2S
audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT,-1,0);
// Set Volume
audio.setVolume(37);
audio.setTone(0,0,0);
dir = SD.open(audioDir);
listDir(SD, audioDir, 1);
if(v_audioContent.size() > 0)
{
const char* s = (const char*)v_audioContent[v_audioContent.size() -1];
Serial.printf("playing %s\n", s);
audio.connecttoFS(SD, s);
v_audioContent.pop_back();
}
}
void loop()
{
audio.loop();
}
void listDir(fs::FS &fs, const char * dirname, uint8_t levels)
{
Serial.printf("Listing directory: %s\n", dirname);
File root = fs.open(dirname);
if(!root){
Serial.println("Failed to open directory");
return;
}
if(!root.isDirectory()){
Serial.println("Not a directory");
return;
}
File file = root.openNextFile();
while(file){
if(file.isDirectory()){
Serial.print(" DIR : ");
Serial.println(file.name());
if(levels){
listDir(fs, file.path(), levels -1);
}
} else {
Serial.print(" FILE: ");
Serial.print(file.name());
Serial.print(" SIZE: ");
Serial.println(file.size());
v_audioContent.insert(v_audioContent.begin(), strdup(file.path()));
}
file = root.openNextFile();
}
Serial.printf("num files %i", v_audioContent.size());
root.close();
file.close();
}
voici ce qui en sort :
FILE: 08-First Day In Hell.mp3 SIZE: 7235202
FILE: 09-Saturnine.mp3 SIZE: 1892611
FILE: 10-Dreams Of Retribution.mp3 SIZE: 10057864
FILE: 11-My Shadow And I.mp3 SIZE: 6160042
FILE: 12-A Fight I Must Win.mp3 SIZE: 9860003
FILE: folder.jpg SIZE: 78435
num files 13playing /01-Set Flame To The Night.mp3
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x400efb3b PS : 0x00060e30 A0 : 0x800efc40 A1 : 0x3ffb2010
A2 : 0x00000000 A3 : 0xffffffff A4 : 0x0000002d A5 : 0x3ffb1ea0
A6 : 0x0000002d A7 : 0x3ffb1ea0 A8 : 0x80142462 A9 : 0x3ffb1c60
A10 : 0x00000000 A11 : 0x3ffb1fa0 A12 : 0x00000006 A13 : 0x00001000
A14 : 0x00000006 A15 : 0x3ffb1ec4 SAR : 0x00000004 EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000010 LBEG : 0x40087495 LEND : 0x400874a5 LCOUNT : 0xfffffffe
Backtrace: 0x400efb38:0x3ffb2010 0x400efc3d:0x3ffb2040 0x400db949:0x3ffb2060 0x400dde62:0x3ffb2080 0x400de532:0x3ffb2220 0x400d3032:0x3ffb2240 0x400f7d0e:0x3ffb2290
ELF file SHA256: 0f058e27183cc412
Rebooting...
ets Jul 29 2019 12:21:46
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:1344
load:0x40078000,len:13964
load:0x40080400,len:3600
entry 0x400805f0
Comme ce que j'ai constaté avec mon code, le listing des fichiers se fait bien c'est au moment de la lecture que ça plante.
J'ai essayé une autre carte ESP32, c'est la meme chose.
J'en suis venu a me dire que c'est la mise a jour des cartes ESP32 de l'IDE qui pourrait etre responsable de ça ... Est ce que c'est possible ?
J'ai essayé de changer le lien dans les préférences de l'IDE avec une plus ancienne : https://github.com/espressif/arduino-esp32/releases/download/2.0.9/package_esp32_dev_index.json
toujours pareil ...
Je ne sais plus quoi faire. Si quelqu'un a une idée ....
Merci