#circuitpython-dev

1 messages ยท Page 358 of 1

tidal kiln
#
Adafruit CircuitPython 6.1.0 on 2021-01-21; Adafruit ItsyBitsy M4 Express with samd51g19
>>> 
#

@still zephyr all your testing was done with DHT?

still zephyr
#

๐Ÿ˜ฎ

#

yes, only DHT

#

I looked to the C code to see if the resume changed a varaible or something but I could not figure anything out of it

tidal kiln
#

looks potentially related

#

(that issue thread)

still zephyr
#

The only MCU different that I cant test is the black pill and the feathers2 but that one is similar to the metro esp32s2, do you want me to try your code?

tidal kiln
#

not unless you have a servo control signal to test against

still zephyr
#

oh no, no I dont have any servo

tidal kiln
#

looks like there's a lot more going on with the DHT

still zephyr
#

Would you keep me posted if you find something interesting, please?

tidal kiln
#

will try

#

@slender iron (not urgent) but if you can read scroll back and let me know if you think this is issue or pebkac

slender iron
#

@tidal kiln ya, it sounds like a bug

tidal kiln
#

ok. thanks. want me to open issue?

slender iron
#

yes please

tidal kiln
#

okie doke. will do. thanks.

slender iron
#

np

simple pulsar
#

Hi, I've just noticed I can run CircuitPython on Meowbit. Is the screen brightness supposed to work? I tried setting value to 0 and it doesn't change.

manic glacierBOT
tidal kiln
manic glacierBOT
#

In a different application of the PulseIn object. This is used to get the values from the DHT11/22 sensors using CircuitPython instead of Bitbang the sensor.
Issue https://github.com/adafruit/Adafruit_CircuitPython_DHT/issues/53 as the library was having different behavior depending on the board used.
For the Metro Express ESP32S2 the first pulse read was a Low so the first lecture was a checksum fail, after this initial failure the rest of the first pulse readings are High (in DHT therms...

still zephyr
#

@tidal kiln I put my comments, thanks for writing the issue

manic glacierBOT
#

I put 6.1.0 on a Meowbit earlier. I noticed assigning values to board.DISPLAY.brightness does nothing. I was trying to turn the backlight off with 0 but that and other values appear to have no effect on screen brightness.

I tried setting board.DISPLAY.auto_brightness = False and that doesn't allow the brightness assignments to work. I've never been too sure what auto_brightness does as I've never seen it do anything.

board.DISPLAY.auto_refresh does work, btw.

manic glacierBOT
tulip sleet
#

@slender iron @onyx hinge draft beta.3 release notes is done. Will add more PR's as they are merged

onyx hinge
#

Thanks @tulip sleet

tulip sleet
#

i am downloading S3 logs for all of February for download counts

manic glacierBOT
#

We've added a few translations that haven't gotten any translations actually added. To save build time, we're turning those off. As we discussed it, we thought it'd be helpful to have a minimum set of messages to translate before turning a new translation on. My idea was to have any interaction messages translated but error messages are optional/best effort.

Looks like Weblate has a priority feature that does what we'd like: https://docs.weblate.org/en/latest/admin/translating.html#strin...

onyx hinge
#

@slender iron OK having looked into it a little bit I see why you didn't go all the way from the "source" .S file of boot2 to the bytes that need to be included, inside the CircuitPython build process...

slender iron
#

๐Ÿ˜„

#

just reading the assembly makes me want to not do assembly

#

I may figure out how to do it with C or have python gen asm

manic glacierBOT
onyx hinge
#

@slender iron do you want me to "review" that PR so it can go in when complete? I see that it got tested

slender iron
#

what PR?

onyx hinge
#

the boot2 one

slender iron
#

I'm neck deep in PRs

#

sure, that'd be good

#

ladyada just tested it

manic glacierBOT
#

Fix for #4292
This will let wait_for_safe_mode_reset run if the reset reason is RESET_REASON_UNKNOWN to account for ports that don't implement it fully.

However it might not make sense when the reset reason is implemented though, since we only want to do that when powering on or pressing reset. So a better fix might be to use a #define (in each port's Processor.c/h) to remove the test altogether when not fully implemented (that might even save a few bytes on those ports).

Ultima...

#

Thanks for these notes @omsai! My plan with the flash is to do the flash toml bits, cascade toml and generators for it. I don't think I'll go so far as to do the boards.

I'm not sure what a good small step for this is. One thing I'd do later is optimize across boards. For now we could just generate a giant ninja file to build everything separately. That still could be tricky because we likely want to factor out some of the compiler and board settings as we do that.

This task feels like ...

fossil gorge
#

Hiya @idle owl, I've gone over the open issues list, and I wanted to check in with you when you have some time about some of the open ones.

manic glacierBOT
onyx hinge
#

@slender iron doesn't need to queue jump, but it made me itch so I implemented #4308..

slender iron
#

that helps me figure out how to hook it in but I don't want to rely on their .S code

#

I'm sick of dealing with flashes differently for every port

#

it needs to be unified

#

though it can't hurt for now

manic glacierBOT
vague latch
#

I wanted to get the teensy4.1 working with the jupyter circuit python kernel. It is not natively supported as it isnt an adafruit board. Is their a benefit of putting a pull request in to add this board to the library. https://github.com/adafruit/circuitpython_jupyter_kernel, it is quite simply just adding the vendor id to the check on which board is connected.

slender iron
#

@vague latch yup! PR would be helpful

slender iron
#

ya, that'd be neat!

analog bridge
#

done... max is 3 so we can have one more.

slender iron
#

thanks!

vague latch
#

I think i got the PR right. I haven't had to do it before.

manic glacierBOT
manic glacierBOT
manic glacierBOT
#

Ah I was thinking something like that might be going on with the reset button. That's too bad.

I tried latest S3, and compiled current main on the Magtag.
Adafruit CircuitPython 6.2.0-beta.2-230-g64192b0eb on 2021-03-01; Adafruit MagTag with ESP32S2
I tried manually calling microcontroller.reset() in the REPL.
I also used this code on battery to exclude the possibility of USB messing with it.

I get WATCHDOG in both cases. (Well, except on first boot).

import board
im...
manic glacierBOT
manic glacierBOT
manic glacierBOT
manic glacierBOT
manic glacierBOT
manic glacierBOT
#

`import time
import board
import usb_midi
import adafruit_midi
from adafruit_midi.note_off import NoteOff
from adafruit_midi.note_on import NoteOn
from digitalio import DigitalInOut, Direction

MIDI settings

midi = adafruit_midi.MIDI(midi_in=usb_midi.ports[0],
midi_out=usb_midi.ports[1],
in_channel=(1),
out_channel=0)

Debug LED

led = DigitalInOut(board.LED)
led.direction = Direction.OUTPUT

...

idle owl
onyx hinge
#

@idle owl so if I want to apply the cookiecutter pylint patch along with my own PR in some circuitpython lib that's okay?

#

patches/0001-Removed-pylint-process-from-github-workflow-patch-2.patch is it this one?

idle owl
#

@onyx hinge Please tag me so I can verify it, but yes, if you'd like to add it in, go ahead. The patch will simply skip that library. As long as everything is happy.

idle owl
#

@onyx hinge Yes that appears to be it. If you're not sure, check cookiecutter's versions of build.yml and .pre-commit-config.yaml.

fossil gorge
manic glacierBOT
#

By default its optional to use the template.
I would like the template to be minimal. Something like the following for bug report.

Firmware

Adafruit CircuitPython 6.2.0-beta.2 on 2021-03-01; Raspberry Pi Pico with rp2040

Code/REPL

import busio, bitbangio
i2c = bitbangio.I2C(board.GP1, board.GP0)

Behavior

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TimeoutError: Clock stretch too long

**Descr...

onyx hinge
#

I need to use this code in a guide so if you have a chance to review it I'd appreciate it

idle owl
#

Ah fair enough. I was going to skip reviewing the rest, but I'll take a look.

idle owl
#

I get why you imported microcontroller ๐Ÿ˜„

#

Is this for upcoming boards that will have a built-in NeoPixel versus the Pico which will have an external one on GP16? if hasattr(board, "NEOPIXEL"): NEOPIXEL = board.NEOPIXEL else: NEOPIXEL = microcontroller.pin.GPIO16

onyx hinge
#

Right, I want one unmodified example to work across the Pico and all of Adafruit's RP2040 boards

idle owl
#

Ok, then what's going on with the rest of it.

onyx hinge
#

because of reasons, init= is just not needed anymore (and there was much rejoicing)

idle owl
#

Ok

onyx hinge
#

and if you just send one color of pixel you can't tell it's doing anything

#

it skips using pixelbuf and all that stuff for "simplicity"

idle owl
#

Got it

#

It works?

onyx hinge
#

yup

#

twinkle twinkle

idle owl
#

Right on. I'll approve.

onyx hinge
#

thank you! it's very helpful

idle owl
#

Does anyone know the max values you can obtain from a PDM MEMS mic? Is it 66535 or whatever that number is? Or am I way off on that.

#

I'm trying to do math with it and everything I'm doing works sort of but it's entirely arbitrary. I have no idea what the value range might be.

manic glacierBOT
idle owl
#

Google is failing. (to give me a useful answer)

onyx hinge
#

@idle owl yes, in CircuitPython when you use 'H', the theoretical values range from 0..65535, but what the center and extreme values are varies.

#

it's nice if the center value is around 32000 and if the 0 and 65535 values aren't reached in normal conditions

idle owl
#

@onyx hinge Alright. Thanks.

#

I can't scream at this thing to test it, but it could end up used in loud places, so I want my math to work in "real" situations.

manic glacierBOT
slender iron
#

@onyx hinge did you see my issue comment about message priority in weblate?

slender iron
#

merge party!

manic glacierBOT
#

Running the following:

import time
import board
import touchio

touch_IO1 = touchio.TouchIn(board.IO1)
touch_IO2 = touchio.TouchIn(board.IO2)

while True:
    if touch_IO.value:
        print("Touched IO1!")
    if touch_IO.value:
        print("Touched IO2!")
    time.sleep(0.05)

will result in A1 constantly reading as touched. If additional pins are added (IO3, IO4, etc) then all pins before the last one created will constantly trigger.

@ladyada ping so this i...

jaunty juniper
#

oooooh having common_hal_mcu_processor_get_reset_reason return a constant made the compiler optimize away the whole rest of wait_for_safe_mode_reset ! I didn't think of that...

#

Long time no C as they say

manic glacierBOT
#

@microDev1 interesting. I've edited the post to include the board (Saola Wrover). Your guess was correct, the pins only interfere when they're adjacent, putting them one or more pins away (IO1 and IO3) stops the issue. Should we consider tweaking the threshold value, or breaking it out on the board level? When using a wire to connect, it's so sensitive that even just holding your hand within an inch the wire causes it to go off.

#

Ya... while implementing TouchIO... I did all the testing on my microS2 which has very small traces + it is 4 layers thus having different electrical characteristics then most other boards. I think we can settle on a middle ground for threshold values which works for all of the boards... the api also offers some filtering features which might be helpful.

fossil gorge
idle owl
#

@fossil gorge Excellent, now is good.

fossil gorge
#

I still can't get into my computer to get my list, so going to try and go from memory a bit...

idle owl
#

That works

fossil gorge
#

So going through the list, I noticed there were two different extremes - Either many issues for one device/sensor, or some very old ones - like for the TLC59711 that's up to 785 days

idle owl
#

Yeah the author is still working with us slowly on that one, so I've left it open.

fossil gorge
#

Ah, ok. I was trying to sort out what would be most beneficial to work on - the old ones (guess not?), or devices with many issues, though some are also feature requests. Is there any preference in order, or whatever one's comfortable working on?

idle owl
#

Whatever you're comfortable working on! I'd much rather you pick something obscure if it's something you'll enjoy doing than to pick up something and end up feeling like you don't want to follow through with it. That can be discouraging and frustrating and I want to avoid that for you.

fossil gorge
#

I mentioned the Magtag issue yesterday, since I have one, and it's the new [available/released] hotness, and it's fun to work with

#

Understandable, and appreciated ๐Ÿ™‚

idle owl
#

The oldest one is still active. The old-but-younger-than-that-one ones are probably not as active. If at all.

#

But don't let age determine what you decide to pick.

#

If you want to start with something on MagTag that would be perfect. I simply wanted to make sure you weren't limited and had more options if you wanted them.

fossil gorge
#

Actually, maybe something that could help on that contributing page, might be (if possible), an "activity" indicator? Maybe how long it's been since something's changed (commit, comment, etc),?

idle owl
#

Hmm.

fossil gorge
#

Just a thought

idle owl
#

I have no idea if that's doable, but I bet it is.

fossil gorge
#

or maybe tags?

#

If there are some like "Good first issue" for libraries

tulip sleet
#

you can sort an issue based on its age or based on most recently updated (e.g. a recent comment)

fossil gorge
#

Oh dang, I need to check in with my optometrist. TOTALLY glossed over that combo box ๐Ÿคฆ ๐Ÿ‘“

idle owl
#

Right but I think Hugo is asking for something on circuitpython,org/contributing to show the last activity time on issues.

#

Oh good that that'll work for you!

tulip sleet
#

yeah, I'm saying if it's in the UI, it's probably in the API

fossil gorge
idle owl
#

@tulip sleet Ah I follow now

#

Currently /contributing can be sorted by label but that's it.

#

It would require UI changes to more sorting options there, but it's possible.

fossil gorge
#

Sure thing

idle owl
#

Be specific that it relates to the /contributing issue list.

#

I don't know if we need to update Adabot too. I can't remember off the top of my head if that's where it's pulling from.

#

Pulls some library info from there.

fossil gorge
#

And then, as far as what to pick up and work on, I think I'm good for now. I'll let you know if I run into anything

idle owl
#

@fossil gorge Excellent

fossil gorge
#

aside from my computer losing it's mind

idle owl
#

Indeed!

fossil gorge
#

Thanks for your time! ๐Ÿ™‚

idle owl
#

Thank you for yours!

manic glacierBOT
orchid basinBOT
lucid solar
#

@gilded cradle I need to add a new LCD driver to blinka, I'm not sure on how things are setup in terms of blinka/CPY drivers. I've got the LCD working using busio already...but I thought it's best to share the code in case others want it. Could you point me in the right direction for which git project or projects should contain the code.

gilded cradle
lucid solar
#

are they seperate per driver_IC? so I'd need to make a new project

gilded cradle
#

Correct.

lucid solar
#

It's the st7565 by the way

gilded cradle
#

Ah, that one. I'm not sure if that will work in the Blinka Displayio drivers as monochrome display support hadn't been added yet.

#

Does it work with CircuitPython displayio?

lucid solar
#

I've only tested it using blinka and busio

gilded cradle
#

That would be a cool one to add. I'm pretty sure I have one of those laying around somewhere.

lucid solar
#

What would you suggest is best? I can spend quite a bit of time on it...so if you'd like it done in a certain way, I'm up for it.

gilded cradle
#

Is it SPI, I2C, or something else?

lucid solar
#

SPI

gilded cradle
#

Ok, if you can get it working with CircuitPython displayio, that'd be awesome because once Monochrome Blinka Displayio is added it should just work. If not, you could just create a separate library for it.

lucid solar
gilded cradle
#

Probably the nokia screen. The ST7789 is a color display.

manic glacierBOT
idle owl
#

Hey folx. I'm also updating the .pylintrc file to have the duplicate code check ignore imports as we do have some lib files with lengthy imports that exceed the duplicate code check threshold. Nothing needs to change on anyone else's part, simply an FYI. Cookiecutter is already updated.

hollow gazelle
#

Question: has the Cypress FX2 Hi-Speed USB chip with its Mass Storage Driver support been considered as a way to bring circuit python to any non native-usb microprocessors? Any existing examples or prototypes?

lucid solar
#

@gilded cradle I've progressed a little!

onyx hinge
#

@hollow gazelle I don't know much about that chip, but an 8051 CPU core with 16kB RAM is too small for CircuitPython. "Snek" (https://github.com/keith-packard/snek) might be more likely to fit on such a small microcontroller.

gilded cradle
#

Awesome @lucid solar, that looks great!

lucid solar
#

@gilded cradle Thanks ๐Ÿ™‚ Can you create a git repo for it? or should I ask @slender iron?

gilded cradle
#

Sure, just a moment...

lucid solar
#

I guess https://github.com/adafruit/Adafruit_CircuitPython_ST7565 ?

gilded cradle
#

๐Ÿ‘

onyx hinge
#

Ooooh, a package like adafruit_datetime does need adafruit-blinka due to use of const...

lucid solar
#

Great...I'll do a PR soon @gilded cradle

onyx hinge
#

I was wondering why but answered the question for myself

gilded cradle
#

@onyx hinge blinka can just use the full datetime library

onyx hinge
#

@gilded cradle I'm developing something that can run on circuitpython but I have unittests in standard python

gilded cradle
#

Unless you're thinking for portability

onyx hinge
#

I used adafruit_datetime when running in standard python to ensure the tests were as close to reality as possible

gilded cradle
#

Ok, gotcha

onyx hinge
#

so I'm glad that blinka can install on standard computers ๐Ÿ™‚

lucid solar
idle owl
#

@lone axle I do have something you can help with though if you're up for it. The patches don't work on every library when we run them because some file is different or whatever. We have ~45 libraries that need the patch manually applied, which is to say, the updates applied via PR. Would you be able to help Dylan with that?

idle owl
#

Alright let me put together the changes needed.

idle owl
lone axle
manic glacierBOT
#

We should port CircuitPython to the Cortex-A class Raspberry Pis. The main early benefit would be easy HDMI capable displayio.

Prerequisites:

  • [ ] Port TinyUSB to the BCM chips. (Should be relatively easy because it uses Synopsis USB IP.)
  • [ ] Add internal flash support for the emmc peripheral of the BCM

This should get CP booting and the workflow working. Then it'll be the common steps or implementing standard hardware APIs like I2C and displayio.

lone axle
idle owl
#

@lone axle Please request review from (at)dherrada and me so we both receive emails about them. Looks good to me!

lucid solar
#

@gilded cradle https://github.com/adafruit/Adafruit_Blinka/issues/308 << this is my next project. Might start it tomorrow. I've got a big Blinka based project coming up, so expect quite a bit of development coming outta Sweden in the coming weeks ๐Ÿ™‚

mental nexus
#

@idle owl I canโ€™t find the read the docs for the new grid_layout library. Is this missing, or does it just take a while for ReadTheDocs to load it, or is google just not mapping it?

manic glacierBOT
#

Brainstorm from an email with Avram:

Why do you want to make CP a bootable system for Raspberry Pi?

I think it'd be neat because CP is much simpler than Linux. (It'll never be able to do everything Linux can.) This fits the nostalgia niche of the Pico MicroPython and emulator demos but easily support HDMI devices. It would take the simplicity and accessibility of the CircuitPython workflow and bring it to "the big screen". (Libraries are already available in CPython on Linux.) It'd be...

blissful pollen
#

@slender iron for the countio/pwmio channel use check, seems to make sense to just make the pwm channel_use variable global - though I'll have to rename it or it collides a lot with other places

slender iron
#

you could do that or add a private function to "claim" it

#

that you could use a different name for and it hides the variable

blissful pollen
#

like add "claim_channel" to pwmio that countio can call? (and unclaim as well i guess!)

slender iron
#

sure

blissful pollen
#

figured easier to ask before I submit it

slender iron
#

๐Ÿ‘

#

always feel free to ping me if you want to run things by me

#

I'd rather chat about something before work is done than after

blissful pollen
#

Yup same here. Like most problems so many different ways to solve it but rather be somewhat consistent

still zephyr
#

@mental nexus I have just tested the fix in BitmapSaver. Great Work!

idle owl
#

@mental nexus Send me an email, kattni at adafruit dot com. It needs to be set up in a particular way that probably wasn't done. I can do it tomorrow but I'll forget!

manic glacierBOT
manic glacierBOT
#

Tested using bus_device, and it appears to hang when attempting to init the device, unless I pass in probe=False. Then it gives me the OSError I was getting before. Here's the code I'm using:

import board
import busio
from adafruit_bus_device import i2c_device

i2c = busio.I2C(board.GP17, board.GP16)

while not i2c.try_lock():
    pass # Interestingly, it doesn't work without locking the bus. bus_device examples don't seem to require this. 
print("i2c locked.")

lcd ...
hollow gazelle
manic glacierBOT
manic glacierBOT
#

Looks like builds are failing:

Build raspberry_pi_pico for en_US took 7.80s and failed
make: Entering directory '/home/runner/work/circuitpython/circuitpython/ports/raspberrypi'
Use make V=1, make V=2 or set BUILD_VERBOSE similarly in your environment to increase build verbosity.
common-hal/pulseio/PulseIn.c: In function 'common_hal_pulseio_pulsein_construct':
common-hal/pulseio/PulseIn.c:76:15: error: too few arguments to function 'rp2pio_statemachine_construct'
   76 |     bool o...
manic glacierBOT
#

I believe changes have been merged affecting the call to
rp2pio_statemachine_construct()
since PR 4262
was created. I will update my branch used for the PR to correct for this
change.

On Tue, Mar 2, 2021 at 8:12 PM ajs256 notifications@github.com wrote:

Looks like builds are failing:

Build raspberry_pi_pico for en_US took 7.80s and failed
make: Entering directory '/home/runner/work/circuitpython/circuitpython/ports/raspberrypi'
Use make V=1, make V=2 or set BUILD_VERBOSE similar...

still zephyr
#

Hello, before start the build rabbit hole and test, would anyone take a look a this code for the I2C peripherals for the PICO, I am more worried here about the semantics, and all the building blocks to do a CircuitPython library. any help is appreciated. Feel very free to code shame me.๐Ÿ™ƒ. C is not my mother language. https://github.com/jposada202020/PICO_I2CPeripheral

manic glacierBOT
#

The RP2040 I2C hardware does not do writes of 2 bytes or less. They must be done via bitbang.

  • Handle short writes with bitbangio.I2C. A single bitbangio.I2C object is created once, not on the heap, for use as needed.
  • (Style cleanup) Split shared-module/bitbangio/types.h into separate files: I2C.h, SPI.h, and OneWire.h. This makes it consistent with busio and similar modules.

Tested and works with the following sensors:

  • LIS3DH
  • LIS3DML
  • SHT31D
  • BME280
  • VCN...
manic glacierBOT
manic glacierBOT
manic glacierBOT
#

thanks @jepler gdb trace, I have ound the issue. After tud_disconnect() is called:

  1. pull-up register is disabled and
  2. device got both Bus Reset (SE0 > 2.5 us) and Disconnection event (SE0 > 2us)

The difference between my example (and other pico-sdk example) and circuipython is cpy disable the alarm pool feature PICO_TIME_DEFAULT_ALARM_POOL_DISABLED=0

https://github.com/raspberrypi/pico-sdk/blob/master/src/rp2_common/pico_fix/rp2040_usb_device_enumeration/rp2040_usb_de...

manic glacierBOT
#

There is no telling when the dynamic USB descriptors will be implemented โ€” we have been talking about them for years, and they are not a very important feature, but there are few people with the expertise. On the other hand, I have a number of devices that rely on this, and that got broken with #4283 โ€” if we had this earlier, we would have caught the problem. I suppose it's a trade-off between build times and coverage.

By the way, I did this with Fluff M0, because that's what I'm using, bu...

manic glacierBOT
manic glacierBOT
#

I think there are two reasons to have this:

  1. You have a project used by multiple people that depends on no MSC (like the stenotype project I think you mentioned), and it is impractical to supply a custom build for that. That is what I though the original motivation was.
  2. We need to test whether various compilation flags actually work or not. This particular flag is one of many. I could imagine adding a test build that compiles a single language and board multiple ways. I would do it d...
manic glacierBOT
analog bridge
#

Is it possible to exclude a directory from the docs build?

raven canopy
#

or maybe .github/ is better?

analog bridge
#

thanks! @raven canopy... ya I want to add .github to it.

raven canopy
#

yw. should clear up that CI failure.

manic glacierBOT
manic glacierBOT
#

I don't know if I'm allowed to say anything here, but here it goes...

In my opinion, to the error template, it would be great to add a "Expected behaviour" section.

It might sound stupid because some issues like #4311 where the expected behaviour is to do not trigger adjacent pins.
Others, like my issue #4279, the expected behaviour is that it should throw an exception because the filesystem is readonly.

Others, like #4300, could be that the frequency should be different or similar....

lavish saffron
#

Hi, on GitHub, why do CircuitPython libraries' README.rst files have a link to the information on building library docs? I would expect a link to the ReadTheDocs page for the libraryโ€ฆ thx

slender iron
#

@lavish saffron you can click the hopefully "passing" docs image at the top

#

we should make that explicit

slender iron
lavish saffron
# slender iron we should make that explicit

Aha. I assumed (and see where it got me ๐Ÿ˜† ) that the badge was a pat on the back for the docs building ๐Ÿคฆโ€โ™‚๏ธ Thanks for the quick response. Perhaps we could make it a little bit bigger, too.

slender iron
#

@shell bolt let me know if you have feedback on the nvm.toml stuff

#

we shouldn't have to do releases if the library code itself hasn't changed. @idle owl @trim elm

idle owl
#

We need to decide what requires a release and what doesn't and update Adabot to ignore everything that doesn't. We've sort of done that with some things, but not since we changed how we're doing a lot of CI.

#

The only thing that should matter for release is library code or example code.

#

anything else, README, CI, whatever, shouldn't require a new release.

slender iron
#

agreed. the only other thing I can think of is if the packaging settings themselves change

idle owl
#

I'll talk to Dylan about it today.

slender iron
#

thanks!

#

it'll lessen his work ๐Ÿ™‚

idle owl
#

I'm sure he'll jump on it since.. yes that. He's the one doing most of the work.

slender iron
#

@lone axle the repos you couldn't request review on are missing write access for circuitpythonlibrarians

#

feel free to ping me on them and I can add the access. I just did two repos for you

manic glacierBOT
lone axle
tulip sleet
#

@slender iron I will update the draft release notes in a little while. maybe we can do a release today

slender iron
#

sounds good to me!

#

I'm just about through my reviews

manic glacierBOT
#

As per recommendation in https://github.com/adafruit/circuitpython/issues/4291#issuecomment-789852208, I'm giving my (edited) feedback here:

In my opinion, to the error template, it would be great to add an optional "Expected behaviour" section.

Some issues, like #4311, the expected behaviour is to do not trigger adjacent pins. (Duh!)
Others, like my issue #4279, the expected behaviour is that it should throw an exception because the filesystem is readonly.
Others, like #4300, could b...

manic glacierBOT
mental nexus
#

In Sphinx, does anyone know how to put extra text below the function definitions? I want to add documentation about a library, but I want it to be below the function. Otherwise, at first glance somone would have to scroll down to see the functions.

#

I've tried adding a text block after the function definitions but Sphinx just ignores it all. Do I need to add some other special .. something:: command?

manic glacierBOT
idle owl
#

@mental nexus Oh hmm. Try doing .. on a blank line above the text block, and then indenting the text block 4 spaces under the potentially-already-indented ..

manic glacierBOT
idle owl
#

@mental nexus Sphinx is serious about whitespace. It all has to be exact. Could be the number of blank lines between isn't proper or some such as well.

manic glacierBOT
still zephyr
manic glacierBOT
mental nexus
still zephyr
#

result in html

manic glacierBOT
idle owl
#

@slender iron GP29 is the fourth ADC right? Pico did something special with it so they didn't expose it... But that's how we get 4 analog pins on the Feather RP2040?

slender iron
#

correct. the pico board uses it itself

idle owl
#

Ok was making sure I remembered that properly

#

Thanks

idle owl
#

@slender iron On the Pico, there are SPIx CSn pins. What does CSn mean? Chip select?

slender iron
#

yes

idle owl
#

Thanks

#

@slender iron Sorry for continued questions. The RP2040, is capable of handling I2C and SPI on many pins, but am I understanding it right that it can only handle 2 of each at a time, and only on differing sets of pins? As in you can't do two I2C devices on two pairs of pins that are both I2C0, you have to choose an I2C0 and an I2C1? and same for SPI? Or am I misunderstanding what this means entirely.

slender iron
#

correct

idle owl
#

Ok

slender iron
#

I think you know this stuff. ๐Ÿ™‚ How about writing it up as you think and then I can review after?

idle owl
#

Ok. It's going into the Feather guide anyway.

slender iron
#

๐Ÿ‘

manic glacierBOT
tulip sleet
#

@slender iron @onyx hinge I think we are ready for beta release as soon as the builds clear. The RP2040 PulseIO PR is still in process, and there's nothing else imminent except for a weblate PR. We are getting xtensa build failures which I think are cache-related so I submitted a PR for that. If that clears, I would merge the latest weblate, and that would be it for beta.3. Does that make sense to you?

#

"as soon as" could be a while...

slender iron
#

sounds good to me!

onyx hinge
#

thank you @tulip sleet -- no objections

#

hummmm just pointed out to me by @idle owl the default board.UART() isn't enabled on feather rp2040 yet .. I'll file a PR

idle owl
#

The board objects for SPI, I2C and UART use the "default" pins on the Feather, right? So the pins labeled SCK/MO/MI, SCL/SDA, and RX/TX? Because if I'm reading this right, and the pins really do match the Pico pins labeled on the back of the board (and in the schematic), then GP20 doesn't even have SPI on it. Unless the Pico pinout diagram is wrong.

stuck elbow
#

@tulip sleet is it normal that the REPL is still available with CIRCUITPY_USB_CDC=0?

tulip sleet
#

yes, the CDC in this case refers to the secondary CDC. There is CIRCUITPY_USB_REPL or REPL_USB, but I'm not sure it's functional

stuck elbow
#

we will see in moment :)

onyx hinge
#

@idle owl so I don't understand WHY but those pins ARE acceptable to CircuitPython. I don't have a device to check if they work, however. ```>>> b = busio.SPI(MISO=board.MISO, MOSI=board.MOSI, clock=board.SCK)

idle owl
#

Neither do I.

onyx hinge
#
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Invalid pins
``` and non-valid pins are reported in at least some cases
tulip sleet
idle owl
#

Is that from the datasheet?

onyx hinge
#

is that pinout art adafruit's or rp's?

stuck elbow
#

it works

idle owl
#

I scanned the datasheet and couldn't find something useful to pull from. I'll look again

#

@onyx hinge RPi

tulip sleet
#

I think they omitted it because GP23 is not available, so the complete set GP20, 21, 22, 23 is not available

idle owl
#

Hmm ok

#

This list is better than the diagram anyway

#

I'm struggling to translate this diagram to the Feather

tulip sleet
#

that is not that good a reason, but ...

idle owl
#

What is the F8 list?

tulip sleet
#

the datasheet is the ground truth. The diagram is from RPi. I moved some elements around to make it narrower, but it's from them.

idle owl
#

CLOCK GPIN0 etc.

onyx hinge
#

I'd ignore it

idle owl
#

I'll ignore it

tulip sleet
#

that's for debugging, CPy doesn't provide it

#

You'll ignore it

idle owl
#

OK. What are UART CTS and RTS?

onyx hinge
#

ignore ignore

idle owl
#

ok

#

done and done

onyx hinge
#

if you have a 1990s telephone modem you may care about RTS ๐Ÿ™‚ but I don't think our UART implementation can do anything with it

tulip sleet
#

someday it might. if the pico C sdk provides it then maybe it should be in the pinout, since the pinout is not CPy only, is that right?

onyx hinge
#

do we go to this level of detail about 'alternate' I2C, SPI, etc, on other feather guides?

idle owl
#

We have pins 24/25 as well, and the Pico doesn't so that diagram was really not helping me. @tulip sleet Thank you for pointing out this list.

#

@onyx hinge I was asked to explain what these pins can do

#

Based on the Pico diagram. So I assume I'm supposed to go into this detail?

#

I mean if I don't explain the I2C0 and I2C1 thing, folx might try to do I2C on every set of pins that do it.

idle owl
#

Easier to explain that 0 and 1 exist, and you can use one of each, and then number them in the list.

tulip sleet
#

it is like the SERCOM<n> thing, but less general

idle owl
#

@tulip sleet I saw that, thank you

onyx hinge
#

thanks Dan for quickly clarifying with the datasheet!

idle owl
#

Bleh have to keep referring to the SPI TX and SPI RX translation on the pinouts page in our Pico guide. Finally just copied it to a text file that is visible from behind my browser. Ugh.

#

I suppose it's worth including an explanation of PWM on RP2040 and the PWM slice/input info on each pin?

tulip sleet
#

it seems like it's something confusing that needs explaining. I actually haven't tried to figure it out myself yet ๐Ÿ™‚

idle owl
#

I actually understand it, as far as I know.

#

The MP book had info on it.

#

I'll write something up and see if it works.

solar whale
manic glacierBOT
#

Tested on itsybits M0 and QT Py M0. The uart loses characters during reception at 115200 bit/s.

A PC with serial interface is connected to RX of the device and sends 26 characters (a-z) every 300ms. The attached test code reads the data and prints the result, the receive buffer is set to 64 bytes. Th test code waits for the begin of a data packet (while com.in_waiting == 0) and then reads all data it can get with a 100ms timeout. This code works fine with Version 5.3.1 but loses characters...

idle owl
#

@tulip sleet Does PWM ever require two pins? Or is it a one-pin thing.

#

Looks like one.

tulip sleet
#

one

#

it outputs a waveform on a pin

idle owl
#

Ok. I think what I have here is right then. Thanks.

onyx hinge
#

okay huh this is weird. I have a bdf font and a pcf font. the bdf font works fine. the pcf font shows only the first line, if there are newlines...!

#
(5, 8, 0, -1)
>>> f1.get_bounding_box()
(0, -249, -128, 121)
#

well that's clearly not right

#

and would explain all manner of weirdness

tulip sleet
solar whale
#

Did something recently change in how displayio or display_text handles updates to a label.

analog bridge
#

Can we move Print failure info to make it more relevant or just completely remove it... currently the ui defaults to showing it, hiding whatever fails above

onyx hinge
#
>>> import time
>>> import adafruit_datetime
>>> for i in range(10):
...     print(adafruit_datetime.datetime.now())
...     time.sleep(1)
...     
...     
... 
2000-01-01 00:27:44
2000-01-01 00:27:44
2000-01-01 00:27:44
2000-01-01 00:27:44
``` well this is weird
#

oh it's floats ๐Ÿ˜•

manic glacierBOT
manic glacierBOT
tulip sleet
tulip sleet
#

thanks!

mental nexus
#

I couldn't uncover any way for Sphinx to put the help documentation below the parameters and methods in the ReadTheDocs. Instead, I learned how to make links to other sections. I can use that so folks can quickly navigate to the parameter/function list with just a click. I'll summarize my latest Sphinx battle as they say: "If you can't beat 'em, join 'em."

mental nexus
thorny jay
#

I am checking what HAT/pHAT board could work with the Pico. Board like the Braincraft and Adafruit Voice Bonnet do I2Sout (headphone) and I2Sin (microphone). Is it right to say that on CP side we only support I2Sout and PDMin, but not I2Sin?

mental nexus
onyx hinge
#

@mental nexus it's the font-reading code, I think, the bounding box is nuts

idle owl
#

@slender iron To verify - the bootloader drive on the Feather RP2040 is also called RPI-RP2, correct?

slender iron
#

yes, that's true for all RP2040 boards

idle owl
#

Thanks. Wanted to make sure.

solar whale
mental nexus
solar whale
#

@mental nexus I am not very displayio- fluent so hard to create an issue....

mental nexus
#

No problem, will see if I can check it out on my pyportal. Give me a few minutes.

#

Strange. The pyportal is hard crashing when it tries to display the text.

mental nexus
#

Definitely something about the mutability of the text. Looking deeper now....

#

I was originally running a CP version with the new "mutable Group" option loaded. I just loaded the latest stable from CP.org, and it's working ok. I'm suspicious that display_text is highlighting some issue with the Group.pop(), maybe it can "overpop" now? Let me go dig in more...

#

BTW - tha's a cool cow.

solar whale
#

I think we need a "weblate - translator" for displayio ๐Ÿ˜‰ and agreed -- cool cow!

tidal kiln
#

^^ looks like a bug

mental nexus
#

It's working with the latest 6.2beta from CP.org. I can't find my firmware.uf2 from yesterday. I've got to go rebuild the new one with the mutable Group.

#

Maybe absolute newest has it...

tulip sleet
#

you can use any "Absolute Newest" build since later yesterday. the "Group is a list" PR was merged yesterday

idle owl
#

@tulip sleet Do you have a few to review this pinouts page? (It's super long, but I'm mostly concerned about the explanations in the Logic Pins section.) I think I explained it well enough, but I might have used a wrong word or something somewhere.

mental nexus
#

Thanks Dan, just noticed that, so it save me trying to track it down. Ok, confirmed that absolute newest is hard crash when text is changed.

#

It's crashing whenever the group list element is trying to modified on this line:

self.local_group[tilegrid_count] = face
tulip sleet
#

@stuck elbow ^^ Group as list issue. @mental nexus Could you file a quick issue with a simple test case?

mental nexus
#

Sure thing Dan. Let me make a simple code and I will add it.

tulip sleet
#

unless someone sees a quick fix...

stuck elbow
#

@tulip sleet I will look into it tomorrow

tulip sleet
#

thanks!

#

@stuck elbow I think maybe this:

void common_hal_displayio_group_set(displayio_group_t* self, size_t index, mp_obj_t layer) {
    _add_layer(self, layer);
    _remove_layer(self, index);
    mp_obj_list_store(self, MP_OBJ_NEW_SMALL_INT(index), layer);
}
#

should be mp_obj_list_store(self->members, MP_OBJ_NEW_SMALL_INT(index), layer);

#

@mental nexus I can make a quick test build, for which board? If you have time to test

#

i think i have the fix

manic glacierBOT
#

The following code causes a hard crash when the group element is changed:

import time
time.sleep(5) # allow time to Ctrl-C if you need to

import displayio

my_group=displayio.Group()
bitmap1=displayio.Bitmap(1,1,2)
palette=displayio.Palette(2)
tilegrid1=displayio.TileGrid(bitmap1, pixel_shader=palette)
tilegrid2=displayio.TileGrid(bitmap1, pixel_shader=palette)

print('appending')
my_group.append(tilegrid1)

print('len(my_group): {}'.format(len(my_group)))

prin...
mental nexus
#

I'm using pyportal

tulip sleet
#

tnx, hold on

mental nexus
#

Thanks Dan.

#

No crash on my test code, and now the cow code is giving me a smiling Cow. (note: But now I can't see the REPL with Mu.)

#

Looks good to me.

#

Screen can get to the REPL ok.

tulip sleet
#

ok, I will make a PR! This build has the secondary CDC port, so Mu may be confused about which is the REPL COM port. However, I have always seen them created in consecutive order, and Mu looks for the first one, when I tested it

stuck elbow
#

@tulip sleet argh!

tulip sleet
#

simple fix!

stuck elbow
#

how did that work in my tests?

mental nexus
#

Deshipu, sorry I missed it with my testing. I was only popping and appending with my initial look at it.

stuck elbow
#

yeah, me too, come to think of it

mental nexus
#

And I probably added labels, but never tried to modify an existing label.

stuck elbow
#

I will test it all a bit more over the weekend, I wanted to finally start on writing the game

mental nexus
#

Thanks for the quick fix, dan!

manic glacierBOT
stuck elbow
#

@tulip sleet thanks for finding it, I was looking straight at it just now and didn't see it

tulip sleet
#

np - that was an easy one

solar whale
#

@tulip sleet thanks!

tulip sleet
#

@solar whale if you can review, I can merge when it's built

solar whale
#

@tulip sleet I canโ€™t test until early tomorrow. Happy to do it then if no one else can do it first.

mental nexus
#

And many thanks to deshipu for this awesome addition!๐Ÿ’ฏ

tulip sleet
#

kmatch98 do you ahve a github id?

mental nexus
#

Itโ€™s the same.

idle owl
#

@tulip sleet If you have @mental nexus comment on it, I can approve it so you can keep moving forward with it. If that works for you.

#

Actually Deshipu already commented. I can approve if you like.

tulip sleet
#

that would be great, thanks!

lone axle
#

@idle owl I just noticed displayio_layout never had a release. Should I go ahead and do that? or does it need pip env credentials or anything else you know of I should hold off for?

idle owl
#

@lone axle All of that is global, so no, you can go ahead and do a release. That's necessary to add it to the bundle. It's not in the bundle, I filed an issue for that if you want to add it.

lone axle
#

@idle owl one more question, on libraries that are failing the duplicate code check within module code (as opposed to example code) is the intention that we should refactor the module? or look into a similar fix as the examples?

idle owl
lone axle
#

will do, thank you.

onyx hinge
#

@slender iron I am a bit puzzled .. when I ctrl-c and re-run the pioasm_neopixel demo it shows the wrong colors sometimes, and when it starts showing the wrong colors it's wrong until I reset... I'll try to characterize it better after S&T unless it cures itself.

gloomy shuttle
#

Wasnโ€™t there a floating issue with pins before that needed clean up and a ctrl-c might not be allowing that to happen?

fossil gorge
idle owl
#

@fossil gorge Please send me an email at kattni(at)adafruit.com with that suggestion to discuss when I'm back on Monday.

fossil gorge
#

Woah, copied your email address verbatim, with the (at) in there, pasted into GMail, and it "decoded" it. The machines, they're learnining!

manic glacierBOT
gloomy shuttle
lavish saffron
#

I'm running Black on my local repo but when I push to GitHub, Black reformats a file. What settings do I need to change on my local version of Black so that it matches the pre-commit version? Thx
`
black....................................................................Failed

  • hook id: black
  • files were modified by this hook
    `
manic glacierBOT
#

There were changes to the IDF with 4.3 that require changes to i2c and spi. I2C is mostly done and seems to work as before. There is an issue with soft reboot / or wifi. You get to pick which one works. I am starting to look at SPI now. So basically should be the same as before once everything works. SPI had a lot of changes I think so I am hoping whatever microdev did works out of the box. :)

tulip sleet
#

You can install pre-commit locally to vet your changes before you commit:

$ pip3 install pre-commit
$ cd the-repo
$ pre-commit install
manic glacierBOT
#
#
[adafruit/circuitpython] New tag created: 6\.2\.0\-beta\.3
orchid basinBOT
tulip sleet
jaunty juniper
#

@slender iron I noticed the QT PY(s) have a NEOPIXEL_POWER pin that is enabled in board_init, too late for init_status_leds and in particular wait_for_safe_mode_reset. How would we change that ? Would it be with a define that would be used in init_status_leds ? An entry in pins.c or board.c ?

manic glacierBOT
manic glacierBOT
manic glacierBOT
#

I've been trying to work with the watchdog module on my UnexpectedMaker FeatherS2 (esp32s2) running 6.2.0-beta.2, and have noticed that the watchdog.deinit() function doesn't successfully stop the watchdog, nor does it raise an error indicating that deinit() is not available for this platform. My example script is:

from watchdog import WatchDogMode, WatchDogTimeout
from microcontroller import watchdog as w

print("Initial mode:", w.mode)
w.timeout = 10  # Set a timeo...
manic glacierBOT
manic glacierBOT
manic glacierBOT
#

Hello, I am currently trying to connect to some ESP32-S2-Saola devboards that are running CircuitPython 6.1.0 via the USB OTG pins, but the device shows up as as "Unknown USB Device (Device Descriptor Request Failed)", and I see the following error in Windows' Device Manager:

Windows has stopped this device because it has reported problems. (Code 43)
A request for the USB device descriptor failed.

The boards I tried are manufactured by Espressif and are powered by the ESP32...

solar whale
#

@tulip sleet @tidal kiln 6.2.0beta3 works fine with the "Milk" detector -- thanks for the quick fix!

manic glacierBOT
manic glacierBOT
manic glacierBOT
#

Tested this with my sample watchdog deinit() script, and it all looks good here! The script:

from watchdog import WatchDogMode, WatchDogTimeout
from microcontroller import watchdog as w

print("Initial mode:", w.mode)
w.timeout = 10  # Set a timeout of 10 seconds
w.mode = WatchDogMode.RESET
w.feed()
print("Watchdog running mode:", w.mode)
w.deinit()
print("After deinit mode:", w.mode)

while True:
    try:
        while True:
            pass
    except WatchDogT...
tulip sleet
#

@slender iron @onyx hinge I am trying something different with release notes: I created a draft beta.4 release note immediately and will be adding PR's as they are approved. Let's see if I can keep up. It will make it a bit easier to decide to do a beta.

manic glacierBOT
#

A user of TinyUSB noticed the MIDI Endpoint descriptors were 7 bytes instead of the 9 bytes specified by the USB MIDI 1.0 spec. The size reverts to 7 bytes in the USB MIDI 2.0 spec, adopted in May 2020.

This was fixed by @hathach in https://github.com/hathach/tinyusb/pull/688. He noted that CircuitPython is using 7-byte descriptors.

The odd thing is that our current code works. I think the descriptors may even have be...

umbral dagger
#

The modules SSL and Socketpool aren't present on the Matrix Portal M4. Explaination?

slender iron
slender iron
#

it's SSL and socketpool equivalents should be provided by a library (ESP32SPI)

gloomy shuttle
#

@gilded cradle thank you for that matrixportal PR. Any idea on why that data source was causing that memory error to begin with?

gilded cradle
#

@gloomy shuttle yeah, the data source is probably too big. I did a gc.mem_free() right before the json parsing and it had like 52KB free.

gloomy shuttle
#

Alright, thank you!

gilded cradle
#

The reason Magtag works is because the requests module is built into CP on the ESP32-S2

#

So it has a bit more free memory

#

yw

#

Still, I'm going to see if I can make it a bit more memory efficient.

manic glacierBOT
slender iron
manic glacierBOT
manic glacierBOT
#
  • The ability to query the depth of the rx fifo
  • The ability to set pull up/down/bus-keep
  • A function to check if pins are sequential

Also a few other things "crept in":

  • A missing deinit call in PDMIn
  • StateMachine.h was not a self-sufficient header, it needed the declaration of mcu_pin_obj_t

With this tree, it's possible to implement a form of IncrementalEncoder in pure Python:

Click to show Python code

# This example is adapted in part from micropython:
...
onyx hinge
#

Whee. PIO is so well-behaved. What a breath of fresh air.

manic glacierBOT
#

I put a printf at the end of _update_current_y() in TileGrid.c on a Metro M4. The values for self->absolute_transform seem way off. dx and dy are multiplicative scaling factors, so a dx of 117 is way off. The absolute_transform structs are shared as pointers: the child points to the parent one, so if it got smashed, bad things would happen. The Metro M4 doesn't crash but that's just an accident. This is not port-specific. The bug still needs to be found but this is pointing tow...

manic glacierBOT
mental nexus
#

@tulip sleet Thanks for the help with graphviz. Got it working on the displayio_layout library documentation today. Thanks for the detailed steps to get it working!

tulip sleet
#

@slender iron I am trying to fix the transpose_xy bug. I know what is wrong, but I'm not sure about a NULL absolute_transform in TileGrid. the _update_current_x and y routines assume the aboslute_transform is not NULL.

VectorShape in vectorio has a special null_transform value. to avoid this It never uses a NULL pointer. I could use that and never use a NULL pointer, but it might slow things down? Just not sure of your intent in this code. If .transpose_xy is set to true with a null transform, would the position move or not?

tulip sleet
slender iron
#

I've paged out that info. I'd need to go back and squint at it

#

@mental nexus has been in that code more recently

mental nexus
#

I've never delved into the transform issues in the TileGrid core (actually just learned that transformation it was available last week). And I know even less about vectorio.

tulip sleet
#

ok thanks. the last q is really the operative one. If the tilegrid doesn't move with a null transform when transposed, then it's easy to fix. I will stare at it a little bit longer

#

that's not the right q, but yes, I need to update the width to be the height and vice versa, so I need to do something

manic glacierBOT
#

Using cPy 6.1.0 firmware and load to nucleo-f767zi board. Selecting properties on cPy drive shows total size about 90K which is significantly lower than the 2M available on the board. Flashed uPy for same board and it shows the correct amount of available storage 2M. Looked at the STM32F767_fs.ld files in each distro and find that the uPy distro version has another line in the file: "FLASH_APP (rx) : ORIGIN = 0x0800x000, LENGTH = 2016K
I believe this line needs to be inserted into the cPy...

rose cargo
#

Build errors with latest distro and STM32F767ZI nucleo board. Error output is:
make BOARD=nucleo_f767zi
Use make V=1, make V=2 or set BUILD_VERBOSE similarly in your environment to increase build verbosity.
QSTR updated
../../lib/tinyusb/src/common/tusb_fifo.c: In function 'tu_fifo_write':
../../lib/tinyusb/src/common/tusb_fifo.c:149:6: error: assuming signed overflow does not occur when assuming that (X + c) < X is always false [-Werror=strict-overflow]
if ((p > p + offset) || (p + offset > f->max_pointer_idx))
^
cc1: all warnings being treated as errors
../../py/mkrules.mk:55: recipe for target 'build-nucleo_f767zi/lib/tinyusb/src/common/tusb_fifo.o' failed
make: *** [build-nucleo_f767zi/lib/tinyusb/src/common/tusb_fifo.o] Error 1
Need some help with this error...

manic glacierBOT
#

Fixes #4284.

Setting TileGrid.transpose_xy forces the x,y, height and width to be recalculated using _update_current_x and _update_current_y. Those routines did not handle the case of absolute_transform being NULL, and used NULL as a pointer to a transform, so they got random values.

This fix guards against that. It also makes null_transform, an identity transform defined for use in vectorio, be a global. I used it in the fix.

An alternative fix would be to never use a ...

tulip sleet
manic glacierBOT
#

I thought I'd try upping the buffers a lot.

left = WaveFile(left_file, bytearray(2 * 8192))
right = WaveFile(right_file, bytearray(2 * 8192))

Those (16k stereo 16bit) play sequentially with some minor distortion but when some PWM GPIO stuff runs and audio plays the Pi Pico dies and becomes non responsive over USB. PWM output is left running. Never appears to recover. I reset via the RUN pin and it does not do the hard fault handler thing. Do you want that as a separate issu...

manic glacierBOT
#

For general clock changing we could just make microcontroller.cpu.frequency settable. We'd need to validate that all of the downstream clocks are ok when this is done though.

@tannewt Was something similar to making microcontroller.cpu.frequency settable ever done? Running the stm32f405 at 168Mhz creates noise that jams GPS antennas, so the stm32f405 feather cannot be used with the GPS featherwing at that freq. Having it settable would allow users that are using it with gps to ...

#

I tested this with a FeatherS2, CircuitPython 6.2.0-beta.3, and the latest adafruit_il0373.mpy. There were no errors.

One thing that I have seen is that a stray copy of a library is left in / on CIRCUITPY instead of in lib/. sys.path is set so that / searched before lib/. Also, any .py version of a file takes precedence over a .mpy version, so if both were available, you might have gotten an older version of the library.

I will close this for now but please reopen if y...

thorny jay
#

I have had "freeze" of the console on the PICO and Mu being unhappy with very simple code in the REPL: import board + import digitalio (nothing else). This is after stopping code.py. And this is with beta3. There must be something wrong that interact with my code.py and what take place in the REPL just after. I still get unresponsive to Ctrl+C from time to time.

#

Sorry, I cannot really replicate, just if you have similar issue but ignored it, then I am not alone.

manic glacierBOT
#

Two questions:

  1. Should I still work on the feather_m0_express in the top comment for building out the ninja script? Or is there reason to merge the years' worth of changes from main back to the ninja branch?
$ git clone -b ninja https://github.com/tannewt/circuitpython.git
$ cd circuitpython
$ git log --oneline origin/main..ninja
8d63932dd (HEAD -> ninja, origin/ninja) Fix qstr generation. Fails with linker script now
d2838e585 Merge remote-tracking branch 'adafrui...
mental nexus
#

After the checks pass on a library pull request, how can I go review the documentation files that were generated during the Sphinx build?

manic glacierBOT
#

@dewalex no, unfortunately. There is no way to modify them from Python. If you are confident with C, the existing option for reducing clock speeds would be to build Circuitpython yourself, after redefining the clock macros in ports/stm/peripherals/stm32f4/stm32f405xx/clocks.h in ports/stm/boards/<yourboard>/mpconfigboard.h. This has been done once before for the stm32f746g_discovery board by an advanced user. You would also need to calculate the appropriate clock settings using ST's Cub...

#
tidal kiln
atomic summit
#

Hi folks, can I please get some clarification on how AnalogIn (ADC reading) on the ESP32-S2 port is handled re ADC setup for range?

#

I remember some discussion early on about folks confused it wasn't 0-3.3V(ish) by default and there was discussion about making it 0-3.3V in CPY instead of the default 0-1.1V range.

livid cypress
atomic summit
lavish saffron
still zephyr
#

@tulip sleet Heads up I have just tested the fix for the transpose_xy, with the simple code and the Magtag did not crash, I will do more testing and put my final findings in GIthub, thanks for the fix!!!!

manic glacierBOT
thorny jay
#

So those MCU running from flash, could they run faster running from ???

#

Thank you Scott.

manic glacierBOT
#

@hierophect sadly my confidence in C is even less than Python. Do you think these boards could have two separate bin files for setting up CP, where the user could choose which one to install based off their use case? I would imagine the GPS featherwing is the most popular wing, so there will be a lot of people that would have the need to run the clock one step down.

manic glacierBOT
onyx hinge
#

looks like main doesn't build, a trinket m0 fw is too full. if nobody else picks it up I'll look tomorow I guess.

manic glacierBOT
still zephyr
#

Did we change something from 6.1.0 to 6.2.0-beta3 that could affect the SPI, the library adafruit_bitmapsaver works for me in 6.1.0 but fails in 6.2.0- beta3?. I have problems when saving to the SD card.

manic glacierBOT
tulip sleet
manic glacierBOT
tropic rain
#

Is there a GUI tool to copy CPy libraries to a connected board. If not, this would be super useful. It could also keep the library bundle up to date. I'd make it myself but I'm net very good with making good usable GUIs.

slender iron
#

I think our plan is to integrate circup into editors/extensions

tropic rain
#

Thanks, I didn't know about circup so I'll check it out.

manic glacierBOT
tropic rain
onyx hinge
#

I love circup, it took me a long time to start using it and I regret that I waited. If we can give users a good UI for it, it'll be even more amazing.

blissful pollen
#

@onyx hinge Good catch on the never reset statemachine - it actually does already exist just not in the .h file. So fixing up my build for it

tropic rain
onyx hinge
#

@blissful pollen you're welcome

jaunty juniper
#

or maybe you mean like reading a requirements file ?

tropic rain
#

I mean if I do 'circup install xxxx' that it looks at what libraries xxxx depends on and installs everything.

jaunty juniper
#

if you see cases where it doesn't, that's a bug to report

tropic rain
#

That's awsome. I'm working with the Wii nunchuk atm so I'll check it out.

manic glacierBOT
#

Here is another vote for it :)
By now i've tried arduino, vusb, teensy, and pico pi and only teensy seems to have a full featured keyboard that works in BIOS and KVM devices.
The teensy itself is also a composite device, having keyboard, mouse, serial and still works fine with a KVM. So my best guess is, that it only depends on a correct implementation of the boot keyboard.
As far as i know, a boot keyboard needs its own descriptor and endpoint and on top of it, it has two additional funct...

manic glacierBOT
#

We are currently out of endpoints on most boards with 8 endpoints, having added a second CDC. If someone would like to contribute boot keyboard and mouse descriptors and compile flags, we'd be happy to include them. We would not turn them on normally, since they would remove having MIDI or the second CDC available by default.

This is another indicator for user-configurable USB and USB HID descriptors. However, we are pretty much out of space on the smallest builds, and don't have room to a...

manic glacierBOT
#

The trinket_m0 build was running out of space on the latest PR's. It has more in it due to having a DotStar (I think).

These compile options saved about 500 bytes total.

Still left as a possibility is to use a -Os libgcc.a, instead of the current -O2 one, which makes software floating point and various other arithmetic routines noticeably smaller (by at least 1kB or 2kB, I forget which). I have not measured the performance decrease.

manic glacierBOT
twilit geyser
analog bridge
#

@twilit geyser audioio is not currently implemented on the S2.

manic glacierBOT
twilit geyser
analog bridge
manic glacierBOT
#

@dhalbert boot keyboard doesn't need to be on its own interface and/or take extra endpoint. It can be used with existing HID device. Basically the HID device has 2 mode (or protocol): boot mode, and report mode (default).

  • In report mode: it is composite (keyboard + mouse + media key)
  • In boot mode: it only report 8 bytes of keyboard report (no report ID)

Most bios will always start with SET_PROTOCOL = BOOT upon enumeration. We only need to handle the callback, set the mode correctly ...

manic glacierBOT
lone axle
#

Is there a definitive place to check whether a certain merged PR was included with a specific release like the new beta.3 release for instance?

tulip sleet
#

the release notes lists all the PR's between beta.2 and beta.3

#

the betas are currently done from main, so anything before the time of the tagging would be included. We have not created a beta branch separate from main

#

this is not always true, but right now main and 6.x are the same

#

the release notes are done by hand, so I might have missed one ๐Ÿ™‚ but I try to be thorough

lone axle
#

Okay thank you. The one I'm interested in is microcontroller.nvm on rp2040. I'm assisting a user whose having some trouble with that. Wanted to make sure it was expected to be in beta.3 before we got too far along.

#

I do see that one listed there. This is great, I'll have to remember to check these release notes. Really great source of information here.

manic glacierBOT
#

Unfortunately, the gains are not uniform. for instance, "meowmeow" no longer fits:

Build meowmeow for de_DE took 17.64s and failed
make: Entering directory '/home/runner/work/circuitpython/circuitpython/ports/atmel-samd'
Use make V=1, make V=2 or set BUILD_VERBOSE similarly in your environment to increase build verbosity.
/usr/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: build-meowmeow/firmware.elf section `.text' will not fit in region `FLASH_FIRMWARE'
/us...
manic glacierBOT
#

Creating this so that frequency/overclocking/underclocking issues can all go to the same place, as opposed to being specific frequency requests per port.

The idea here is to make microcontroller.cpu.frequency adjustable at runtime to allow either overclocking for performance gains (#4176) or underclocking for power savings/noise reduction (discussion in #2284). However, this could end up being a bit tricky in practice, since system clock changes tend to cascade into the peripherals and c...

stuck elbow
#

I wonder, do we need to build all languages for every PR, or we could do just one, whichever is the largest at the moment

manic glacierBOT
tulip sleet
prime flower
#

@lone axle heya, are you around?

lone axle
prime flower
#

This is a PR fixing pylint's duplicated code errors, am I understanding that correctly?

onyx hinge
lone axle
tulip sleet
prime flower
#

@lone axle I'm going to see if my PR fails, then merge into master and merge into my PR. Thanks for the clarification.

#

@onyx hinge I would but don't have any rotary...rotaries..around my desk rn :\

onyx hinge
#

@prime flower I discovered the same. I know there are some somewhere because adafruit.com says I bought them in the past.. but I can't find 'em. Software is fine for generating test patterns, though

prime flower
#

been there!

onyx hinge
#

when you've looked in all the likely spots .. give up and order another

tulip sleet
onyx hinge
#

@tulip sleet thank you for testing!

manic glacierBOT
manic glacierBOT
#

Print Failure Info is for printing differences detected by 'Test all'. When some other step fails, then "*.exp" doesn't match any files at all, and this step fails too.

Following https://stackoverflow.com/questions/4839214/does-ash-have-an-equivalent-to-bashs-nullglob-option detect when "*.exp" doesn't match anything and avoid an error.

This is hard to test, so testing performed: Looked at 7 lines of shell script and was unable to see any problems.

This is an alternative to #4334,...

onyx hinge
#

@tulip sleet think I should merge #4329 based on testing, or wait for scott to give it a code review next week?

tropic rain
#

I'm having trouble with my QT Py with the GD25Q16 soldered on the bottom. I loaded is with the 6.1.0 haxpress uf2. I run the neopixel blink code for the QT Py and it works but when I hit the reset button or unplug/plug the board it reverts back to hello world and the lib directory is empty. Here's a pic of the flash chip soldered on. It looks OK to me.

idle wharf
#

I am looking for a specific open issue and can't find it. Does anyone recall which item is open to implement an HTTP server? Hmm... now that I read that back to myself, maybe this is a library not in the CP repo...

twilit geyser
#

If I wanted to have a FeatherS2 output audio (not just a beep), do I have any options besides using a separate board for that?

tropic rain
left mirage
#

is there any way to read Neopixel data from the seesaw i2c?

twilit geyser
#

I kinda did?

#

how would that be very useful? AFAIK, i'd then need a I2S to output board

#

although that wouldn't be a problem i guess

idle wharf
#

Yeah, there is not a speaker on the FeatherS2 so you'll need something for sure

#

I bet there is an amazing learn guide on Audio, let me look

solar whale
#

@tropic rain How are you copying your files to the QT Py?

twilit geyser
#

yes

idle wharf
#

@twilit geyser nothing specific to the Feather S2... There is some Audio on the Maytag guide, but it has different hardware components than the S2.

tropic rain
twilit geyser
#

alright, cool

#

thanks!

solar whale
#

Are you ejecting the CIRCUITPY drive before resetting or unplugging it?

tropic rain
#

Tried both with no luck.

tulip sleet
tropic rain
#

I also tried the 6.2.0 beta uf2 file and it acted the same.

solar whale
#

The haxpress version?

manic glacierBOT
tulip sleet
#

@tropic rain are you copying the new UF2's to QTPY_BOOT (correct), not CIRCUITPY? I just tried this on a QT Py Haxpress and unplugged and plugged it in and it's working for me

#

make sure the version shown when the REPL starts up is correct

#

did you get the GD25Q16 from us? I can't see any markings on the one you soldered on. the filesystem would get reset only if when the board restarted it thought there was not a valid filesystem on the board. Then it would reformat it and put back the "Hello, World" program.

manic glacierBOT
#

@hathach Are you sure about the not needed extra endpoint? I tried a few times getting this to work with the arduino environment and to have an idea where the issue is i used this tool https://www.thesycon.de/eng/usb_descriptordumper.shtml and a real keyboard always used an extra endpoint.

@dhalbert
during my research i never found someone asking for a boot mouse. Most BIOSes are configured by keyboard and Hotkeys in KVMs are also done with a keyboard

thorny jay
tropic rain
tulip sleet
#

did the flash chip come from Adafruit?

manic glacierBOT
idle wharf
#

Is the Feather M4 Express the most capable (non ESP32-S2) feather I should use for testing?
My plan is to also get an Airlift Featherwing for those times when I make sure something works on non-native wifi.

twilit geyser
#

I think so

idle wharf
#

Or put differently.. what's the most common setup CP users have ... that's probably the better question.

twilit geyser
#

the M4 is great, I love it

#

but somehow i fried two of em

#

so be careful

fathom shell
#

I'm deeply in love with my M4

twilit geyser
#

โค๏ธ

fathom shell
#

I'll say that the S2 has been catching my eye lately

twilit geyser
#

same, but i need audio for my next project

idle wharf
#

Thanks... ordering now ๐Ÿ˜‰

fathom shell
#

woot

jaunty juniper
#

the Samd51 M4 is the one used in Adafruit devices that have the ESP32SPI integrated

#

I do my Airlift tests with a Feather NRF52 Express though, 'cause I already put the right headers

idle wharf
#

I ordered the two-board setup as a worst case scenario as far as testing goes. ๐Ÿ˜‰

tropic rain
tulip sleet
#

@tropic rain so is the scenario you are seeing?

  1. Start with a fresh CIRCUITPY
  2. Edit code.py (e.g., just change "Hello, world" to something else)
  3. Save the file
  4. ctrl-d in the REPL and you see the altered program run
  5. unplug and replug the board
  6. code.py reverts to the original "Hello, world"

Is that right? Do you have other boards that work fine on the same computer?

tropic rain
#

I'll give that a try. Here's some new info, it works fine if I use the regular non-SPIFlash build of CPy. Is there a way access the flash using spi using this build to test it. I could write some diagnostics if there aren't any already.
I'll look around for another QT Py. I bought 3 but I forget if I gave one to a friend.

blissful pollen
#

yay my feather RP2040 arrived, that was fast. I also somehow ordered two mini jTag debuggers instead of just 1 oops!

manic glacierBOT
#

Firmware

Adafruit CircuitPython 6.2.0-beta.3 on 2021-03-04; Raspberry Pi Pico with rp2040

Behavior

On usb_cdc.serials[0], receiving a CTRL+D (\x04) control character causes the board to reset.
On usb_cdc.serials[1], nothing happens.

Additional Info

Was just expecting the board to reset, as sending a CTRL+D (\x04) over usb_cdc.serials[0] has that behaviour.
Maybe nothing happens because the REPL doesn't read that channel, and t...

tropic rain
# tulip sleet <@!626251055658958879> so is the scenario you are seeing? 1. Start with a fresh ...

I did find my 3rd one and I did what you suggested. I put it into boot mode and copied the 6.1.0 Haxpress uf2 file, reset the board. hit return in REPL. I change code.py to say "Goodby World!". I hit control-D and it printed out the changed text. I hit reset and I printed "Hello World". So either I got a batch of bad flash chips or I damaged them while soldering them. I'm using a Weller temp controlled station. Being new at soldering surface mount, I prob did heat them a little longer than I would like but I don't think it was extreme. I guess some diagnostics would be in order. If there's no CPy method to do this I could look around for Arduino code to do so.

tulip sleet
tropic rain
tulip sleet
#

try writing a larger file (> 4k) or several files to CIRCUITPY. It's possible CircuitPython not actually writing to the flash successfully but using an internal cache. Your soldering looks OK to me and the orientation is correct.

#

what editor are you using?

tropic rain
#

I'm using vim and then cp to move the file to the board. In the last test where I edited HeloWorld I edit xed which is the default text editor in mint.

tulip sleet
#

after you cp do a sync on the command line. That will make sure it's written out

#

but try writing a much larger file that's > 512 or maybe 4k, like just a bunch of long print statements.

#

i will say I have not seen a problem like this before, where a write appears to be successful

alpine nimbus
#

Well that's interesting. I've been passing a 60 character string to magtag.exit_and_deep_sleep and the magtag has been dutifully sleeping without complaint. What I meant to do was multiply an int by 60 and sleep that long. This worked fine until I switched to a 2 digit string. Maybe it would be a good idea for exit_and_deep_sleep to type check its input? Or can it? Should I file an issue about adding error checking?

tulip sleet
alpine nimbus
#

I think the old code was like this

#

update_frequency = secrets['update_frequency'] * 60
magtag.exit_and_deep_sleep(update_frequency)

#

when I changed update_frequency in the secrets file to 4 digits I got some kind of error about bad floating point type

#

and then I noticed that instead of multiplying a number by 60 it was making 60 copies of a string

#

so update_frequency went from being "3600" to "360036003600...." etc

#

which is my error but it seems like it would be helpful for exit_and_deep_sleep to do some error checking, if possible

#

i guess if that's c code then maybe it doesn't know what type its input is

tulip sleet
#

you are supposed to pass an alarm to exit_and_deep_sleep() so I'm surprised it didn't complain to you ๐Ÿ™‚

#

there is code to validate that it gets passed a list of alarms. I'm confused you got it to work, unless it was a very old version?? before some checks were added (thought I thought the checks were there from the beginning).

jaunty juniper
#

MagTag's magtag.exit_and_deep_sleep takes a float

blissful pollen
#

@tulip sleet When i plug my Pico or rp2040 feather in I'm seeing two COM ports now, is that expected with your COM port changes?

jaunty juniper
#

I should say PortalBase

tulip sleet
#

YES, first one is the REPL, second is just data: you can send anything back and forth, no ctrl-c issues or anything

tulip sleet
#

i don't use the library very much :0

jaunty juniper
#

it might need to be renamed to imply it's only time alarms

#

eh probably not (the underlying call has _until_alarms)

onyx hinge
#

@tulip sleet what would you use for a quick gut check of CircuitPython interpreter speed? Something more sophisticated than 'for i in range(LARGE): pass' ?

blissful pollen
tulip sleet
#

I would just do some arithmetic in the loop or something like that

alpine nimbus
#

@jaunty juniper Oh, its supposed to be a float? I fixed my problem by casting the string to int. should I change it to float? It seems to work ok

tulip sleet
tulip sleet
#

that's what happened

blissful pollen
#

Thanks I'll poke at it some more

onyx hinge
#

drat, my good idea cuts interpreter speed in half ๐Ÿ˜ฆ

alpine nimbus
onyx hinge
#

maybe that test was flawed, it was half the speed just one time

tulip sleet
tulip sleet
tropic rain
# tulip sleet after you cp do a `sync` on the command line. That will make sure it's written o...

OK so I made a program that looks like this
'''
while True:
print("Hello World!")
<repeat 511 times>
'''
and it gave me this error:OSError: [Errno 5] Input/output error (which I am ignoring)

So I commented out all but 4 of the print statements so the file is still long (a bit over 12k) and it runs but it still reverts to Hello world when reset. I did do a sync after the cp but the program had already started showing output so it was written across USB.

I'll try the RPi now and if it still fails I'm going to write an Arduino program using the SerialFlash library to test the flash.
On the QT Py it looks like the flash chip is wired to do SPI and not QSPI. Am I correct about this?

tulip sleet
#

that's right, the SAMD21 doesn't support QSPI

#

@tropic rain does your RGB led turn blue every time you power or reset the board? That indicates it is writing a new copy of BOOT_OUT.TXT because it can't find an old one or the old one is different. That would be a very good indicator the flash isn't working right.

It's possible you have some kind of power problem. If the board comes up but the voltage is low, the CPU can start running before the flash chip is ready, and it will look like it's unformatted. Try another USB-C cable if you have one

#

or if you are using a USB hub, try removing it (or interposing a powered hub)

lone axle
#

@still zephyr do you have the LabelBase class started already? if so is that pushed to github or anywhere?

tulip sleet
#

i am beginning to lean toward a power or cable problem as the most likely issue, given that it happens on multiple boards

manic glacierBOT
#

I found two size optimizations in the main "virtual machine" implementing function, mp_execute_bytecode. It causes a modest speed decrease. It would be possible to make these trade-offs configurable, and only enable them on highly flash-constrained boards if desired. We could also take just one of them now and leave the other for later.

There were two optimizations:

  • First, (thanks to @dhalbert for a related idea about "pointer compression") a table called entry_table was reduced from...
onyx hinge
#

well that was exciting!

tulip sleet
#

wowza!

still zephyr
lone axle
still zephyr
#

Ok. Let me know i do not have much. But we can discuss and I can send my ideas I was arranging my desk to work precisely on that. 20 minutes sounds good

still zephyr
tropic rain
# tulip sleet <@!626251055658958879> does your RGB led turn blue every time you power or reset...

II do see the LED flash pink and blue for a really short time before it blinks green. I'll try a a different cable and also the RPi. I also can use a stand alone power supply. If I program the QT Py with the blink program and then unplug the USB cable and then start using the separate supply this should provide a solid power source on startup. This will eliminate a few variables (cable, hub, computer).

lone axle
tulip sleet
#

it waits a good 1.5 seconds as blue if it's writing boot_out.txt

jaunty juniper
#

soooo how do I cancel a pull request that I made and is actually bad ?

tulip sleet
#

@jaunty juniper just close it

#

if it's circuitpython I can cancel the CI jobs

lone axle
#

@still zephyr okay. I am back now. ready when you are.

still zephyr
#

I am ready.

lone axle
#

you prefer text chat or want to go to one of the voice rooms?

still zephyr
#

voice rooms it would be easier

lone axle
#

I will join Amelia room.

still zephyr
lavish saffron
#

HI, is there a learning guide to updating a library that is already in the community bundle? Thank you

onyx hinge
#

@lavish saffron I don't know if there is. If it's your library, you just have to create a new release tag and then it should automatically be picked up within a day. If it's not your library, you need to go through the pull request process with the library author, and then they need to create the new release tag.

lavish saffron
#

Ah OK. thanks. I've created the tag, so I'll wait and see

manic glacierBOT
#

Firmware

Adafruit CircuitPython 6.2.0-beta.3 on 2021-03-04; Raspberry Pi Pico with rp2040

Code/REPL

import usb_cdc
usb_cdc.serials[1].connected

Behavior

Running the following code ALWAYS returns False, even when reading data to/from the Raspberry Pi Pico, on that USB CDC channel.

>>> import usb_cdc
>>> usb_cdc.serials[1].connected
False

Additional Info

Despite returning False, th...

onyx hinge
#

@lavish saffron If it's not been picked up after 24h then check back or file an issue in the community bundle so we can help you out! Thank you

manic glacierBOT
#

@garethhcoleman It should be possible to add to the en_GB translation weblate now! We're slightly changing our strategy about when builds with particular translations are enabled, so @tannewt can work with you to define a milestone to reach before we turn that flag on. Thank you for helping us improve CircuitPython, and don't hesitate to ask (especially in Discord) if you have questions about anything.

manic glacierBOT
manic glacierBOT
manic glacierBOT
lone axle
#

it still needs some more work for actions, but I think the duplicated code issue is handled in this one

still zephyr
#

Good, I see good point you create label and bitmap_label depending on Base_Label that depends on displayio.Group. very nice!

lone axle
#

Needs some more thorough testing, but so far things seem to be working correctly ๐Ÿคž. I'll probably work on this some during the stream.

still zephyr
#

Now I can apply my 360 text to this :). Do you want me to test it?

lone axle
#

Sure if you'd like to give it a try, that would be awesome.

still zephyr
#

yes, no problem

still zephyr
#

@lone axle works good I used all the previous test code for previous PR

lone axle
#

Thanks for trying it out!

still zephyr
#

We could try it it on a device on the stream ๐Ÿ™‚

lone axle
#

Yep, was just getting my devices set up under the camera. I'll test it out on devices and hopefully get it cleaned up all the way to pass actions.

manic glacierBOT
#

I revised implementation design a lot, and have just done "git push".
deep/light sleep, with/without USB host connected, are tested. pretending-to-deep-sleep works as well.
Measured consumption current while in deep sleep (now it is System ON idle) looks larger than that of previous implementation, I would investigate it.

Here is the implementation note:
README_impl_r3.txt

Implementation Notes on nrf sleep...

manic glacierBOT
manic glacierBOT
#

The C# code uses the SerialPort.DataReceived event, and waits for a text line.
(https://docs.microsoft.com/en-us/dotnet/api/system.io.ports.serialport.datareceived?view=netframework-4.7.2)

It opens the connection and waits.
There's nothing written to close the connection.

<hr>

I've tried to stop on the serial.ReadLine(); method, in C#:
image

But it still returns False:
...

gaunt spruce
#

Hi all, Im a total newb and trying to tinker with Circuit Python on a Magtag device. I have followed the instructions by uploading the UF2 file and imported the minimum libraries outline on Adafruits site but Im getting an error stating Import Error: no module names 'adafruit_display_text.wrap_text_to_lines' Any thoughts on how to resolve this?

blissful pollen
stone iris
#

Is rotario available for the pico yet?

onyx hinge
manic glacierBOT
manic glacierBOT
tropic rain
#

@tulip sleet Regarding the QT Py prob. All 3 boards act the same when connected to the RPi. I flashed them with the non-haxpress uf2 and they work fine. I'm going to move forward with the thing I wanted to do with them. At some point soon, I'll use some Arduino code to run some diagnostics on the flash and maybe get to the bottom of it or just add new chips to my next order. My guess is that I did something to fry them. Thanks for your help.

manic glacierBOT
manic glacierBOT
#

I am not sure why CP 5.3.1 is working, but I think I can offer some insight here. The Cortex M0 UART has a 16-byte FIFO buffer. You will note that in your output the first 16 characters (up through the 'q') are correct. Your code has a .01 second loop sleep, which is 10 milliseconds. At a baud rate of 115200, the 26 characters in your test take up about 1.8 milliseconds. So, if those characters arrive while you are sleeping and the FIFO is full... Note that if you reduce the sleep time signif...

manic glacierBOT
#

In 6.x, time.sleep() was changed so that it does a WFI instruction, which simply hangs waiting for an interrupt, in this case either a timer tick (about a msec) or a UART-related interrupt. I don't know whether some behavior of the UART interrupt routine has changed, but was going to take a look at some point.

In your test program, it's best not to sleep at all, as @DavePutz implied. But is the test simulating some larger program which is now suffering dropped characters?

manic glacierBOT
#

Firmware

Adafruit CircuitPython 6.2.0-beta.3 on 2021-03-04; Adafruit Feather RP2040 with rp2040

No additional hardware. Feather is connected to host computer via USB.

Code/REPL

# no code needed to replicate

Behavior

# no code needed to replicate; just copy libs or fonts until it crashes.

Description

Feather RP2040 should have 7MB available for CIRCUITPY. When copying a group of files fr...

onyx hinge
lavish saffron
manic glacierBOT