Requesting a WAKE example
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 25/100
- Tipo di issue
- Documentazione
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- python
- Ambito
- documentation, embedded-iot
Direzione di ricerca
Inizia con l'esempio Python nell'issue, in particolare ULP, src_to_binary, mem32 e machine.deepsleep, quindi esamina gli esempi e la documentazione esistenti del repository per l'utilizzo di WAKE. Determina se il flusso di deep sleep mostrato funziona e documenta un esempio minimo funzionante, incluso ciò che gli utenti dovrebbero osservare dopo l'attivazione di WAKE.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
I would like an example of how to use WAKE because I'm not quite sure how it's supposed to work. I'll contribute one if I can, but right now it doesn't work. Should it?
#
# Example of putting the main processor to sleep then waking it up
# via the ULP after a while
#
from esp32 import ULP
from machine import mem32
import machine
from esp32_ulp import src_to_binary
source = """\
#define RTC_CNTL_LOW_POWER_ST_REG 0x3FF480c0
#define RTC_CNTL_RDY_FOR_WAKEUP BIT(19)
entry:
MOVE r0, 2000
loop:
WAIT 40000 // at 8 MHz this is 5 msec, if we do this 1000 times that's 5 seconds
SUB r0, r0, 1
jump is_rdy_for_wakeup, eq
jump loop
is_rdy_for_wakeup: // Read RTC_CNTL_RDY_FOR_WAKEUP bit
#
# This test was described in https://github.com/espressif/esp-idf/issues/8341
# See reference manual 31.19.
#
# The main issue with this is that it will hang if the main CPU wasn't in deep sleep.
#
READ_RTC_FIELD(RTC_CNTL_LOW_POWER_ST_REG, RTC_CNTL_RDY_FOR_WAKEUP)
AND r0, r0, 1
JUMP is_rdy_for_wakeup, eq // Retry until the bit is set
WAKE // Trigger wake up
HALT // Stop the ULP program
"""
#
# Compile the ULP code
#
binary = src_to_binary(source)
load_addr, entry_addr = 0, 0
ULP_MEM_BASE = 0x50000000
ULP_DATA_MASK = 0xffff # ULP data is only in lower 16 bits
ulp = ULP()
ulp.load_binary(load_addr, binary)
#
# The ULP starts out asleep (halted), so set a timer to wake it
# up the first time.
#
# ulp.set_wakeup_period(0, 50000) # use timer0, wakeup after 50.000 cycles
mem32[ULP_MEM_BASE + load_addr] = 0x1000
ulp.run(entry_addr)
print("going to sleep")
# I think this should enable ULP wakeup
mem32[ 0x3ff48038 ] = 0x200 << 10
machine.deepsleep()
#
# We won't ever reach this, because WAKE is going to cause the main
# processor to reset and start over at the beginning.
#
print("I am awake again")
- Lingua principale
- Python
- Stelle
- 142
- Fork
- 25
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di micropython/micropython-esp32-ulp
-
Release 1.3.0Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
micropython/micropython-esp32-ulp#96 · 1 reazione ·
-
interrupt from RTC GPIOAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
-
ulp rtc clock calibrationAperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
micropython/micropython-esp32-ulp#86 · 2 commenti ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
micropython/micropython-esp32-ulp#83 · 2 commenti ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 30/100
micropython/micropython-esp32-ulp#76 · 1 commento ·
Tutte le issue di micropython/micropython-esp32-ulp
Issue simili
-
Claiming namespace `apoint`Apertanamespace operations
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
EclipseFdn/open-vsx.org#13573 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
collective/icalendar#1854 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
rancher/rancher-ai-agent#412 ·
I maintainer di solito rispondono entro 6 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
TUDelftGeodesy/DePSI#134 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
HenriquesLab/rxiv-maker#335 ·