Commit Graph

34 Commits

Author SHA1 Message Date
MicroDev
cda5689263
move esp32_camera to espcamera 2023-01-27 22:05:43 +05:30
MicroDev
bfb77d0544
move ULPArch to Architecture 2023-01-26 13:01:14 +05:30
MicroDev
2bb12293f8
add ulp fsm 2023-01-21 17:44:08 +05:30
Dan Halbert
a974402542 Improve type validation errors messages, especially for pins 2023-01-10 15:02:55 -05:00
Scott Shawcroft
c16b42e972
Tweak arg checking and comments 2022-12-20 11:00:13 -05:00
Scott Shawcroft
f8ac1d9261
Rework the coproc API
It is now a generic `memorymap` API and an ESP specific `espulp` module.

Fixes #7218. Fixes #3234. Fixes #7300.
2022-12-19 14:08:38 -05:00
Radomir Dopieralski
90c805d858 esp32-camera: make the master_clock_pin really optional
The master_clock_pin was already optional, but not specifying it would
result in a crash. This fixes it, so it really can be omitted, when the
camera module has its own clock source built in.
2022-12-16 21:53:50 +01:00
Jeff Epler
ef2bfdb5db
dotenv becomes settings.toml 2022-12-08 12:44:20 -06:00
Jeff Epler
907c5d387f
Tweak black_bindings
Originally, black_bindings found each contiguous "//|" block and sent
it to black independently. This was slower than it needed to be.

Instead, swap the comment prefix: when running black, take off
"//|" prefixes and put "##|" prefixes on all un-prefixed lines.
Then, after black is run, do the opposite operation

This more than doubles the overall speed of "pre-commit run --all",
from 3m20s to 55s CPU time on my local machine (32.5s to under 10s
"elapsed" time)

It also causes a small amount of churn in the bindings, because
black now sees enough context to know whether one 'def' follows another
or ends the 'def's in a 'class'. In the latter case, it adds an extra
newline, which becomes a "//|" line.

I'm less sure why a trailing comma was omitted before down in
rp2pio/StateMachine.c but let's roll with it.
2022-09-30 11:18:13 -05:00
Jeff Epler
b2cc8d2aad
run black_bindings across all bindings 2022-09-27 15:21:42 -05:00
Jeff Epler
f12136af7f
esp32-camera: sync doc with code.
Closes: #6836
2022-09-23 08:54:00 -05:00
Jeff Epler
5bbbca4d44
lock and unlock i2c bus around any ops that might access it 2022-09-22 17:03:05 -05:00
Jeff Epler
dc27fb967d error at runtime if no psram actually reserved 2022-08-26 09:27:50 -05:00
Jeff Epler
86f9d98a5d fix documentation of framebuffer_count 2022-08-10 11:12:54 -05:00
Jeff Epler
c74746f052 Cross references in documentation always help 2022-08-09 12:20:02 -05:00
Jeff Epler
5a85b8ab95 improve docstrings based on my best sleuthing 2022-08-09 11:42:19 -05:00
Jeff Epler
98202c8568
Allow changing camera settings that require reinit
These can only be changed in a group, though any items to keep
unchanged can be unspecified or specified as None.
2022-08-04 15:12:11 -05:00
Jeff Epler
230532f0eb
one last doc build fix 2022-08-04 15:12:07 -05:00
Jeff Epler
a9d53ad2a6
Fix "check-stubs" problems 2022-08-04 15:12:06 -05:00
Jeff Epler
7cb40c9054
further doc build fixes 2022-08-04 15:12:05 -05:00
Jeff Epler
81fb9a5f20
specify return type for docs 2022-08-04 15:12:04 -05:00
Jeff Epler
8bdbe0355a
Add more getters 2022-08-04 15:12:02 -05:00
Jeff Epler
badcae5ace
Fix docstring errors 2022-08-04 15:12:01 -05:00
Jeff Epler
aead0dfe45
Return a Bitmap from take() when appropriate 2022-08-04 15:12:00 -05:00
Jeff Epler
258f72640a
Implement a pile of getters & setters 2022-08-04 15:11:57 -05:00
Jeff Epler
5db6db0128
add esp32-camera
This uses the esp32-camera code instead of our own homebrewed camera code.
In theory it supports esp32, esp32-s2 and esp32-s3, as long as they have
PSRAM.

This is very basic and doesn't support changing any camera parameters,
including switching resolution or pixelformat.

This is tested on the Kaluga (ESP32-S2) and ESP32-S3-Eye boards.

First, reserve some PSRAM by putting this line in `CIRCUITPY/_env`:
```
CIRCUITPY_RESERVED_PSRAM=524288
```
and hard-reset the board for it to take effect.

Now, the following script will take a very low-resolution jpeg file and print
it in the REPL in escape coded form:

```python
import board
import esp32_camera

c = esp32_camera.Camera(
    data_pins=board.CAMERA_DATA,
    external_clock_pin=board.CAMERA_XCLK,
    pixel_clock_pin=board.CAMERA_PCLK,
    vsync_pin=board.CAMERA_VSYNC,
    href_pin=board.CAMERA_HREF,
    pixel_format=esp32_camera.PixelFormat.JPEG,
    i2c=board.I2C(),
    external_clock_frequency=20_000_000)

m = c.take()
if m is not None:
    print(bytes(m))
```

Then on desktop open a python repl and run something like
```python
>>> with open("my.jpg", "wb") as f: f.write(<BIG PASTE FROM REPL>)
```
and open my.jpg in a viewer.
2022-08-04 15:11:50 -05:00
Jeff Epler
82be75adb5 Add ability to reserve psram
.. the primary user of which will be the camera, since the framebuffers
must be allocated via esp-idf allocation function and never from the
gc heap.

A board can have a default value, and the value can also be set in the
/.env file using the key CIRCUITPY_RESERVED_PSRAM with the value being
the reserved size in bytes.

Co-authored-by: Dan Halbert <halbert@adafruit.com>
2022-08-03 16:19:40 -05:00
Jeff Epler
c9475adb00
Enable -Werror=missing-prototypes on espressif port 2021-11-10 11:07:45 -06:00
microDev
a46aa48e23
Convert more modules to use MP_REGISTER_MODULE
Convert espidf, os, rp2pio, samd and time to use MP_REGISTER_MODULE.

Related to #5183.
2021-10-05 16:58:24 +05:30
Scott Shawcroft
48866dd3e7
Merge pull request #5367 from microDev1/refactor-esp-port
Update espressif port
2021-09-20 14:59:27 -07:00
microDev
1536ec0123
rename left over esp32s2 to espressif 2021-09-18 19:42:18 +05:30
microDev
be3fca81e7
fix espidf docs 2021-09-17 21:27:18 +05:30
microDev
e91fb247a3
build docs dynamically 2021-09-16 00:05:42 +05:30
Scott Shawcroft
973a90f2aa
Rename esp32s2 port to espressif
This is in preparation for ESP32-S3 support and potentially others.

Related to #4363
2021-09-13 16:44:55 -07:00