Dev-Branch

Hier die genauen Infos zur Version

ESPuino Software-revision: 20231204-1-DEV
ESPuino Git-revision: 79d0db5
Arduino Version: 2.0.11 (ESP-IDF 4.4.5)
Hardware: ESP32-D0WD-V3, Revision 3, CPU: 240 MHZ
Freier Heap: 77496 Bytes
Größter freier Heap-Block: 4128756 Bytes
Freier PS-RAM: 4130659 Bytes
Aktuelle IP-Adresse: 192.168.178.173
WLAN Signalstärke: -81 dBm
Audio-Gesamtspielzeit seit 6.12.2023: 
Aktuelle Batteriespannung: 3.65 V
Aktuelle Batterieladung: 100.0 %

Soll ich die beiden Setting Dateien nochmal posten ?

Ich hatte gestern erst die Source neu aus git in VS geladen in ein neues Projekt und dort dann nur die Anpassungen in den Settings gemacht. Dann heute morgen nochmal wie gesagt Full Clean und Erase Flash. Es sollten keine Leichen vorhanden sein. Ich checke gleich mal die MP3s mit einem anderen Tool zur Sicherheit.

Vielen Dank

So, ich hoffe ich nerve hier niemanden :slight_smile:

Ich habe nun folgendes nochmal probiert:

  • DEV neu von Github als ZIP geladen und in VS geladen. Gewartet bis alles fertig war, dann die Plattform auf lolin_d32_pro_sdmmc_pe umgestellt, gewartet bis alles fertig war.

  • in der settings-lolin_d32_pro_sdmmc_pe.h

#define POWER                           115          
    #ifdef POWER
        #define INVERT_POWER  
  • auf dem ESP einen Erase Flash gemacht, einmal power off und wieder an den usb dran.

  • in der settings.h folgende Dinge eingestellt:

#define PORT_EXPANDER_ENABLE          // When enabled, buttons can be connected via port-expander PCA9555 (https://forum.espuino.de/t/einsatz-des-port-expanders-pca9555/306)
	//#define I2S_COMM_FMT_LSB_ENABLE       // Enables FMT instead of MSB for I2S-communication-format. Used e.g. by PT2811. Don't enable for MAX98357a, AC101 or PCM5102A)
	#define MDNS_ENABLE                     // When enabled, you don't have to handle with ESPuino's IP-address. If hostname is set to "ESPuino", you can reach it via ESPuino.local
	//#define MQTT_ENABLE                   // Make sure to configure mqtt-server and (optionally) username+pwd
	#define FTP_ENABLE                      // Enables FTP-server; DON'T FORGET TO ACTIVATE AFTER BOOT BY PRESSING PAUSE + NEXT-BUTTONS (IN PARALLEL)!
	#define NEOPIXEL_ENABLE                 // Don't forget configuration of NUM_LEDS if enabled
	//#define NEOPIXEL_REVERSE_ROTATION     // Some Neopixels are adressed/soldered counter-clockwise. This can be configured here.
	#define LANGUAGE DE                     // DE = deutsch; EN = english
	//#define STATIC_IP_ENABLE              // DEPRECATED: Enables static IP-configuration (change static ip-section accordingly)
	#define HEADPHONE_ADJUST_ENABLE         // Used to adjust (lower) volume for optional headphone-pcb (refer maxVolumeSpeaker / maxVolumeHeadphone) and to enable stereo (if PLAY_MONO_SPEAKER is set)
	#define PLAY_MONO_SPEAKER             // If only one speaker is used enabling mono should make sense. Please note: headphones is always stereo (if HEADPHONE_ADJUST_ENABLE is active)
	#define SHUTDOWN_IF_SD_BOOT_FAILS       // Will put ESP to deepsleep if boot fails due to SD. Really recommend this if there's in battery-mode no other way to restart ESP! Interval adjustable via deepsleepTimeAfterBootFails.
	#define MEASURE_BATTERY_VOLTAGE         // Enables battery-measurement via GPIO (ADC) and voltage-divider
	//#define MEASURE_BATTERY_MAX17055      // Enables battery-measurement via external fuel gauge (MAX17055)
	#define SHUTDOWN_ON_BAT_CRITICAL      // Whether to turn off on critical battery-level (only used if MEASURE_BATTERY_XXX is active)
	//#define PLAY_LAST_RFID_AFTER_REBOOT   // When restarting ESPuino, the last RFID that was active before, is recalled and played
	//#define USE_LAST_VOLUME_AFTER_REBOOT  // Remembers the volume used at last shutdown after reboot
	//#define USEROTARY_ENABLE                // If rotary-encoder is used (don't forget to review WAKEUP_BUTTON if you disable this feature!)
	#define BLUETOOTH_ENABLE                // If enabled and bluetooth-mode is active, you can stream to your ESPuino or to a headset via bluetooth (a2dp-sink & a2dp-source). Note: This feature consumes a lot of resources and the available flash/ram might not be sufficient.
	//#define IR_CONTROL_ENABLE             // Enables remote control (https://forum.espuino.de/t/neues-feature-fernsteuerung-per-infrarot-fernbedienung/265)
	//#define PAUSE_WHEN_RFID_REMOVED       // Playback starts when card is applied and pauses automatically, when card is removed (https://forum.espuino.de/t/neues-feature-pausieren-wenn-rfid-karte-entfernt-wurde/541)
	#define PAUSE_ON_MIN_VOLUME           // When playback is active and volume is changed to zero, playback is paused automatically. Playback is continued if volume reaches 1. (https://forum.espuino.de/t/neues-feature-pausieren-wenn-rfid-karte-entfernt-wurde/541)
	//#define DONT_ACCEPT_SAME_RFID_TWICE   // RFID-reader doesn't accept the same RFID-tag twice in a row (unless it's a modification-card or RFID-tag is unknown in NVS). Flag will be ignored silently if PAUSE_WHEN_RFID_REMOVED is active. (https://forum.espuino.de/t/neues-feature-dont-accept-same-rfid-twice/1247)
	#define SAVE_PLAYPOS_BEFORE_SHUTDOWN  // When playback is active and mode audiobook was selected, last play-position is saved automatically when shutdown is initiated
	#define SAVE_PLAYPOS_WHEN_RFID_CHANGE // When playback is active and mode audiobook was selected, last play-position is saved automatically for old playlist when new RFID-tag is applied
	//#define HALLEFFECT_SENSOR_ENABLE      // Support for hallsensor. For fine-tuning please adjust HallEffectSensor.h Please note: only user-support provided (https://forum.espuino.de/t/magnetische-hockey-tags/1449/35)
	#define VOLUMECURVE 0 
.
.
.
//################## select RFID reader ##############################
	//#define RFID_READER_TYPE_MFRC522_SPI    // use MFRC522 via SPI
	//#define RFID_READER_TYPE_MFRC522_I2C  // use MFRC522 via I2C
	#define RFID_READER_TYPE_PN5180       // use PN5180 via SPI
.
.
.
// *****BUTTON*****        *****ACTION*****
	#define BUTTON_0_SHORT    CMD_VOLUMEUP
	#define BUTTON_1_SHORT    CMD_VOLUMEDOWN
	#define BUTTON_2_SHORT    CMD_NOTHING   // CMD_PLAYPAUSE
	#define BUTTON_3_SHORT    CMD_NOTHING
	#define BUTTON_4_SHORT    CMD_PREVTRACK
	#define BUTTON_5_SHORT    CMD_NEXTTRACK

	#define BUTTON_0_LONG     CMD_VOLUMEUP
	#define BUTTON_1_LONG     CMD_VOLUMEDOWN
	#define BUTTON_2_LONG     CMD_NOTHING
	#define BUTTON_3_LONG     CMD_NOTHING
	#define BUTTON_4_LONG     CMD_SEEK_BACKWARDS
	#define BUTTON_5_LONG     CMD_SEEK_FORWARDS

	#define BUTTON_MULTI_01   CMD_SLEEPMODE  
	#define BUTTON_MULTI_02   CMD_NOTHING
	#define BUTTON_MULTI_03   CMD_NOTHING
	#define BUTTON_MULTI_04   CMD_NOTHING
	#define BUTTON_MULTI_05   CMD_NOTHING
	#define BUTTON_MULTI_12   CMD_NOTHING
	#define BUTTON_MULTI_13   CMD_NOTHING
	#define BUTTON_MULTI_14   CMD_NOTHING
	#define BUTTON_MULTI_15   CMD_NOTHING
	#define BUTTON_MULTI_23   CMD_NOTHING
	#define BUTTON_MULTI_24   CMD_NOTHING
	#define BUTTON_MULTI_25   CMD_NOTHING
	#define BUTTON_MULTI_34   CMD_NOTHING
	#define BUTTON_MULTI_35   CMD_NOTHING
	#define BUTTON_MULTI_45   CMD_MEASUREBATTERY
.
.
.
// (optinal) Neopixel
	#ifdef NEOPIXEL_ENABLE
		#define NUM_INDICATOR_LEDS		8         	// number of Neopixel LEDs (formerly NUM_LEDS)
  • Dann habe ich den code kompiliert und auf den ESPuino geladen

  • Dort dann das WLAN eingerichtet

  • Dann bekomme ich unter Info folgende Anzeige:

ESPuino Software-revision: 20231204-1-DEV
ESPuino Git-revision: unknown
Arduino Version: 2.0.11 (ESP-IDF 4.4.5)
Hardware: ESP32-D0WD-V3, Revision 3, CPU: 240 MHZ
Freier Heap: 78632 Bytes
Größter freier Heap-Block: 4128756 Bytes
Freier PS-RAM: 4130659 Bytes
Aktuelle IP-Adresse: 192.168.178.173
WLAN Signalstärke: -71 dBm
Audio-Gesamtspielzeit seit 6.12.2023: --
Aktuelle Batteriespannung: 3.38 V
Aktuelle Batterieladung: 31.7 %

Warum allerdings bei Git Revision: unknown steht, weiß ich nicht… Weil ich die ZIP genutzt habe ? In Github steht 63024cf…

Dann spiele ich die aus dem WebUI heraus eine Datei ab (Spieluhr).

Das hört sich dann wie folgt an:

mit folgendem Log:

I [121] Maximale Inaktivitätszeit wurde aus NVS geladen: 10 Minuten
D [172] RFID-Tags koennen jetzt gescannt werden...
N [173] Port-expander gefunden
N [175] Interrupt für Port-Expander aktiviert
I [176] Zyklus für Batteriemessung fuer Neopixel-Anzeige aus NVS geladen: 10 Minuten
I [187] Unterer Spannungslevel (Batterie) fuer Neopixel-Anzeige aus NVS geladen: 3.00V
I [189] Oberer Spannungslevel (Batterie) fuer Neopixel-Anzeige aus NVS geladen: 4.20V
I [200] Spannungslevel (Batterie) fuer Niedrig-Warnung via Neopixel aus NVS geladen: 3.40V
I [212] Spannungslevel (Batterie) fuer Kritisch-Warnung via Neopixel aus NVS geladen: 3.10V
I [215] Initiale Lautstärke wurde aus NVS geladen: 10
I [225] Maximale Lautstärke für Lautsprecher wurde aus NVS geladen: 1
I [226] Maximale Lautstärke für Kopfhörer wurde aus NVS geladen: 1
N [236] Lautsprecher eingeschaltet
I [237] Maximale Lautstärke wurde gesetzt auf: 1
I [290] Initiale LED-Helligkeit wurde aus NVS geladen: 16
I [290] LED-Helligkeit für Nachtmodus wurde aus NVS geladen: 2
N [357] Software-revision: 20231204-1-DEV
N [358] Git-revision: unknown
N [358] Arduino version: 2.0.11
N [368] ESP-IDF version: 4.4.5
N [368] Wakeup was not caused by deepsleep: 0
N [368] Versuche SD-Karte im SD_MMC-Modus (1 Bit) zu mounten...
D [379] SD card type: SDHC
N [379] SD-Kartengröße / freier Speicherplatz: 122240 MB / 100400 MB
I [390] FTP-User wurde aus NVS geladen: esp32
I [391] FTP-Passwort wurde aus NVS geladen: esp32
I [392] Hostname aus NVS geladen: ESPuino
N [394] SSID 0 von NVS geladen: HOMEnet
D [429] PN5180 firmware version=4.1
D [520] RFID-Tags koennen jetzt gescannt werden...
N [579] Versuche mit WLAN 'HOMEnet' zu verbinden...
D [620] Freier Heap-Speicher nach Setup-Routine: 115116
D [621] PSRAM: 4191963 bytes
D [621] Flash-size: 16777216 bytes
D [621] Datum/Uhrzeit (Interne RTC): 06.12.2023, 20:06:33
N [3708] Versuche mit WLAN 'HOMEnet' zu verbinden...
N [8491] WLAN 'HOMEnet_Gast'gefunden (Signalstärke: -60 dBm, Kanal: 6, MAC-Adresse: D4:86:60:54:C5:00)
N [8492] WLAN 'HOMEnet'gefunden (Signalstärke: -62 dBm, Kanal: 6, MAC-Adresse: D4:86:60:54:C4:FE)
N [8502] WLAN 'HOMEnet'gefunden (Signalstärke: -71 dBm, Kanal: 6, MAC-Adresse: E4:75:DC:30:E2:AC)
N [8513] WLAN 'MagentaWLAN-RVPM'gefunden (Signalstärke: -77 dBm, Kanal: 11, MAC-Adresse: 64:CC:22:ED:97:99)
N [8523] WLAN 'HOMEnet'gefunden (Signalstärke: -82 dBm, Kanal: 6, MAC-Adresse: 18:82:8C:42:A7:72)
N [8533] WLAN 'ICKARUS'gefunden (Signalstärke: -88 dBm, Kanal: 1, MAC-Adresse: 34:81:C4:C6:0D:91)
N [8534] WLAN 'FRITZ!Box 7362 SL'gefunden (Signalstärke: -89 dBm, Kanal: 4, MAC-Adresse: 5C:49:79:71:27:1F)
N [8593] Versuche mit WLAN 'HOMEnet' zu verbinden...
I [10005] Aktuelle Batteriespannung: 3.49 V
I [10008] Aktuelle Batterieladung: 40.78 %
N [13769] Versuche mit WLAN 'HOMEnet' zu verbinden...
N [18923] Versuche mit WLAN 'HOMEnet' zu verbinden...
N [21159] Verbunden mit WLAN 'HOMEnet' (Signalstärke: -70 dBm, Kanal: 6, MAC-Adresse: E4:75:DC:30:E2:AC)
N [21159] Aktuelle IP: 192.168.178.173
N [21170] Synchronisiere Uhrzeit via NTP...
N [21182] mDNS gestartet: http://ESPuino.local
N [21188] HTTP-Server gestartet.
N [23357] Datum/Uhrzeit empfangen von NTP-Server: 06.12.2023, 20:06:56
D [28599] ws[/ws][1] connect
D [28601] ws[/ws][1] disconnect
D [28756] logo request
D [28860] ws[/ws][2] connect
D [60002] RSSI: -70 dBm
D [354984] Freier Speicher: 72708 Bytes
N [354984] Playlist-Generierung
I [354984] Dateimodus erkannt.
N [354985] Modus: Einzelner Track
N [355004] Neue Playlist mit 1 Titel(n) empfangen
D [355004] Free heap: 75868
I [355064] info        : PSRAM found, inputBufferSize: 638965 bytes
I [355065] info        : buffers freed, free Heap: 80644 bytes
I [355065] info        : Reading file: "/Spieluhr/Spieluhr.mp3"
I [355100] info        : MP3Decoder has been initialized, free Heap: 53032 bytes , free stack 2948 DWORDs
N [355104] '/Spieluhr/Spieluhr.mp3' wird abgespielt (1 von 1)
I [355122] info        : Content-Length: 17774089
I [355122] info        : ID3 framesSize: 2048
I [355122] info        : ID3 version: 2.3
I [355139] info        : ID3 normal frames
I [355168] id3data     : Artist: Sterntaler
I [355197] id3data     : Title: Schlaflied
D [355233] no cover image for SD-card audio
I [355265] id3data     : SettingsForEncoding: fre:ac v1.1.7
I [355293] info        : Audio-Length: 17772041
I [355415] info        : stream ready
I [355417] info        : syncword found at pos 0
I [355425] info        : Channels: 2
I [355425] info        : SampleRate: 44100
I [355425] info        : BitsPerSample: 16
I [355425] info        : BitRate: 128000
I [380369] Kontroll-Kommando empfangen via Queue: 3
I [380369] Kommando: Pause

Auch mit neugestartetem ESPuino und start per RFID ohne offenem Webinterface hört es sich so an. Ausgabe im Serial Monitor im VS:

N [589] Software-revision: 20231204-1-DEV
N [589] Git-revision: unknown
N [589] Arduino version: 2.0.11
N [599] ESP-IDF version: 4.4.5
N [599] Wakeup was not caused by deepsleep: 0
N [600] Versuche SD-Karte im SD_MMC-Modus (1 Bit) zu mounten...
D [610] SD card type: SDHC
N [610] SD-Kartengröße / freier Speicherplatz: 122240 MB / 100400 MB
I [621] FTP-User wurde aus NVS geladen: esp32
I [622] FTP-Passwort wurde aus NVS geladen: esp32
I [624] Hostname aus NVS geladen: ESPuino
N [625] SSID 0 von NVS geladen: HOMEnet
D [752] PN5180 firmware version=4.1
D [765] RFID-Tags koennen jetzt gescannt werden...
N [812] Versuche mit WLAN 'HOMEnet' zu verbinden...
D [855] Freier Heap-Speicher nach Setup-Routine: 115100
D [856] PSRAM: 4191963 bytes
D [856] Flash-size: 16777216 bytes
D [856] Datum/Uhrzeit (Interne RTC): 06.12.2023, 20:37:29
N [3939] Versuche mit WLAN 'HOMEnet' zu verbinden...
N [8731] WLAN 'HOMEnet_Gast'gefunden (Signalstärke: -66 dBm, Kanal: 6, MAC-Adresse: D4:86:60:54:C5:00)
N [8732] WLAN 'HOMEnet'gefunden (Signalstärke: -66 dBm, Kanal: 6, MAC-Adresse: D4:86:60:54:C4:FE)
N [8742] WLAN 'HOMEnet'gefunden (Signalstärke: -71 dBm, Kanal: 6, MAC-Adresse: E4:75:DC:30:E2:AC)
N [8753] WLAN 'HOMEnet'gefunden (Signalstärke: -77 dBm, Kanal: 6, MAC-Adresse: 18:82:8C:42:A7:72)
N [8763] WLAN 'MagentaWLAN-RVPM'gefunden (Signalstärke: -82 dBm, Kanal: 11, MAC-Adresse: 64:CC:22:ED:97:99)
N [8774] WLAN 'ICKARUS'gefunden (Signalstärke: -84 dBm, Kanal: 1, MAC-Adresse: 34:81:C4:C6:0D:91)
N [8774] WLAN 'FRITZ!Box 7530 FO'gefunden (Signalstärke: -86 dBm, Kanal: 1, MAC-Adresse: DC:15:C8:0C:10:63)
N [8784] WLAN 'FRITZ!Box 7530 FO'gefunden (Signalstärke: -92 dBm, Kanal: 6, MAC-Adresse: DC:15:C8:0B:E5:67)
N [8842] Versuche mit WLAN 'HOMEnet' zu verbinden...
I [10006] Aktuelle Batteriespannung: 3.48 V
I [10009] Aktuelle Batterieladung: 39.81 %
N [14029] Versuche mit WLAN 'HOMEnet' zu verbinden...
N [19203] Versuche mit WLAN 'HOMEnet' zu verbinden...
N [21050] Verbunden mit WLAN 'HOMEnet' (Signalstärke: -71 dBm, Kanal: 6, MAC-Adresse: E4:75:DC:30:E2:AC)
N [21050] Aktuelle IP: 192.168.178.173
N [21061] Synchronisiere Uhrzeit via NTP...
N [21073] mDNS gestartet: http://ESPuino.local
N [21080] HTTP-Server gestartet.
N [25934] Datum/Uhrzeit empfangen von NTP-Server: 06.12.2023, 20:37:54
N [42350] RFID-Karte erkannt: 63-36-46-f7 
N [42350] Card type: ISO-14443
I [42354] RFID-Karte empfangen: 099054070247
D [42371] Freier Speicher: 76832 Bytes
N [42371] Playlist-Generierung
I [42371] Dateimodus erkannt.
N [42371] Modus: Einzelner Track
N [42382] Neue Playlist mit 1 Titel(n) empfangen
D [42382] Free heap: 81256
I [42439] info        : PSRAM found, inputBufferSize: 638965 bytes
I [42439] info        : buffers freed, free Heap: 81256 bytes
I [42440] info        : Reading file: "/Spieluhr/Spieluhr.mp3"
I [42475] info        : MP3Decoder has been initialized, free Heap: 53508 bytes , free stack 2952 DWORDs
N [42476] '/Spieluhr/Spieluhr.mp3' wird abgespielt (1 von 1)
I [42494] info        : Content-Length: 17774089
I [42494] info        : ID3 framesSize: 2048
I [42494] info        : ID3 version: 2.3
I [42511] info        : ID3 normal frames
I [42541] id3data     : Artist: Sterntaler
I [42570] id3data     : Title: Schlaflied
I [42627] id3data     : SettingsForEncoding: fre:ac v1.1.7
I [42655] info        : Audio-Length: 17772041
I [42777] info        : stream ready
I [42779] info        : syncword found at pos 0
I [42787] info        : Channels: 2
I [42787] info        : SampleRate: 44100
I [42787] info        : BitsPerSample: 16
I [42787] info        : BitRate: 128000
D [45496] ws[/ws][1] connect
D [45632] no cover image for SD-card audio
D [60019] RSSI: -71 dBm

und es sollte sich so anhören:

Die Datei selbst ist etwas groß, da es lange laufen sollte :wink: die habe ich hier zum download bereitgestellt:

Ich hoffe ich habe alles so gut es geht, zusammengetragen und nichts vergessen.

Vielen Dank

@Dotmatrix812 Danke für die genaue Beschreibung, aber leider kann ich das Stottern nicht reproduzieren!

Ich verwende die gleiche Hardware, Softwarestand ist aktuell, gleiche Einstellungen wie bei Dir. Datei Spieluhr_Spieluhr.mp3 hochgeladen und dazu eine Karte angelernt mit Single-Track & abgespielt. Dann nochmal über WebUI gestartet. In beiden Fällen glasklarer Sound. Klingt bei DIr wie die Probleme die letzte Woche gelöst werden konnten…
Ich habe jetzt keine Idee woran es liegen könnte, findet Ihr den Fehler?

Edit: Schau nochmal ob Du in der platform.ini genau diesen Stand der Audiobibliothek hast:

lib_deps =
	https://github.com/schreibfaul1/ESP32-audioI2S.git#2a0ab81

@tueddy Ja. Ist drin. Wäre es einen Versuch wert deine Firmware Datei zu flashen ? Die Buttons würden dann nicht passen. Aber das wäre ja zum testen erst mal egal. Oder ?

Kann das Problem mit der Audiowidergabe leider nachstellen. Ich untersuche das mal noch weiter. Vielleicht finde ich ja heraus woran es liegt…

@Joe91 ich konnte mit einer Firmware Datei von @tueddy die Dateien in einem schnellen Test ohne Störungen abspielen. Ich komme aber erst heute spät Abend wahrscheinlich dazu es nochmal ausgiebig zu testen. Ich vermute das es bei mir ggfls. am Visual Studio liegt. Das probiere ich heute Abend zu testen einmal auf meinem Windows Rechner (statt Mac) und auf einer virtuellen Linux Maschine. Mal sehen… Ich gebe Rückmeldung.

1 „Gefällt mir“

Kann es jetzt nicht mehr nachstellen. Nach full-clean und clean kann ich den dev mit angepassten settings ohne probleme laufen lassen. Richtig komisch das ganze. Ich versuche dem trotzdem noch bisschen auf den Grund zu gehen, wie man das hinbekommt…

Ich hatte auf einem komplett neu aufgesetzten Visual Studio direkt das Problem. Nun habe ich nach @tueddy Rat alle Einstellungen auf Standard gelassen und nur meine Hardware eingestellt. Dann lief die Musik super. Ich werde jetzt anfangen nach und nach die Einstellungen anzupassen. Dann mal sehen ab wann es eventuell wieder auftritt. Ich werde berichten.

Habe gerade auch noch herausgefunden, dass wenn ich ein paar zusätzliche Zeilen Code hinzufüge, genau das Verhalten wieder auftritt, mit zusätzlich z.B. Exceptions bei Wiedergabe über den Webserver oder ähnliches. Eventuell sind wir gerade mit irgendwas total an der Grenze, so dass minimale Änderungen oder kleinste Anpassungen bei den Settings ein Kippen bedeuten?
Finde es aktuell schwer zu debuggen, mache aber mal weiter…

2 „Gefällt mir“

Ich habe bis jetzt folgendes geschafft.

Standard ohne eigene Einstellungen, nur Hardware angepasst.

Play_Mono_Speaker kann ich rein nehmen.

Shutdown_On_Bat_Critical auch.

wenn ich USEROTARY_ENABLE auskommentiere, dann stottert es.

Dann habe ich alles ausser Rotary konfiguriert was ich brauche:

#define PORT_EXPANDER_ENABLE          // When enabled, buttons can be connected via port-expander PCA9555 (https://forum.espuino.de/t/einsatz-des-port-expanders-pca9555/306)
	//#define I2S_COMM_FMT_LSB_ENABLE       // Enables FMT instead of MSB for I2S-communication-format. Used e.g. by PT2811. Don't enable for MAX98357a, AC101 or PCM5102A)
	#define MDNS_ENABLE                     // When enabled, you don't have to handle with ESPuino's IP-address. If hostname is set to "ESPuino", you can reach it via ESPuino.local
	//#define MQTT_ENABLE                   // Make sure to configure mqtt-server and (optionally) username+pwd
	#define FTP_ENABLE                      // Enables FTP-server; DON'T FORGET TO ACTIVATE AFTER BOOT BY PRESSING PAUSE + NEXT-BUTTONS (IN PARALLEL)!
	#define NEOPIXEL_ENABLE                 // Don't forget configuration of NUM_LEDS if enabled
	//#define NEOPIXEL_REVERSE_ROTATION     // Some Neopixels are adressed/soldered counter-clockwise. This can be configured here.
	#define LANGUAGE DE                     // DE = deutsch; EN = english
	//#define STATIC_IP_ENABLE              // DEPRECATED: Enables static IP-configuration (change static ip-section accordingly)
	#define HEADPHONE_ADJUST_ENABLE         // Used to adjust (lower) volume for optional headphone-pcb (refer maxVolumeSpeaker / maxVolumeHeadphone) and to enable stereo (if PLAY_MONO_SPEAKER is set)
	#define PLAY_MONO_SPEAKER             // If only one speaker is used enabling mono should make sense. Please note: headphones is always stereo (if HEADPHONE_ADJUST_ENABLE is active)
	#define SHUTDOWN_IF_SD_BOOT_FAILS       // Will put ESP to deepsleep if boot fails due to SD. Really recommend this if there's in battery-mode no other way to restart ESP! Interval adjustable via deepsleepTimeAfterBootFails.
	#define MEASURE_BATTERY_VOLTAGE         // Enables battery-measurement via GPIO (ADC) and voltage-divider
	//#define MEASURE_BATTERY_MAX17055      // Enables battery-measurement via external fuel gauge (MAX17055)
	#define SHUTDOWN_ON_BAT_CRITICAL      // Whether to turn off on critical battery-level (only used if MEASURE_BATTERY_XXX is active)
	//#define PLAY_LAST_RFID_AFTER_REBOOT   // When restarting ESPuino, the last RFID that was active before, is recalled and played
	//#define USE_LAST_VOLUME_AFTER_REBOOT  // Remembers the volume used at last shutdown after reboot
	#define USEROTARY_ENABLE                // If rotary-encoder is used (don't forget to review WAKEUP_BUTTON if you disable this feature!)
	#define BLUETOOTH_ENABLE                // If enabled and bluetooth-mode is active, you can stream to your ESPuino or to a headset via bluetooth (a2dp-sink & a2dp-source). Note: This feature consumes a lot of resources and the available flash/ram might not be sufficient.
	//#define IR_CONTROL_ENABLE             // Enables remote control (https://forum.espuino.de/t/neues-feature-fernsteuerung-per-infrarot-fernbedienung/265)
	#define PAUSE_WHEN_RFID_REMOVED       // Playback starts when card is applied and pauses automatically, when card is removed (https://forum.espuino.de/t/neues-feature-pausieren-wenn-rfid-karte-entfernt-wurde/541)
	#define PAUSE_ON_MIN_VOLUME           // When playback is active and volume is changed to zero, playback is paused automatically. Playback is continued if volume reaches 1. (https://forum.espuino.de/t/neues-feature-pausieren-wenn-rfid-karte-entfernt-wurde/541)
	//#define DONT_ACCEPT_SAME_RFID_TWICE   // RFID-reader doesn't accept the same RFID-tag twice in a row (unless it's a modification-card or RFID-tag is unknown in NVS). Flag will be ignored silently if PAUSE_WHEN_RFID_REMOVED is active. (https://forum.espuino.de/t/neues-feature-dont-accept-same-rfid-twice/1247)
	#define SAVE_PLAYPOS_BEFORE_SHUTDOWN  // When playback is active and mode audiobook was selected, last play-position is saved automatically when shutdown is initiated
	#define SAVE_PLAYPOS_WHEN_RFID_CHANGE // When playback is active and mode audiobook was selected, last play-position is saved automatically for old playlist when new RFID-tag is applied
	//#define HALLEFFECT_SENSOR_ENABLE      // Support for hallsensor. For fine-tuning please adjust HallEffectSensor.h Please note: only user-support provided (https://forum.espuino.de/t/magnetische-hockey-tags/1449/35)
	#define VOLUMECURVE 0 					// 0=square, 1=logarithmic (1 is more flatten at lower volume)

das geht auch. Wenn ich nun aber die Button Zuweisung anpasse, dann stottert es auch wieder.

Kann das also irgendwas mit Button bzw. Rotary zu tun haben ?!

1 „Gefällt mir“

Ich kann bestätigen das es aktuell Probleme/Stottern gibt wenn das Setting USEROTARY_ENABLE nicht aktiviert ist…

2 „Gefällt mir“

Ich habe es auch dann, wenn Rotary drin ist und die ich die Button Zuweisung ändere. Also welche Funktion auf welchem Button.

Kannst du mal folgendes testen:
Bei mir klappt es wieder, wenn ich in der main.cpp in der loop() mehrere Delays einbaue. Die Funktion sieht bei mir dann ungefähr so aus:

void loop() {
	if (OPMODE_BLUETOOTH_SINK == System_GetOperationMode()) {
		// bluetooth speaker mode
		Bluetooth_Cyclic();
	} else if (OPMODE_BLUETOOTH_SOURCE == System_GetOperationMode()) {
		// bluetooth headset mode
		Bluetooth_Cyclic();
		RotaryEncoder_Cyclic();
	} else {
		// normal mode
		Wlan_Cyclic();
		Web_Cyclic();
		vTaskDelay(1);
		Ftp_Cyclic();
		RotaryEncoder_Cyclic();
		Mqtt_Cyclic();
	}
	vTaskDelay(1);
	AudioPlayer_Cyclic();
	vTaskDelay(1);
	Battery_Cyclic();
	// Port_Cyclic(); // called by button (controlled via hw-timer)
	vTaskDelay(1);
	Button_Cyclic();
	vTaskDelay(1);
	System_Cyclic();
	vTaskDelay(1);
	Rfid_PreferenceLookupHandler();

#ifdef PLAY_LAST_RFID_AFTER_REBOOT
	recoverBootCountFromNvs();
	recoverLastRfidPlayedFromNvs();
#endif

	IrReceiver_Cyclic();
	vTaskDelay(2);

#ifdef HALLEFFECT_SENSOR_ENABLE
	gHallEffectSensor.cyclic();
#endif
}

Meine These dazu: eventuell blockiert die main-loop in manchen Umständen zu lange um den Audio-Task noch zufrieden zu stellen…

Zusätzlich habe ich bei mir den Playlist-Fix reverted um die Race-Condition zu umgehen…

1 „Gefällt mir“

@Joe91 die Delays kann ich mal nachher testen. Ich weiß nur nicht wie ich den Playlist-Fix reverte… :smiling_face:

1 „Gefällt mir“

Der Revert ist nicht mehr nötig, da @tueddy schon einen fix von @laszloh gemerged hat, der das problematische Verhalten verhindert. Also einfach nochmal den aktuellen dev-branch holen und mit deinen Settings und zusätzlich dem delay in der main-loop bauen.

1 „Gefällt mir“

Das könnte sein, da der loop-task auf dem gleichen Kern läuft wie der Audio-Task.
Wird das Problem besser, wenn der Audio Task auf Core 0 gelegt wird?

Das klappt nicht so gut, da dort standardmäßig Bluetooth / Wifi und so Zeug läuft. Aber ich teste mal über die sdkconfig.defaults den loop-task auf core 0 zu schieben. Mal schauen ob das negative Auswirkungen hat :slight_smile:

Ging schnell: verständlicherweise hat es jetzt merkbare Latenzen bei z.B. der Reaktion auf die Buttons oder den Drehencoder. Halt auf die Dinge in der main-loop :slight_smile: … Allerdings keinerlei Audio-Artefakte mehr und soweit stabil (zumindest auf den Ersten Blick).

Eventuell wäre auch eine Lösung verschiedene Zeit-Slots zu definieren und die jeweiligen Aufgaben der notwendigen Update-Geschwindigkeit zuzuweisen.
Also z.B. braucht der System_Cyclic oder Battery_Cyclic nicht so oft dran kommen.
Da würde ein 100 ms Zyklus locker reichen.
Während wir die Buttons vielleicht in einen 10 ms Zyklus stecken könnten.
Das könnte die Last dort deutlich reduzieren und wenn man diese Tasks dann noch unterbrechbar macht auch mögliche Konflikte verhindern…

Ja kann auch bestätigen, dass es nun vom Ton her sauber läuft !

Klasse !

1 „Gefällt mir“

Ich habe keine Audio-Aussetzer mehr wenn ich die 5ms Delay in der Main-Loop auf vor und nach AudioPlayer_Cyclic() verteile.

void loop() {
	if (OPMODE_BLUETOOTH_SINK == System_GetOperationMode()) {
		// bluetooth speaker mode
		Bluetooth_Cyclic();
	} else if (OPMODE_BLUETOOTH_SOURCE == System_GetOperationMode()) {
		// bluetooth headset mode
		Bluetooth_Cyclic();
		RotaryEncoder_Cyclic();
	} else {
		// normal mode
		Wlan_Cyclic();
		Web_Cyclic();
		Ftp_Cyclic();
		RotaryEncoder_Cyclic();
		Mqtt_Cyclic();
	}
	vTaskDelay(portTICK_PERIOD_MS * 1u); // !!! Hier
	AudioPlayer_Cyclic();
	vTaskDelay(portTICK_PERIOD_MS * 1u); // !!! und hier
	Battery_Cyclic();
	// Port_Cyclic(); // called by button (controlled via hw-timer)
	Button_Cyclic();
	System_Cyclic();
	Rfid_PreferenceLookupHandler();

#ifdef PLAY_LAST_RFID_AFTER_REBOOT
	recoverBootCountFromNvs();
	recoverLastRfidPlayedFromNvs();
#endif

	IrReceiver_Cyclic();
	vTaskDelay(portTICK_PERIOD_MS * 3u); // !!! vorher 5ms

#ifdef HALLEFFECT_SENSOR_ENABLE
	gHallEffectSensor.cyclic();
#endif
}

vTaskDelay Wartezeit wird hier nicht länger sondern nur besser verteilt.

Natürlich können wir auch noch schauen ob sich Rechenzeit einsparen lässt bzw. was genau die Ursache für die Unterbrechung ist.

3 „Gefällt mir“

Ich glaube es ist vor allem der nicht unterbrechbare Block. Sobald es mehrere Möglichkeiten für den Audio-Task gibt dann dran zu kommen, wenn er muss, ist es glaub kein Problem mehr.
Daher kann es gut sein, dass diese Aufteilung gut gewählt ist und völlig ausreicht :slight_smile: :+1:

4 „Gefällt mir“