Z21 Arduino Zentrale (ESP32): Unterschied zwischen den Versionen

Aus Digital Modellbahn
Zeile 77: Zeile 77:
 
|}
 
|}
  
 +
<!--
 
== Pinbelegung Co-Prozessor (UNO/NANO) ==
 
== Pinbelegung Co-Prozessor (UNO/NANO) ==
 
Hier eine Auflistung der Pinbelegung für den ATmega328p im Sketch "Arduino Z21 Zentrale-CO"
 
Hier eine Auflistung der Pinbelegung für den ATmega328p im Sketch "Arduino Z21 Zentrale-CO"
Zeile 99: Zeile 100:
 
| A5 || 28 PC5(ADC5/SCL) || Master-Prozessor || I2C
 
| A5 || 28 PC5(ADC5/SCL) || Master-Prozessor || I2C
 
|}
 
|}
 +
-->
  
 
== Patch für den ESP-Core ==
 
== Patch für den ESP-Core ==
 
Im ESP32 Core gibt es ein Problem mit dem "timerAlarmWrite()" der aus Platzgründen zur Laufzeit aus dem Code-Cache entfernt wird! Dann stürzt der ESP beim Nächsten Interrupt ab. Zur Behebung ist dieser Patch notwendig:
 
Im ESP32 Core gibt es ein Problem mit dem "timerAlarmWrite()" der aus Platzgründen zur Laufzeit aus dem Code-Cache entfernt wird! Dann stürzt der ESP beim Nächsten Interrupt ab. Zur Behebung ist dieser Patch notwendig:
 
[https://github.com/espressif/arduino-esp32/commit/be77bd4e27228e10cf7132668f0f1fd2172f4a37 Resolve crash with timer interrupt functions called from ISR (#4684)]
 
[https://github.com/espressif/arduino-esp32/commit/be77bd4e27228e10cf7132668f0f1fd2172f4a37 Resolve crash with timer interrupt functions called from ISR (#4684)]

Version vom 21. März 2021, 07:43 Uhr

Eigenbau | Zentrale Z21PG | Z21 mobile | XpressNet | LocoNet | Booster

Arduino UNO Version | Arduino MEGA Version | ESP8266 (WeMos D1 mini) Version | ESP32 Version | Sanguino Version

Z21 logo.png
Preview: IN DER ENTWICKLUNG - STILL UNDER DEVELOPMENT!

Beschreibung

ESP32 Anschlussbelegung

Um die Zentrale zukunftssicher zu gestalten wurde ein neuer Aufbau mit einem ESP32 Modul, welches einen DualCore Prozessor mit 240 MHz besitzt gewählt. Da die Funktionen für Xpressnet, aufgrund von Hardware Inkompatibilität und LocoNet aufgrund der Hardwarezusammenhänge in der Bibliothek nicht auf dem ESP32 umgesetzt werden können, wurde für diese der Arduino UNO/NANO also Co-Prozessor eingesetzt. Die Kommunikation zwischen den beiden Prozessoren erfolgt über das I2C Protokoll. Bei der Koppelung wurde ein Level-Shifter eingesetzt um die unterschiedlichen Spannungen des ESP32(3,3 Volt) und UNO/NANO (5,0 Volt) auszugleichen.

Funktionsumfang:

  • WLAN-Interface (integriert)
  • LAN-Interface (W5100)
  • S88N
  • interner Booster
  • externer Booster (ROCO oder CDE)
  • global RailCom Detector
  • XpressNet (Software-Serial RS485)
  • LocoNet

Pinbelegung ESP32

Hier eine Auflistung der Pinbelegung für den ESP32 im Sketch "Arduino Z21 Zentrale"

Arduino Pin Funktion aktiv Pegel (HIGH/LOW)
GPIO1 (TX) Debugging Serial
GPIO3 (RX) Debugging Serial
GPIO21 (SDA) I2C
GPIO22 (SCL) I2C
GPIO16 (RX) RailCom Detector RX Serial
GPIO19 (MISO) XpressNet TX Software Serial
GPIO23 (MOSI) XpressNet S+R output
GPIO18 (CLK) XpressNet RX Software Serial
GPIO12 (D6) LocoNet RX input
GPIO12 LocoNet TX output
GPIO2 DCC HIGH/LOW
GPIO17 DCC S88/LocoNet output
GPIO5 (CS) NDCC (Booster intern) output
GPIO4 SHORT (Booster extern) LOW
GPIO15 GO/STOP (Booster extern) HIGH
GPIO36 Taster/Reset LOW
GPIO32 DCC status LED HIGH
?? S88 Data in input
?? S88 Clock output
?? S88 PS/Load output
?? S88 Reset output
?? Relais Programmiergleis (PROG) HIGH/LOW
?? Current Sensor Programmiergleis (ACK)
?? Eingangsspannung Main VCC <-> [100k]<-> Sence (A10) <-> [4,7k] <-> GND
?? interner Temperatur Sensor +5V <-> [46k] <-> Sence (A11) <-> [15k NTC-Widerstand] <-> GND


Patch für den ESP-Core

Im ESP32 Core gibt es ein Problem mit dem "timerAlarmWrite()" der aus Platzgründen zur Laufzeit aus dem Code-Cache entfernt wird! Dann stürzt der ESP beim Nächsten Interrupt ab. Zur Behebung ist dieser Patch notwendig: Resolve crash with timer interrupt functions called from ISR (#4684)