ESP32 im ULP einen pin isolieren

Gast #6578166
Lesenswert?
• ▲
▼
hallo

möchte einen ext_wakeup machen. den wakeup pin im ulp "an/und 
ausschalten", ist das möglich? ein beispiel wäre schön, bitte keine 
erklärungen

denke das "wakeup interrupt bit" löschen und setzen ist das einfachste 
bloß wo ist das, finde da nix, das müßte ja auch im "RTC" sein damit ich 
es im ULP ändern kann

danke
Gast #6578176
Lesenswert?
• ▲
▼
das ist mir klar :), aber ein königreich für ein beispiel

rtc_cntl_reg.h

#define RTC_CNTL_EXT_XTL_CONF_REG          (DR_REG_RTCCNTL_BASE + 0x5c)
/* RTC_CNTL_XTL_EXT_CTR_EN : R/W ;bitpos:[31] ;default: 1'b0 ; */
/*description: enable control XTAL by external pads*/
#define RTC_CNTL_XTL_EXT_CTR_EN  (BIT(31))
#define RTC_CNTL_XTL_EXT_CTR_EN_M  (BIT(31))
#define RTC_CNTL_XTL_EXT_CTR_EN_V  0x1
#define RTC_CNTL_XTL_EXT_CTR_EN_S  31
/* RTC_CNTL_XTL_EXT_CTR_LV : R/W ;bitpos:[30] ;default: 1'b0 ; */
/*description: 0: power down XTAL at high level  1: power down XTAL at 
low level*/
#define RTC_CNTL_XTL_EXT_CTR_LV  (BIT(30))
#define RTC_CNTL_XTL_EXT_CTR_LV_M  (BIT(30))
#define RTC_CNTL_XTL_EXT_CTR_LV_V  0x1
#define RTC_CNTL_XTL_EXT_CTR_LV_S  30

#define RTC_CNTL_EXT_WAKEUP_CONF_REG          (DR_REG_RTCCNTL_BASE + 
0x60)
/* RTC_CNTL_EXT_WAKEUP1_LV : R/W ;bitpos:[31] ;default: 1'b0 ; */
/*description: 0: external wakeup at low level  1: external wakeup at 
high level*/
#define RTC_CNTL_EXT_WAKEUP1_LV  (BIT(31))
#define RTC_CNTL_EXT_WAKEUP1_LV_M  (BIT(31))
#define RTC_CNTL_EXT_WAKEUP1_LV_V  0x1
#define RTC_CNTL_EXT_WAKEUP1_LV_S  31
/* RTC_CNTL_EXT_WAKEUP0_LV : R/W ;bitpos:[30] ;default: 1'b0 ; */
/*description: 0: external wakeup at low level  1: external wakeup at 
high level*/
#define RTC_CNTL_EXT_WAKEUP0_LV  (BIT(30))
#define RTC_CNTL_EXT_WAKEUP0_LV_M  (BIT(30))
#define RTC_CNTL_EXT_WAKEUP0_LV_V  0x1
#define RTC_CNTL_EXT_WAKEUP0_LV_S  30
Gast #6578568
Lesenswert?
• ▲
▼
ich packs nicht...

 I_WR_REG_BIT(RTC_CNTL_STATE0_REG, RTC_CNTL_ULP_CP_SLP_TIMER_EN_S, 0),

den geben die manchmal vor dem wakeup um den ulp zu blockieren, also das 
der nicht weiter läuft, wäre ja logisch wenn da auch das 
esp_sleep_enable_ext1_wakeup zu blockieren ist, also in dem register ... 
aber scheint nicht der fall zu sein

also ich such genau das selbe nur für den esp_sleep_enable_ext1_wakeup,

tip bitte ein tip
Gast #6604693
Lesenswert?
• ▲
▼
es wird noch bisl abstrusser

so kann man seine eigene wakeup funktion definieren
// Set the wake stub function
  esp_set_deep_sleep_wake_stub(&wake_stub);

wer hat dich wachgerüttelt
rtc_get_reset_reason(0)

das komische ist der wechselt im laufenden betrieb den wachrüttler, kann 
mir da keinen reim drauf machen, alle wakeup laufen über den 
"esp_set_deep_sleep_wake_stub(&wake_stub);" der wechselt von 5 auf 12 
für mich macht das ja sinn woher soll er den wissen was unter ihm war, 
aber da könnt er ja eine nummer beibehalten, kann auch sein das ich noch 
ein fehler drin hab

für erhellende hinweise stehe ich ihnen gern zur verfügung :)
danke
Gast #6607839
Lesenswert?
• ▲
▼
ist eine komische sache, ich hab es gefunden erklären kann ich mir es 
nur halb

der rtc mem ist beim einschalten nicht 0, und ich hab ein ulp wakeup der 
einen rtc_mem variable als wakeup grund nimmt, wenn ich den einschalte 
ist dort wahrscheinlich ein undefinierter wert drin, der löst dann 
sofort den ulp wakeup aus schneller als der hochfahren kann und startet 
so nicht mit 1 vbat sonder mit 12 software, aber das wakeup aus dem ulp 
müßte 5 sein

!!immer laufendes ulp!! wenn ich das ulp anhalte startet der normal, 
wird wahrscheinlich auch vom board abhängen

ist aber schon komisch, da müßte er ja wissen wo das ulp liegt, ganz hab 
ich es nicht verstanden
Gast #6609413
Lesenswert?
• ▲
▼
#define RTC_CNTL_SLEEP_EN  (BIT(31))
#define RTC_CNTL_SLEEP_EN_S  31

I_WR_REG_BIT(RTC_CNTL_STATE0_REG, RTC_CNTL_ULP_CP_SLP_TIMER_EN,0)
I_WR_REG_BIT(RTC_CNTL_STATE0_REG, RTC_CNTL_ULP_CP_SLP_TIMER_EN_S, 0),

ich weiß wie es reagiert, aber eine erklärung wäre schön, wann hört die 
kacke auf, gibts denn nicht jemanden der sich erbarmt

!! I_WR_REG_BIT(RTC_CNTL_STATE0_REG, RTC_CNTL_ULP_CP_SLP_TIMER_EN,0) !!
funktioniert besser

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.