Requesting a WAKE example
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tài liệu
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- python
- Lĩnh vực
- documentation, embedded-iot
Hướng nghiên cứu
Bắt đầu với ví dụ Python trong issue, đặc biệt là ULP, src_to_binary, mem32 và machine.deepsleep, sau đó kiểm tra các ví dụ và tài liệu hiện có trong repository về việc sử dụng WAKE. Xác định xem luồng deep sleep được hiển thị có hoạt động hay không và ghi lại một ví dụ tối thiểu có thể hoạt động, bao gồm những gì người dùng nên quan sát sau khi WAKE được kích hoạt.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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")
- Ngôn ngữ chính
- Python
- Star
- 142
- Fork
- 25
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của micropython/micropython-esp32-ulp
-
Release 1.3.0Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
micropython/micropython-esp32-ulp#96 · 1 reaction ·
-
interrupt from RTC GPIOĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
-
ulp rtc clock calibrationĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
micropython/micropython-esp32-ulp#86 · 2 bình luận ·
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
micropython/micropython-esp32-ulp#83 · 2 bình luận ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 30/100
micropython/micropython-esp32-ulp#76 · 1 bình luận ·
Tất cả issue của micropython/micropython-esp32-ulp
Issue tương tự
-
Claiming namespace `apoint`Đang mởnamespace operations
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 82/100
EclipseFdn/open-vsx.org#13573 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
collective/icalendar#1854 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
rancher/rancher-ai-agent#412 ·
Maintainer thường phản hồi trong vòng 6 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
TUDelftGeodesy/DePSI#134 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
HenriquesLab/rxiv-maker#335 ·