#circuitpython-dev

1 messages · Page 319 of 1

ionic elk
#

@solar whale @silver tapir not sure why I missed that, it's fixed now

onyx hinge
#

@hidden geyser thanks for looking into that cookie cutter path thing.

manic glacierBOT
#
solar whale
#

@ionic elk when I put your PR on my board it wont boot - here is the log from the debug USB port

#

main builds and runs OK.

manic glacierBOT
solar whale
#

@onyx hinge are the recent build issues you have had with gcc10 or 9?

onyx hinge
#

@solar whale they are affecting main branch in github actions, which is still using gcc9 for the arm targets.

#

if you're talking about 3235

solar whale
#

yes -- just checking -- after my experience with gcc10 on the GCentral I'm backing off using it.

onyx hinge
#

so happy to have your testing

manic glacierBOT
#

This command will print the routine sizes in the .elf file, sorted with largest first:

arm-none-eabi-nm --print-size --size-sort --reverse-sort --radix=d firmware.elf

The smallest builds still have pulseio enabled, which is substantial. They also have transcendental functions enabled in math, which are also fairly large. We could knock out some of the transcendental functions with NotImplementedError.

manic glacierBOT
#

math is kinda useful for its sqrt and trigonometric functions. I use trinket m0 in one of my robots, and I would need to make a custom build for it that contains the math module.

I think that before we start dropping things (I know we have already started), we should think about the actual use cases we want supported. For example, pulseio is required for IRremote, and I think that gemma m0 and trinket m0 are perfect for that.

manic glacierBOT
#
        # Normally different language builds are all done based on the same set of compiled sources.
        # But sometimes a particular language needs to be built from scratch, if, for instance,
        # CFLAGS_INLINE_LIMIT is set for a particular language to make it fit.
        clean_build_check_result = subprocess.run(
            "make -C ../ports/{port} TRANSLATION={language} BOARD={board} check-release-needs-clean-build -j {cores} | fgrep 'RELEASE_NEEDS_CLEAN_BUILD = 1'".for...
manic glacierBOT
onyx hinge
#

@tulip sleet feel free to push to that PR branch, I'll try to be mindful and not force-push it

tulip sleet
#

it's looking good; i searched all over for cache clearing info, and didn't find it, but the cache tag seems important, and it will delete the cache stuff in a week or something like that. We could make the tag be generated on the commit or date or something like that.

onyx hinge
#

woo thanks @tulip sleet

manic glacierBOT
solar whale
#

@tulip sleet what does the esp-idf cache tag impact?

tulip sleet
#

Also I should be saying "key", not "tag"

solar whale
#

ok -- so it only impacts the github actions, not my local builds...

tulip sleet
#

right; we were using a key that had 20200523 or something liike that to id it; I just edited it to 20200801. I think we should make that not be hardwired, but I'm not sure what it should be (commit? today's date? This week?` etc.)

solar whale
#

Ok -- I'm still trying to figure out why my builds of PR 3232 don't work but main does.

#

they build but wont boot... main works fine.

tulip sleet
#

do you have the same commit of esp-idf or whatever checked that main does?

solar whale
#

I think so -- I always sync the submodules.

#

perhaps I'll just re-install

tulip sleet
#

is it on linux or your rpi?

solar whale
#

Mac and RPi

tulip sleet
#

i'll try it myself

solar whale
#

when I pull and checkout the PR it shows 3 submoules are different ```jerryneedell:/Volumes/CircuitPythonBuild/circuitpython/ports/esp32s2$ git checkout pr_3232
M extmod/ulab
M lib/tinyusb
M ports/atmel-samd/peripherals
Switched to branch 'pr_3232'

tulip sleet
#

yes, those have been updated since the pr was submitted, it appears

solar whale
#

actually I built it both ways (sync and not) and got the same results

tulip sleet
#

what is the commit for the PR? Are you trying it in adafruit/circuitpython or hierophect's fork?

solar whale
#

on adafruit circuitpython

tulip sleet
#

it's failing in the PR checks, too

solar whale
#

perhaps i should grab his fork

#

It builds OK for me

#

just crashes on boot

tulip sleet
#

ah ok, I was mixed up; then i have no particular insight, sorry

solar whale
#

seem like USB is hosed... fresh install did not help -- I'll try cloning his fork

onyx hinge
#
laceback (most recent call last):
rxile "<stdin>", line 1pn irsrtGGZeroDivisionError: liision by zero
``` looks like I made a mistake changing how translations are compressed again
solar whale
#

That looks compressed 😉

onyx hinge
#

good point, ship it

manic glacierBOT
onyx hinge
#

lost nearly 100 bytes on trinket m0

manic glacierBOT
#

The redo of how background tasks are handled changed the accuracy of supervisor_background_tasks_ok() in the Pulsein interrupt handler. This resulted in the handler pausing the collecting of the pulsein stream, which effectively hung the application. This PR implements an alternate way of saving and checking if the background tasks have been recently run. Also, the hang caused by calling common_hal_pulseio_pulsein_pause() in the event of an input taking too long has now been turned into an er...

solar whale
#

@tulip sleet I tried building from his fork -- same result -- I'll just wait until it is merged....

onyx hinge
#

the "nul byte" got a compression of 20 bits long(!) no wonder

#

@tulip sleet I think you had suggested this might be a savings but the numbers weren't with you this time

tulip sleet
#

ugh 🙂

onyx hinge
#

the values[] array (1 entry per distinct unicode appearing in the strings to translate] is 8 bits big for "latin1" and 16 bits bit for anything that goes outside of byte values 0..255. We could get savings for some languages by making the choices other than 8 or 16 bits (e.g., 9 or 11 bits), but that doesn't help de_DE where the unicode values are all below 255.

manic glacierBOT
manic glacierBOT
#

This PR unintentionally modifies the "protomatter" submodule, which is leading to failed builds.

Because this change introduces new work that is done whenever we're checking for background tasks, it may have an impact on performance. Can you please provide the performance of this simple code loop before and after your change so we can consider the trade-off (vs enabling ticks while these specific peripherals are in use)? The code is from https://github.com/adafruit/circuitpython/pull/287...

manic glacierBOT
#

@jepler, I have had all sorts of issues with submodules. I tried to clear things up with a fresh clone and branch, but obviously there are still issues. I would appreciate any and all help to get things straight.
We can't just enable ticks during the pulsein. The problem is that, on the SAMD21 boards, the time it takes to re-synchronize the timer after setting a new interval can be up to 100us, which causes misses on the incoming pulses. See issue #3049 for details.
Unfortunately, there ...

manic glacierBOT
#

I have added a commit to your branch to fix the protomatter submodule.

My top advice for NOT committing changes of this nature is to use a graphical tool to select only the files you intend to commit, and commit them. Some people suggest to "git commit -a" or graphical equivalents, which can commit files that you did not intend to modify.

Once a change to a submodule has been committed, the "submodule update" and similar commands will stubbornly update it to the committed† version. ...

manic glacierBOT
manic glacierBOT
#

I am sorry to report that this is not working reliably on my CPX. Running the irremote_simpletest, it works "sometimes" but eventually fails with am "Input taking too long" error. Once that happens it does not work at all after a soft reboot. A hard reset is needed to get it to start reading IR pulses again... until it fails.

I also had the same results on a pirkey_m0

Adafruit CircuitPython 6.0.0-alpha.2-136-g45dee6e77-dirty on...
manic glacierBOT
#

@jerryneedell https://github.com/jerryneedell - what kind of IR input are
you using? I have a simple IR remote and ran it for over 5 minutes with no
errors.
I do see incomplete pulses sometimes; my guess is that it may be due to
'bounce' on the remotes buttons. Interestingly, I also
see occasional 'stray' IR inputs - no idea where those are coming from.
Note that once that runtime error occurs you can clear it by executing a
pulsein.resume() - no reboot needed.

On Sun, Aug 2, 2020 at 4:56 ...

manic glacierBOT
#

There are additional unintended submodule changes. What specific tool(s) are you using when preparing commits? You should investigate whether your tool can help you include only the files you intended to modify when making commits. I use gitk, which lets me select from a list of files. We can work together to figure out how to get your tool to only commit desired changes. If you like, I can push another commit to this branch to fix all the refs back to what they should be (no change comp...

solar whale
#

I’m using one of these. https://www.adafruit.com/product/389 what board are you testing on? I’ll try the error recovery later today.

manic glacierBOT
#

@jerryneedell https://github.com/jerryneedell - what kind of IR input are you using? I have a simple IR remote and ran it for over 5 minutes with no errors. I do see incomplete pulses sometimes; my guess is that it may be due to 'bounce' on the remotes buttons. Interestingly, I also see occasional 'stray' IR inputs - no idea where those are coming from. Note that once that runtime error occurs you can clear it by executing a pulsein.resume() - no reboot needed.

I’m using one ...

manic glacierBOT
#

I tried catching the error but it is still hanging after an error and needs a RESET to function again.
It catches the error, but then hangs forever on the next call to read_pulses(pulses)


Press any key to enter the REPL. Use CTRL-D to reload.
Adafruit CircuitPython 6.0.0-alpha.2-136-g45dee6e77-dirty on 2020-08-02; Adafruit CircuitPlayground Express with samd21g18
>>> import irremote_simpletest
Input taking too long  resuming
Heard 23 Pulses: [9295, 4530, 633, 517, 629, 523, 635, ...
manic glacierBOT
#

This re-uses the PID assigned to the espressif_saola_1_wrover. It should be a distinct PID, see #2966 and https://learn.adafruit.com/how-to-add-a-new-board-to-circuitpython/customizing-the-board-files#mpconfigboard-dot-mk-3033646-25.

USB VID and PID are something you cannot borrow from another board. So don't copy and paste these values! If you don't have a VID/PID pair, open up an issue in CircuitPython repository and request one, we will assist in the process of assigning a PID for use ...

timber mango
#

Father Sense BLE: How long can I expect a charged 18650 battery to keep it on, provided it's just on, no sensors used?
Anyone know a ballpark figure?

tulip sleet
#

@timber mango I will measure the current drain, hold on...

#

about 10ma when idling in the REPL

#

@slender iron got a minute for supervisor_tick() q?

#

or would it be a jepler q?

manic glacierBOT
timber mango
#

Thanks, @tulip sleet, much appreciated. Now, after 7 hours of sleep, it's still got enough power to turn on my flash light module.
I'm going to leave it in and see how much longer it'll last.
I test this because in my previous thing, I had a trinket powered by a lithium version of a small 3.6V camera battery. That thing lasted only a few hours, even in stand by.

manic glacierBOT
manic glacierBOT
manic glacierBOT
#

The CI failure is spurious and can be ignored.

Somewhat more useful summary of the changes, via git log --submodule=log -p:

Submodule frozen/Adafruit_CircuitPython_BLE 5d584576e..41f7a3530:
  > Merge pull request #95 from madgrizzle/patch-2
  > Fixed discord invite link
  > Merge pull request #93 from dhalbert/start_scan-prefix-fix
  > Merge pull request #89 from dhalbert/easier-prefixes
  > Merge pull request #90 from nnja/fix_color_picker_example_for_animation
Submodule fro...
silver tapir
#

Where can I get the link for today's meeting?

lone axle
#

beyond that I don't think there really is a link, it's just in the voice section of this channel

silver tapir
#

Thanks.

turbid radish
#

?serverinfo

digital shoreBOT
#
adafruit
Owner

adafruit#3230

Region

us-west

Channel Categories

8

Text Channels

54

Voice Channels

6

Members

23742

Roles

32

onyx hinge
#

@gilded cradle Are there many "important" displays that are supported by framebuf but not displayio?

gilded cradle
#

@onyx hinge only eInks and Monochrome displays on the Raspberry Pi as far as I'm aware. RA8875 is the only one I can think of not on displayio, but it also doesn't use framebuf.

thorny jay
#

I know this is only H-2 for the meeting... but I will be lurking. I quickly filled the report, but I am totally unsatisfied with what I did. Either I have done nothing (highly possible) or I forgot what I did (also true). So I could only do it based in GitHub activity.

manic glacierBOT
#

@dhalbert merged. Would having just restarted the jobs had the same effect, since my code doesn't impact the changes on main?

@fede2cr @jerryneedell Thanks for testing! I'm unable to replicate any issues on either the old unmerged version or the merged one - my builds connect the REPL and the status LED changes as appropriate. I'm also able to override it in code.py as board.NEOPIXEL without issues. There shouldn't be any submodule changes associated with this PR as per the changelog....

onyx hinge
#

@thorny jay happy to have your notes in any case. Not covering absolutely everything is fine

#

<@&356864093652516868> Our weekly meeting is in about an hour at 2PM ET. Please put your notes in the doc https://docs.google.com/document/d/1i_l-w0lmHZg7vSoNgAvNWDoVwK1jU5dojDuJvzQgvMQ/edit?usp=sharing and especially let us know if you're "lurking". It's super helpful!

Starting last week, you must be a Circuitpythonista to speak in the meeting. If you plan to speak but you're not a Circuitpythonista, please let us know and we'll add you.

See you here and in the voice channel in about 1h.

lone axle
#

@onyx hinge are you running the meeting today? I can paste the news links in here if so.

onyx hinge
#

@lone axle I think it's Scott and I assume I'll be taking notes. We haven't quite worked out the new rotation. If you want to paste links, though, that's awesome and you are welcome to do it!

manic glacierBOT
#

@hierophect I am baffled. I do the same for syncing submodules but you PR still fails the same way for me every time -- tried 2 different boards. If i then checkout main and rebuild, it works normally.

I am working from the tip of main.


Press any key to enter the REPL. Use CTRL-D to reload.
Adafruit CircuitPython 6.0.0-alpha.2-139-g034b1bb90 on 2020-08-03; Saola 1 w/Wrover with ESP32S2
>>> 
>>> 
#

on a failed boot, I see this in the debug USB port ```E (1598) rmt: rmt_driver_install(893): RMT driver already installed for channel
Guru Meditation Error: Core 0 panic'ed (LoadProhibited). Exception was unhandled.

Core 0 register dump:
PC : 0x40096ab6 PS : 0x00060630 A0 : 0x8009c6c2 A1 : 0x3ffde100
A2 : 0x00000000 A3 : 0x3f004e54 A4 : 0x3f0072d0 A5 : 0x3f006f8c
A6 : 0x00000000 A7 : 0x00000000 A8 : 0x8009cc02 A9 ...

#

Same results with a local build or with your .uf2 :-(

Press any key to enter the REPL. Use CTRL-D to reload.
Adafruit CircuitPython 6.0.0-alpha.2-137-g9203a7780-dirty on 2020-08-03; Adafruit CircuitPlayground Express with samd21g18
>>> import irremote_simpletest
Input taking too long  resuming


hangs here -- hit control-c 

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "irremote_simpletest.py", line 17, in <module>
  File "irremote_simplet...
manic glacierBOT
#

@jerryneedell I see various reports of "RMT driver already installed for channel" - I didn't use the debug port when developing this so I didn't make any note of these, they don't seem problematic for me. What I'm not getting is your Guru Meditation Error: Core 0 panic'ed (LoadProhibited). Exception was unhandled.1. Is it possible you have some kind of flag on that halts the CPU when it gets one of these messages, and I haven't set it so it keeps running normally?

I will try to figure ...

lapis hemlock
onyx hinge
#

@lapis hemlock wow!

serene warren
#

Lurking

lapis hemlock
#

I am lurking today, by the way.

manic glacierBOT
trim elm
#

lurking

serene warren
#

Sounds good

manic glacierBOT
modern wing
#

Good afternoon all you wonderful folks! Happily lurking, and the doc is updated to reflect as such adabot

turbid radish
#

Lurking

lapis hemlock
#

@onyx hinge but I would like to see the pictures.

#

Someone has a micropython for FPGA.

#

micropython port, I mean.

tidal kiln
#

lurking

manic glacierBOT
#

@jerryneedell I don't think it's something wrong with the IDF, but I'm thinking it might be an IDF setting. It seems suspicious to me that we're both getting the same error flags but it is only halting the CPU for you. I'm wondering if that's an internal flag within the IDF that changes behavior when dealing with exceptions. In any case it would be good if we don't get exceptions over the debug port at all, but I'd like to figure out why we are getting different results.

modern wing
#

No Cylons allowed? Hmm.

uncut nexus
#

lurking today

lone axle
onyx hinge
#

(javascript is #1, tho)

thorny jay
#

Low cost camera?

#

649.95$

onyx hinge
turbid radish
#

👋🏻

modern wing
#

...what's sleep? 💤

idle owl
#

18 opened by 17 People.

#

It's ok 😄

onyx hinge
#

[my typos fix themselves in realtime awesome]

thorny jay
#

I am afraid @slender iron falled for the "analogue pocket"... (pure guess from fpga + GameBoy + waking up early).

slender iron
#

yup, exactly

stuck elbow
#

is lurking

onyx hinge
modern wing
#

I just looked at the Analogue Pocket -- all sold out. 😕

onyx hinge
slender iron
#

ya, it went very fast

inland tusk
#

I am lurking

onyx hinge
#

thanks @inland tusk

lapis hemlock
modern wing
#

⚒️

solar whale
#

no anomalies to report

ionic elk
#

@slender iron glad you finally got a chance to try migen!

turbid radish
#

Take a hike Scott

silver tapir
#

🙂

onyx hinge
#

to ble or not to ble? why are you asking me?

idle owl
#

@silver tapir No objections of course! It's simply a matter of doing it properly. 🙂

#

Technically speaking.

onyx hinge
#

@silver tapir I think it's jwcooper on github who is kinda the guru of the website and may have opinions

#

kattni can correct me if I have the wrong name

idle owl
#

I can get in contact with him and sort out how to move forward.

silver tapir
#

I believe seeedstudio has a US warehouse.

#

@slender iron Who did you say for psram?

slender iron
#

@rigid birch

silver tapir
#

thanks.

slender iron
#

np

thorny jay
#

@silver tapir I am very much interested in your journey to translating Circuit Python in Spanish. Trying to measure the effort and priority for translation effort. Like what is the corpus of learn guide to attack. Except for learn guide and error message, what else are you translating and why.

thorny jay
#

Yeah, that SD card learn guide I readed and was very interested... @onyx hinge

idle owl
#

@thorny jay What lanuage(s) do you speak/write? We're in the process of bringing up a French guide translator.

thorny jay
#

French.

onyx hinge
#

Kattni's up next

gilded cradle
#

I need to learn KiCad soon because I have a project coming up where I'll need to design a board.

silver tapir
#

@thorny jay Sure. (in a sec...)

idle owl
#

@thorny jay The more help, the better. If after talking to fede2, you decide you're interested, let me know.

thorny jay
#

And I forgot to hug reports @slender iron for demonstrating modifying a board with KiCad in his stream.

ionic elk
#

@onyx hinge looks like there's just one more translation error holding up your SDIO PR

gilded cradle
#

@thorny jay I'll have to watch that

ionic elk
#

@slender iron it's not bad

lone axle
#

I don't hear any extra noise

serene warren
#

I hear a hmmmmm in the BG (only when @slender iron is on)

onyx hinge
#

some of us just hmmmm all the time

slender iron
#

it's a very loud hum

lone axle
thorny jay
#

@solar whale Didn't you not share with me the previous toolchain with me? I was worry that would be broken once CP migrate to gcc10. So I am very much interested in your tarball for Raspberry Pi.

idle owl
#

@silver tapir I will contact you tomorrow with how we'll get started on translating circuitpython.org. I'm off the rest of today following the meeting. Sound good?

silver tapir
#

It's the next topic for on the weeds, but yes.

onyx hinge
#

@solar whale assuming it's in the couple dozen - couple hundred megs range I can host it on unpythonic.net

thorny jay
#

For language selection, please do not use flags. Flags are for country. Country and language do not match in a 1:1 relationship.

prime flower
#

@sterile bronze Are you developing your own curriculum for the class or using the metrox guide?

sterile bronze
#

yes I am

thorny jay
#

I work in a place where we have 24(?) working languages...

sterile bronze
#

It's based on an in class course I've taught before

solar whale
#

@thorny jay just sent link

lapis hemlock
#

logging off now, so long everybody!

onyx hinge
#

see you @lapis hemlock

solar whale
#

@onyx hinge DM your e-mail address and I'll give you acces

thorny jay
#

We will see when a non alpha version will be out.

#

Today, alpha-x is their only option?

onyx hinge
#

When 6.0.0 comes out I suppose

sterile bronze
#

@prime flower Didn't you write the metrox guide?

ionic elk
#

Having worked with the unicode support in Circuitpython last week, unicode characters take about 2MB by themselves

lone axle
#

Is there any interest in a Wio Terminal "helper library" that sets up easy access to all of the hardware that is on that device?

silver tapir
#

I'll write to Electronic Cats for their ESP32-S2 feather, to see if they'd like a cpy version.

ionic elk
#

So Chinese character support requires a flash chip that's about 2x larger than what appears on most feather boards and other breakouts

prime flower
#

@sterile bronze yep - I wrote it a while ago

#

thats why i got excited 🙂

lone axle
#

you cut out for just a second but mostly good

prime flower
#

@onyx hinge maybe it could be structured to encapsulate the topics on the sidebar, could be round-robin.

#

unless its more unstructured like a project hour?

onyx hinge
prime flower
#

@ionic elk +1

gilded cradle
#

A hardware chat might be interesting

slender iron
bleak tiger
#

The show and tells are tricky for my timezone but I'd like to join something similar on Discord at a time similar to this meeting

idle owl
#

That it is. 😄

#

@ionic elk DM me. We'll go through it.

modern wing
#

I do see where you're coming from -- we're getting some cross-pollination from personal projects & moderation topics. Mainly because we're (mostly) here all at the same time.

I'm OK with those things coming into the CircuitPython meeting. And it's something to think about spinning off into a community-focused event? I don't know what it'd look like...or if there'd be enough momentum & individual availability.

idle owl
#

They did a couple.

silver tapir
#

Yeah, I teach a class at S&T time. I've been trying to go to JP's which is a couple of hours earlier.

modern wing
#

Thanks y'all!

turbid radish
#

Thanks all

mental nexus
#

Thanks everybody!

gilded cradle
#

thanks

idle owl
#

Alright, I'm heading out. Have a lovely day!

modern wing
#

Cheers Kattni!

silver tapir
#

So yes @thorny jay. I've completed 6 translations so far, with the big ones like welcome-cpy it takes about 1-2/h day for a week, with the smaller ones is takes less time.
It's a bit repetitive even if I like and enjoy the subject I'm translating.
The corpus has been defined by kattni in #learn-adafruit-authors, but the best one to start is the welcome-cpy.

#

I can't recommend it enough, one of the guides already has +1.2K views so it makes me happy thinking about all of the people how have gotten to that content that wouldn't otherwise. And if at least a 10% got a board or purchased something from adafruit, that to me is worth the work.

thorny jay
#

Thanks, I did not knew about that channel. I have never wrote a guide so I don't know exactly if it is translator friendly.

silver tapir
#

And as a disclaimer, I was only paid for the first guide, pre-covid times. The rest of the guides and now the site, I've been doing it as a way to help the brand to get back up, and also for the non-english people to get a chance to have the fun we do.

thorny jay
#

I cannot be paid due to my work. So I can only contribute freely.

#

And I am no professional translator, just native speaker. And Circuit Python fanboy.

silver tapir
#

Yes, same here.

thorny jay
#

I did participate in CoderDojo as "trainer" and I know it is difficult to do anything without English... so we do what we have French material available, mostly Scratch.

#

The situation is even more difficult for me in Belgium that is a multi-lingual country...

silver tapir
#

Something that's also on my mind, is translating the makecode for adafruit. I tried the one for BBC Microbit, and all of the blocks are translated so their isn't even "for" in english.

thorny jay
#

So you targeted the CPX and welcome guide.

#

Yes graphical interface can be a good start.

silver tapir
#

I think in order, it was welcome to circuitpython first. Then the "piano in the key of lime", the makecode for cpx, the cpy made easy for cp*, and "last" the product guide for cpx.

#

Oh and also, using the learning guide is super simple. The first step I do is to copy the pages. Then translate-rename them. The configure the urls for the individual pages, and then start with the bulk of the text.
You move page by page from draft to published, and when done, the whole guide for moderation. So it's really easy to know what is done and what is missing.

#

So yes, I'll recommend it fully. Specially in covid-times that I can't do some of the outside project I'd be doing right now if I could.

thorny jay
#

Yeah, I saw the piano. I have spanish speaker co-worker. I shared your guide as they have kids and might want to try electronics/programming with them.

#

Did you also heavily participated into the translation of the error message? Or did you double check those. The idea is to have some consistency and make sure the same English word is translated the same way to Spanish.

silver tapir
#

For now we are using the same images as the english guides. The one that would really benefit from it is the makecode one, but since it's not translated on the page, I can do it yet.

#

Mu doesn't have unicode on the repl console, so having cpy in spanish at least is a bit ugly in mu, and most of the screenshots are from mu.

thorny jay
#

Thank you very much for your insight. I believe I should start by (1) Create a small project (2) Ask access to the learn system to publish it (that would let me learn about the learn guide) (3) Contact that belgian company/shop that resell Adafruit board and translate (or make original) guide in French ... they would be the one (that I know) with the best interest in translating.

uncut nexus
#

Is anyone else having issues cloning adafruit/circuipython.git? After running the submodule sync and update commands I am ending up with an empty lib/protomatter directory

silver tapir
#

Oh, and another thing, I also tried to get the weblate translation to close to a 100% before starting with the first guide.

#

@uncut nexus Let me try it here.

#

It could be that it downloads it later in the process. Just a sec, my download speed is kinda meh...

onyx hinge
#
jepler@babs:/tmp$ git clone https://github.com/adafruit/circuitpython
Cloning into 'circuitpython'...
...
jepler@babs:/tmp$ cd circuitpython/
jepler@babs:/tmp/circuitpython$ git submodule update --init
...
Cloning into '/tmp/circuitpython/lib/protomatter'...
...
jepler@babs:/tmp/circuitpython$ ls lib/protomatter
Adafruit_Protomatter.cpp  Adafruit_Protomatter.h  arch.h  core.c  core.h  examples  library.properties  README.md
``` it's working here for me fwiw
uncut nexus
#

When I try re-running the submodule update command I get an error saying "reference is not a tree"

slender iron
#

Here is the notes document for Monday’s CircuitPython Weekly meeting. It is at the normal time of 11am Pacific / 2pm Eastern here on Discord. Everyone is encouraged to attend! Please add your hug reports and status updates even if you’ll be attending the meeting - it’s super helpful! If you are unable to attend but would still like to include updates, feel free to include them in the notes and we’ll read them off during the meeting. Hope to see you there! <@&356864093652516868> https://docs.google.com/document/d/1G2UoQCcNsiacWqUn8z_783TkmnNg6ytaANyaeFx0coE/edit?usp=sharing

thorny jay
#

Oh, and another thing, I also tried to get the weblate translation to close to a 100% before starting with the first guide.
@silver tapir Yeah, I saw that, and you discovered that they were keeping adding new string and that once at 100% you can return to 99% without knowing it. I am going to read #learn-adafruit-authors for the last few month, I will learn a lot there.

uncut nexus
#

@onyx hinge - I notice that you are not using --recursive on the update command. If I leave that off I get "Unable to checkout '761d6437e8cd6a131d51de96974337121a9c7164' in submodule path 'lib/protomatter'"

onyx hinge
#

I think that at one time we advised to use --recursive but we no longer do.

#

    git submodule sync
    git submodule update --init
``` -- BUILDING.md
uncut nexus
#

still getting the "Unable to checkout error" - used your exact commands

onyx hinge
#
jepler@babs:/tmp/circuitpython$ 
``` that does not cause me to see the error you are reporting
uncut nexus
#

Hmm. So - are you running on Windows, Mac, or Linux and what version of git?

onyx hinge
#

debian linux with git version 2.20.1

uncut nexus
#

My git is older - I will try to update & see what happens.

#

Yep - that was it. No errors with a newer git. Thanks for the help!!

silver tapir
#

@thorny jay Is probably not necessary that you read the backlog, is more coordinating talk. Talk to kattni, and with anneb's help in no time you'll be concentrating on content.

thorny jay
#

I guarantee it is interesting, it show the progress, the problem encountered, and more. 🙂

manic glacierBOT
solar whale
#

@onyx hinge @tulip sleet can correct this, but I think the --recursive is NOT recommended for the git submodule update --init only for the git submodule sync --quiet --recursive

manic glacierBOT
#

I'm not a huge fan of this approach for sharp memory. I was originally thinking it'd be added as a new native display type because if the different protocol for which line needs refresh. Here are a few concerns I have with this implementation.

Using a Python object as the transmitter leads to two weird things:

  1. You cannot have a "default" display for a board that has a sharp display in-built because it doesn't work outside the VM.
  2. Python code is run in-between other code because dis...
tulip sleet
#

I didn't think anyone was reading the actual screenshot, but I will edit it 🙂

uncut nexus
#

I copied the code from that page a while ago and put it into a shell script on my local system.

#

So - I was using older stuff - my fault.

#

Interesting, tho, that the older git version I was using caused my issues. Not something I would have thought to check.

tulip sleet
#

now the screenshot is not misleading either; we removed that --recursive was a while ago, mostly due to tinyusb, which doesn't really want its submodules brought in recursively

#

what os version are you running? I guess I would have expected it to keep up, but if it's Ubuntu 18.04, it might be too old. I used a PPA for git when I was running 18.04 to make sure it was current.

uncut nexus
#

Scitentific Linux 4.7 - A redhat rebuild

#

Might have something to do with Connie being the lead architect for Scientific Linux for many years 🙂

tulip sleet
#

Scientific Linux release 4.7 is based on the rebuilding of RPMs out of SRPMs from Enterprise 4, including Update 7. It also includes all errata and bug fixes up until September 03, 2008.

uncut nexus
#

yep - old

#

sorry - 7.4!

tulip sleet
#

ok, that's a little better 🙂

uncut nexus
#

still old

tulip sleet
#

i think you should upgrade to 7.6

#

i used Scientific Linux at work when Fedora was too unstable; that was around 2009

uncut nexus
#

Well, I still gett all the security patches. But, since SL has stopped putting out new versions (no SL8 😦 ) I'll probably be moving the system to something like the latest Fedora at some point

tulip sleet
#

i decided i liked .deb over .rpm at some point, after spending too much time chasing down dependencies

#

but it definitely is STABLE

uncut nexus
#

Yeah, Redhat's big customers don't like rapid changes.

solar whale
manic glacierBOT
#

Typing (or pasting) utf-8 characters was enabled in the REPL in #1905. But trying to navigate in the REPL (with the arrow keys) or write in the middle of the line, on a line that has characters that are represented with more than 1 utf-8 byte, causes weird behavior. The cursor ends up in the wrong place and characters that could be rendered, end up not rendering properly.

This is because the string buffer that stores the line for the REPL doesn't realize:

  1. That it should move its intern...
#

This adds some 'utf-8 aware' code to the repl. Anytime the cursor moves or something is typed or deleted, we have to keep track of the number of utf-8 continuation bytes that are involved. This way, the repl behaves as you would expect it to even with characters that are not ascii.

I know space is tight on some of the smaller boards so I tried my best to minimize the impact on code size with this but, it still is causing a few build failures.

I've tested this out on an itsybitsy_m4/m0_e...

tiny oriole
ionic elk
#

@tulip sleet @slender iron I've got an API conundrum. The ESP32-S2, handily, has its own dedicated Remote Control peripheral (RMT) which is capable of sending pulse trains with a carrier frequency, as well as receive filtered pulse trains in return. However, this peripheral has nothing to do with the PWM peripheral (the LED_C). So passing in a PWM object as a parameter doesn't make any sense.

It'd be really kind of a shame to use the LED_C for PulseOut instead of the RMT just because of the API, since the ESP32-S2 doesn't have that many pwm channels or independent timers (only 8 and 4 total respectively) and it seems silly to ignore the dedicated remote control peripheral in favor of hard-coding it. But I can't really think of another good way around this API thing other than "faking" the PWM object by de-initializing the LED_C channel it uses inside the PulseOut constructor.

#

What do you think?

tulip sleet
#

@ionic elk so, it sounds like it might have been a mistaken assumption to pass a PWMOut instead of a pin to PulseOut. Is there a reason why PulseOut could not create its own PWMOut on ports where there is no specialized RMT? I.e., I am suggesting changing the API incompatibly. We can do this for major versions. For backwards compatibility it could take both for now, and we could drop it in 7.0.0.

ionic elk
#

I haven't used the PulseOut extensively so there might be edge cases I don't know of? But I don't see any reason why the PulseOut constructor couldn't simply be fed additional args for the frequency of the carrier signal. And PulseOut shouldn't need to care about things like duty cycle anyway.

#

So I'd agree

slender iron
#

that is an artifact of how it's commonly done. I'm open to changing the API

tulip sleet
#

the RMT can also do PulseIn?

ionic elk
#

Yes, they're both managed by the same peripheral. 4 channels total

#

each channel can do either pulseout or pulsein. One is being used for the Neopixel so we have 3 left

#

Should I change the API as a part of my PR, or should that be done separately as a preliminary step?

#

We could combine it with the PWMIO change we discussed as well

manic glacierBOT
tulip sleet
#

i think you could expand the API, and throw NotImplementedError on ESP32STM when given a PWMOut.

ionic elk
#

you mean in ESP32?

tulip sleet
#

ooops, yes

ionic elk
#

Ok, I'll throw something together and we can hash out details in the PR conversation

tulip sleet
#

a separate PR is ok since it will be across ports, and will be easier to review

#

are you using RMT for neopixel_write in general, not just the status NeoPixel?

#

I'm not even sure you can do it the bitbang way that samd does, because of interrupts for radio. Or the memory-expensive PWM way that nrf does it

ionic elk
#

RMT is for neopixel in general

tulip sleet
#

excellent; i wish we had that periph on the other chips

ionic elk
#

I know right? I love all the ESP32 peripherals. In spite of their silly names

#

everything is so easy. I'm thinking of moving all my personal projects over to it

#

and the docs are great too

manic glacierBOT
manic glacierBOT
slender iron
#

my brain is pretty fried so I think I'll do the gcc10 monotony

#

bonus that it'll make things smaller

manic glacierBOT
#

@tannewt Thanks -- FYI

jerryneedell:/Volumes/CircuitPythonBuild/circuitpython/ports/esp32s2$ python3 tools/decode_backtrace.py  espressif_saola_1_wrover
espressif_saola_1_wrover
? 0x40096ab3:0x3ffde100 0x4009c6bf:0x3ffde120 0x4009b9f0:0x3ffde140 0x4009bc47:0x3ffde190 0x4009bdef:0x3ffde1b0 0x400b2c45:0x3ffde1d0 0x4002d995:0x3ffde200
got ['0x40096ab3', '0x4009c6bf', '0x4009b9f0', '0x4009bc47', '0x4009bdef', '0x400b2c45', '0x4002d995']
/Volumes/CircuitPythonBuild/circuitpython/ports/e...
slender iron
#

just pushed more to jepler's gcc10 branch

manic glacierBOT
#

See https://github.com/adafruit/circuitpython/pull/3230#issuecomment-667548001 and following.

SUPEROPT_VM = 0 saves 300 bytes on a Gemma M0. I would do that only on the translations that need it.

Disabling rtc saves 1516 bytes. I think @deshipu argued persuasively for leaving what's in math, and for pulseio. rtc to me seems less useful on these tiny boards with no crystal. If they want to know the actual time, an external RTC seems appropriate.

manic glacierBOT
#

fresh build with newly installed esp-idf.... still crashes but the backtrace is a bit different



E (1598) rmt: rmt_driver_install(893): RMT driver already installed for channel
Guru Meditation Error: Core  0 panic'ed (LoadProhibited). Exception was unhandled.

Core  0 register dump:
PC      : 0x40096ab6  PS      : 0x00060630  A0      : 0x8009c6c2  A1      : 0x3ffde100  
A2      : 0x00000000  A3      : 0x3f004e54  A4      : 0x3f0072d0  A5      : 0x3f006f8c  
A6      : 0x00000000...
onyx hinge
manic glacierBOT
#

@tannewt tried using gcc10 for pyportal build -- also fails -- yellow status LED
Would you please confirm (or deny) that you have built and tested it on the pyportal?

here is the dmesg dump

[1166260.627612] usb-storage 1-1.4.3:1.2: USB Mass Storage device detected
[1166260.634788] scsi host0: usb-storage 1-1.4.3:1.2
[1166260.646898] input: Adafruit Industries LLC PyPortal Keyboard as /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.4/1-1.4.3/1-...
manic glacierBOT
#

FYI - From the espressif docs: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/fatal-errors.html#loadprohibited-storeprohibited

For those who have this working, are you doing anything special in your forks so that when I pull the PR ,there is something incompatible? I am getting the PR by using

git fetch origin pull/3232/head:pr_3232
git checkout pr_3232

then build as normal

as noted, by build of "main" works fine. It is not at all clear what is wr...

manic glacierBOT
manic glacierBOT
ionic elk
#

@slender iron couple of ESP32 structural questions for whenever you get online:

  1. Does ESP32 need FULL_BUILD turned off? That flag is typically for flash size reduction, but the ESP32 probably doesn't need that, right? @tulip sleet maybe you were right that we should rename it to something like FULL_SIZE_FLASH to prevent confusion.
  2. Should CIRCUITPY_ULAB be turned on?
  3. TouchIO was turned off, but that just requires Microcontroller, right?
  4. Random probably shouldn't be turned on until TRNG is implemented, right?
  5. What does CIRCUITPY_MODULE ?= none do?
slender iron
#

@ionic elk 1) ya we can turn it on if we habe all of the modules supported. 2) yup! 3) I think the esp has a touch controller so we could wait for that. 4) ya since that should be easy. 5) the ?= is assign if currently undefined

ionic elk
#

Since FULL_BUILD impacts lots of definitions like MICROPY_CPYTHON_COMPAT that really shouldn't be getting touched unless it's a SAMD21 trying to keep things under 256kb

#

I think TouchIO defaults to a bitbanged version if there's no common-hal version? So there's never any reason to not turn it on if you've created Microcontroller. But I should double check that.

#

I might take a look in the Litex port for stuff like this too, I think that also has a couple modules turned off that could be turned on

manic glacierBOT
slender iron
#

@ionic elk that all sounds good. you clearly know it better than I do 🙂

solar whale
#

@ionic elk Doesn't the files system get wiped when the ESP32S2 is flashed at present -- so there is no code.py, correct?

ionic elk
#

I don't think it does? It keeps my code between loads

solar whale
#

OK -- I'll check -- I can only do that if I reload main first -- doing that now

ionic elk
#

Yeah try loading main and clearing it out

crimson ferry
#

@solar whale I was thinking about that last night, mine gets wiped too.

solar whale
#

@slender iron I can build/run everything except samD51 with gcc10 ?? nrf52840,teensy41,stm32f405,samd21

manic glacierBOT
solar whale
#

@ionic elk built/flashed pr_3232 -- same crash...

ionic elk
#

welp, I'll keep looking into it

solar whale
#

Thanks -- just for fun, can you post a working .bin that I can try?

ionic elk
#

There should be one generated by the CI

#

I'd try that first since it worked for Scott

solar whale
#

I don't think PRs are posted to S3

#

where can I find it?

slender iron
#

@solar whale yup I saw. Will try and look today. Gonna tackle some WiFi stuff first

solar whale
#

@ionic elk aha -- I downloaded that and it fails the same way!! bizzare

#

My head hurts -- time to walk the dog -- before the Tropical storm hits .... back in awhile.

manic glacierBOT
manic glacierBOT
manic glacierBOT
#

@tannewt ```jerryneedell:/Volumes/CircuitPythonBuild/circuitpython/ports/esp32s2$ git log
commit 490066877878a7917ec99742a13a7687785ef614 (HEAD -> pr3232)
Merge: 94b256186 034b1bb90
Author: Lucian Copeland hierophect@gmail.com
Date: Mon Aug 3 12:26:37 2020 -0400

Merge remote-tracking branch 'upstream/main' into esp32-neopixel

commit 034b1bb9035d60f6e0aa862f3bc60aafb1fd6e07
Merge: 16b7d9904 9b3af2b7e
Author: Jeff Epler jepler@gmail.com
Date: Mon Aug 3 07:10:11 2020 -05...

manic glacierBOT
onyx hinge
#

I hope I'm not wrong about this deeeee-licious binary size reducing fruit I just picked

manic glacierBOT
#

@tannewt IIRC we've seen something like this before -- where builds would work on Mac, but not on Linux - specifically the USB -- I think it happeded with the early esp32s2 builds.

Do you recall what the issue was -- could there be something in the SAMD51 builds that is dependent on the gcc10 changes that is causing this.

Have you been working on your Mac with the GCC10 builds? Have you ever tried one on a linux box?

#

Do you recall what the issue was -- could there be something in the SAMD51 builds that is dependent on the gcc10 changes that is causing this.

No, I don't remember.

Have you been working on your Mac with the GCC10 builds? Have you ever tried one on a linux box?

Nope, I'm working on Arch Linux now. (It only has GCC10 so that's why I switched.)

I'm relieved that the builds do work on the mac, at least. They go to Safe mode on both Ubuntu 20.04 and Raspberry Pi Bust...

manic glacierBOT
onyx hinge
#

😅

solar whale
#

cool! will give it a whirl... I've broken everything else....

onyx hinge
#

tests are saying it's broken, maybe don't jump too fast (unix testsuite)

#

6 tests failed: builtin_float_round float2int_doubleprec_intbig float2int_fp30_intbig float2int_intbig math_domain math_fun_int

#

it may be something obvious, checking it out here too

solar whale
#

all that testing -- just going to find more errors 😉

onyx hinge
#

that's twice that the tests have caught my mistake just in this little PR, happy to have them. First was an unintional change in exception type, this one was matching a %q in a format string with a char* instead of a qstr...

manic glacierBOT
#

@tannewt What is the exact version of the gcc 10 compiler you have on arch? The ARM preview is:

$ gcc-arm-none-eabi-10-2020-q2-preview/bin/arm-none-eabi-gcc --version
arm-none-eabi-gcc (GNU Arm Embedded Toolchain 10-2020-q2-preview) 10.1.1 20200529 (release)
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
onyx hinge
#

before 5 days ago it was 10.1.0-1

tulip sleet
#

we wouldn't use the Arch build on GitHub actions, so I wonder if it makes more sense to test with the available preview download

#

it may not matter, but if there's a difference for some reason, it could be a timesink

solar whale
#

Doesn't PR 3231 use the 10.1.1 preview?

#

Has anyone else tried testing a SAMD51 gcc10 build on a Linux box?

tulip sleet
#

i haven't had time yet, but I could try it. I actually have had some weird SAMD51 issues while debugging bleio HCI with gcc9. If I turned off -flto, the USB did not enumerate. I got stuff like this in dmesg:

370979.084168] usb 1-1.3.4: reset full-speed USB device number 27 using ehci-pci
[370994.664111] usb 1-1.3.4: device descriptor read/64, error -110
[371010.276055] usb 1-1.3.4: device descriptor read/64, error -110
[371010.588061] usb 1-1.3.4: reset full-speed USB device number 27 using ehci-pci
[371026.128019] usb 1-1.3.4: device descriptor read/64, error -110
[371041.747976] usb 1-1.3.4: device descriptor read/64, error -110
[371042.059971] usb 1-1.3.4: reset full-speed USB device number 27 using ehci-pci
[371052.775945] usb 1-1.3.4: device not accepting address 27, error -110
[371052.975940] usb 1-1.3.4: reset full-speed USB device number 27 using ehci-pci
#

do you see that kind of error with the gcc10 build? If so, maybe it's not gcc10 per se, but some aspect of the compilation (-flto may have changed somewhat in gcc10, for instance)

solar whale
#

ignore first post -- I see the same on Ubuntu and Pi

#
[779936.705348] scsi 7:0:0:0: Direct-Access     Adafruit Grand Central M4 1.0  PQ: 0 ANSI: 2
[779936.705798] scsi 7:0:0:0: Attached scsi generic sg2 type 0
[779936.706214] sd 7:0:0:0: [sdc] 1048680 512-byte logical blocks: (537 MB/512 MiB)
[779936.706367] sd 7:0:0:0: [sdc] Write Protect is off
[779936.706368] sd 7:0:0:0: [sdc] Mode Sense: 03 00 00 00
[779936.706515] sd 7:0:0:0: [sdc] No Caching mode page found
[779936.706517] sd 7:0:0:0: [sdc] Assuming drive cache: write through
[779936.755314] sd 7:0:0:0: [sdc] Attached SCSI removable disk
[779937.821039] usb 3-1.4: reset full-speed USB device number 27 using xhci_hcd
[779938.026823] cdc_acm 3-1.4:1.0: ttyACM0: USB ACM device
[779938.028914] sd 7:0:0:0: [sdc] tag#0 FAILED Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
[779938.028922] sd 7:0:0:0: [sdc] tag#0 CDB: Read(10) 28 00 00 0f ff 80 00 00 08 00
[779938.028927] blk_update_request: I/O error, dev sdc, sector 1048448 op 0x0:(READ) flags 0x80700 phys_seg 1 prio class 0
ionic elk
#

what uses CountIO?

#

All of a sudden my compiler is complaining about it

#

Oh, I see, someone added it to FULL_BUILD

solar whale
#

If I leave it plugged into the Linux box, it keeps trying to access it producing more errors

#

@tulip sleet How is the wind in your area -- getting breezy here

tulip sleet
#

same here!

ionic elk
#

I have a wind turbine visible from my window and it's really going

prime flower
#

I'm battling my surge protector rn 🙂

#

it is doing its job

solar whale
#

@onyx hinge So far -- I have just built the stock feather_m0_rfm9x with your size reduction PR -- now I need to see if I can remove a few things and freeze the rfm9x lib... Thanks -- I need all the space I can get.

#

But -- I may be done for the day -- it'll all be here tomorrow.... Have a good - rest of the day ...

ionic elk
#

@slender iron can we use GDB on the esp32 yet?

slender iron
#

I did manage to connect it on one of my livestreams

#

didn't really know how to use it though

ionic elk
#

Maybe I'll work on that a bit this week

#

would be nice to know

#

Especially for stuff like this null reference exception

slender iron
#

that's the correct timecode

#

the tools script has been enough for me when getting a load or store prohibited

turbid radish
#

?serverinfo

digital shoreBOT
#
adafruit
Owner

adafruit#3230

Region

us-west

Channel Categories

8

Text Channels

54

Voice Channels

6

Members

23888

Roles

32

slender iron
cobalt grail
#

Thanks @slender iron !

onyx hinge
#

@solar whale ah right, if I can give you 1.5kB .. you'll take it

manic glacierBOT
#
Free Flash Change Free RAM Change Commit
1772 22716 c394af412 Merge pull request #3241 from jepler/translation-percent-space-fixes
1804 32 22716 0 dddd25a77 Combine similar strings to reduce size of translations
1812 8 22716 0 67eb93fc9 py: introduce, use mp_raise_msg_vlist
1804 -8 22716 0 92917b84f fix exception type for pop from empty set
1808 4 22716 0 d60cacea6 Use qstrs to save an additional 4 bytes
1804 ...
simple pulsar
#

Oh, I've just found it! >>> from microcontroller import nvm

manic glacierBOT
onyx hinge
#
[nan, nan, nan, nan, nan, -0.909091, 1.0, -1.1, 1.21, nan, nan, nan]
``` I don't think this "optimization" of powf() is correct yet.
ornate breach
#

Yeah, I don’t think so

manic glacierBOT
#

.. by calculating x**y as exp(y*log(x)) after some suitable initial tests.

Size savings is 1352 bytes on Trinket M0, and the existing more accurate behavior is preserved on boards with CIRCUITPY_FULL_BUILD.

The most notable anomaly I found is that powf() is used in number parsing and it changes from the correct

>>> float("10000000") - float("1e7")
0.0  # i.e., they are equal

to the incorrect

>>> float(10000000) - float("1e7")
4.0 # i.e., they are unequal in the 7th d...
manic glacierBOT
#

@jerryneedell, I've attached another attempt. I don't think it's perfect, but it seems to be a lot closer for my tests. I'm still picking up quite a few stray interrupts on the CPX, though not when using an external IR receiver on a Metro M0. I've included a version of the test script that has some pulsein commands added that seem to help - I'd love to hear what you see with it.
CP600-test2.zip

manic glacierBOT
#

For newly introduced macros controlling compilation of optional features, we PREFER that you create a macro which is defined to (1) when the optional feature is enabled, and (0) when it is disabled.

For instance in (top level)/py/circpy_mpconfig.mk, add

CIRCUITPY_QSPI_OFF_WHEN_SLEEP ?= 0
CFLAGS += -DCIRCPY_QSPI_OFF_WHEN_SLEEP=$(CIRCUITPY_QSPI_OFF_WHEN_SLEEP)

in ports/nrf/boards/makerdiary_m60_keyboard/mpconfigboard.h , add

CIRCPY_QSPI_OFF_WHEN_SLEEP = 1

Then,...

#

It is in nRF52840 Revision 1 Errata V1.4.

3.8 [122] QSPI: QSPI uses current after being disabled
This anomaly applies to IC Rev. Revision 1, build codes CKAA-Cx0, QIAA-Cx0.
It was inherited from the previous IC revision Engineering C.
Symptoms
Current consumption is too high.
Conditions
After QSPI has been activated by the use of TASKS_ACTIVATE task.
Consequences
Current consumption is too high.
Workaround
Execute the following code before disabling QSPI:

*(volatile uint...
#

This my approach to #3134.

#3140 used the docs build in the Actions workflow, but that doesn't translate to ReadTheDocs. I looked for a way to set the sphinx-build override flags (-D value=setting) in .readthedocs.yml, but came up empty. This should work on RTD, just as it does anywhere else. I left the overrides in the Actions workflow, as they shouldn't conflict.

Unrelated, but I also updated the .gitignore to ignore Python .env/.venv, and also not ignore the .rst fil...

manic glacierBOT
manic glacierBOT
#

And just to confirm, with the latest chances, it is working fine in one of my saolas. Great work!

I got 3 from digikey, on the other two I'm getting backtraces.
(output through tools/decode_backtrace.py)
Board N° 2 and N° 3:

? 0x40097beb:0x3ffde0e0 0x4009e64b:0x3ffde100 0x4009d938:0x3ffde120 0x4009db93:0x3ffde170 0x4009dd3b:0x3ffde190 0x400b60f9:0x3ffde1b0 0x4002d995:0x3ffde1e0
got ['0x40097beb', '0x4009e64b', '0x4009d938', '0x4009db93', '0x4009dd3b', '0x400b60f9', '0x4002d995']
/ho...

manic glacierBOT
#

Trying to decode this weirdness. I tested the boards with other circuitpython versions, and after formatting by hand the filesystem, I got them to work.
Then I tested the neopixel version, same know error.
So I went back to a working version, created a code.py with an infinite loop so that it doesn't end. Flashed back the neopixel version, and now there is no error.

I looks like it is the lack of code.py, and the crash seems to happen "after" code.py or if it is missing. If I reformat,...

silver tapir
#

@solar whale ⬆️

#

Now I know why the neopixel PR fails only for you, and how to work around it. I hope you can get it working this way.

manic glacierBOT
#

installed
adafruit-circuitpython-clue_nrf52840_express-en_US-20200803-c394af4.uf2
(boot message "Adafruit CircuitPython 6.0.0-alpha.2-143-gc394af412 on 2020-08-03; Adafruit CLUE nRF52840 Express with nRF52840" )

there are glitches on the display
image
and eventually the screen becomes two white bars
![image](https://user-images.githubusercontent.com/15486587/89375005-a08e9900-d6...

low sentinel
#

When you assign a method to an object where does that land in C?

class c:
  pass

def f(self):
  pass

x = c()
x.extra_method = f  # << ?
#

hmm mp_obj_instance_store_attr looks promising

manic glacierBOT
manic glacierBOT
#

@fede2cr Wow! That works! I'm not imagining things!
If a code.py is present, it boots just fine, if not it crashes as before. As you noted, it has to be a code.py with an infinite loop. I tried one taht just printed something and exited and it still crashed.

With an infinite loop, I can break out from the REPL with control-C and everything is happy!!

Thanks for finding this

@hierophect -- FYI - with the latest PR, there are still a few IDF errors at start -- here is the end of the ...

thorny jay
manic glacierBOT
#

@jerryneedell, I've attached another attempt. I don't think it's perfect, but it seems to be a lot closer for my tests. I'm still picking up quite a few stray interrupts on the CPX, though not when using an external IR receiver on a Metro M0. I've included a version of the test script that has some pulsein commands added that seem to help - I'd love to hear what you see with it.
CP600-test2.zip

That works much b...

manic glacierBOT
#

@fede2cr @jerryneedell thanks for your help in testing this! Seems like you've tracked down the way to repro it and it explains why I wasn't getting it since I already had a sketch loaded.

@jepler yes, the docs for the error imply this is dereferencing a NULL. I'm not super used to tracking down things like NULL exceptions without GDB, so either I'll figure out how to get GDB running on the ESP32 today based on Scott's video or I'll try just eyeballing it.

ionic elk
#

@tulip sleet is it possible to build Circuitpython on 128kb?

tulip sleet
#

@ionic elk probably not; you'd have to turn off pretty much everything. Try turning off math and then every io but digitalio and see how big it is.

silver tapir
ionic elk
#

I'm more asking because the only F1 boards I have are Bluepills, and they all have 128k max

#

I'm regretting I didn't press this point earlier when the F1 thing was first brought up. Seems like virtually nobody makes any kind of eval kit for the more powerful F1s, presumably because they're overshadowed by the low-tier F4s, which are nearly as cheap in the US

#

I feel bad I didn't spot it before that poor guy did all this work for the F1 port. Should have tried to push him toward the F401 instead

manic glacierBOT
#

@dahanzimin checking in on this, are you still moving forward with an F1 for your project?

I am finding that a fairly serious roadblock for this port is the lack of dev boards for the more powerful F1 chips. The highest F1 that ST releases a dev board for is the F103RB, which is only 128kb of flash, too small for Circuitpython. It seems that virtually all community chips are for the F103C8, which is even smaller.

#

@hierophect asked me about whether it would be possible to fit any subset of CircuitPython in 128kB. The answer is no. For example, leaving only the most basic modules in place for Gemma M0 still takes ~172kB:

INTERNAL_FLASH_FILESYSTEM = 1
LONGINT_IMPL = NONE
CIRCUITPY_FULL_BUILD = 0

SUPEROPT_GC = 0
SUPEROPT_VM = 0
CIRCUITPY_RTC = 0
CIRCUITPY_ANALOGIO = 0
CIRCUITPY_PULSEIO = 0
CIRCUITPY_RANDOM = 0
CIRCUITPY_ROTARYIO = 0
CIRCUITPY_USB_HID = 0
CIRCUITPY_USB_MIDI = 0
CFLAGS_I...
tulip sleet
#

i forgot to turn off math in the comment above, still 163kB. Edited comment to reflect that.

ionic elk
#

@tulip sleet thanks for checking it out

tulip sleet
#

are there F1 chips that are > 128kB?

ionic elk
#

Yes, but what I'm finding is that they're basically obsolete in favor of the access line F4s

onyx hinge
ionic elk
#

The F401 is cheaper than the F103 for basically all equivalent and even lesser-power F103s

#

Which is probably why there aren't any dev boards for the high-level F103s - you get better prices, more ram, and faster speeds with the F401

#

F103s are very popular but it seems like that's restricted to the 64k and 128k range of SoCs

tulip sleet
#

we always felt that the SAMD21 was a stopgap before better chips were available, if we could have skipped that generation we might have done so, so similar here

slender iron
#

@thorny jay they link to my repo 🙂

manic glacierBOT
#

It would obviously be a bit disappointing to close this port after this much work has been put into it. But it's really starting to seem that STMicroelectronics considers the higher level F103 chips to be obsolete in favor of their F4 line. On all manufacturing sites I have access to, the STM32F401 is lower in price than equivalent or even lesser-capability F1 chips.

I feel badly that I did not catch these price discrepancies before. But unless we can come up with a compelling reason why ...

ionic elk
#

@tulip sleet yeah I mostly just feel guilty that I walked Dahanzimin through a lot of obnoxious port work without realizing that the outcome was so impractical

#

I assumed from the dirt-cheapness of the F103C8 that the higher ones would have similar price advantages but they really don't.

solar whale
#

@onyx hinge @tulip sleet was it really necessary to remove math from the small builds? I think a lot of sensor libraries need it.

manic glacierBOT
tulip sleet
#

@solar whale we did not remove math; I was just talking about an experiment for the smallest possible builds above (would it fit on a 128kB chip)?

#

it is unrelated to the squeezing work we are doing

solar whale
#

oh -- my bad -- I removed it !!

#

sorry

tulip sleet
#

🙂 np

ionic elk
#

@tulip sleet it's neat to know the 163kB minimum number, in any case

solar whale
#

I wondered where all that space came from ...

slender iron
#

@ionic elk there is some boards listed here: https://stm32-base.org/boards/

#

with the larger stmf103 ics

ionic elk
#

Hmmm. I don't see purchase links. I'll try amazon for some of these part numbers.

slender iron
#

I clicked through and ended at taobao

ionic elk
#

I see some stuff for Amazon but it wouldn't arrive until October

#

@slender iron what did you click through on?

slender iron
#

the stm32 base sent me to vcc-gnd and then the board name

ionic elk
#

I can't get any of these links to send me to a purchase page. Are we looking at the same thing?

slender iron
ionic elk
#

I haven't bought stuff off taobao in a while. I need to make an account?

slender iron
#

I have no idea

manic glacierBOT
lapis hemlock
#

@onyx hinge Jeff, if I want to have a function that prints out some information (i.e., this information is not returned per se), how do I do that? E.g., in void ndarray_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) { (void)kind; ... , where does the *print pointer come from? A real-life example would be numpy's info function: https://numpy.org/doc/stable/reference/generated/numpy.info.html .

manic glacierBOT
lapis hemlock
#

Another, very common, example is the log messages of function fitting, and the like.

manic glacierBOT
ionic elk
#

@slender iron what's the intended behavior supposed to be, when a null pointer is dereferenced? It seems like most boards just ignore it? This was definitely happening on STM32 but it wasn't noticeably affecting performance

slender iron
#

that usually causes a hard fault that leads to safe mode

#

it should be fixed so it doesn't happen

ionic elk
#

I'm super confused then, because it definitely wasn't causing a hard fault

manic glacierBOT
ionic elk
#

But I even put a tracking message in Main to confirm it's null and there's nothing afterwards that could be could be changing that pointer...

slender iron
#

I don't have enough context to give you a pointer

manic glacierBOT
ionic elk
#

@slender iron it's not a big deal, it's pretty much fixed as it is and if you have no complaints after reviewing I'm fine calling it. I did want to draw your attention to the "Code done running. Waiting for reload." message, though. Is there a reason why we only show it when serial_connected has failed?

#

Seems like that should just always be there when your code completes

slender iron
#

it should be printed when a serial connection is made

#

you don't want to send it if the code completes before serial is connected

ionic elk
#

Right now it's

    bool serial_connected_at_start = serial_connected();
//run code
    // Wait for connection or character.
    if (!serial_connected_at_start) {
        serial_write_compressed(translate("\nCode done running. Waiting for reload.\n"));
    }

forgive me if I'm missing something, but doesn't that prevent it from ever displaying?

#

the "wait for connection or character" implies that maybe this was originally a loop or some other delay mechanism?

slender iron
#

you are right, it won't be printed if the serial connection is made while code.py is running

#

if a reload is triggered it will show up the second time

#

because run_code_py is called multiple times

ionic elk
#

Right. I asked because I've never actually seen the "Code done running" message

#

So I'm trying to understand what circumstances it actually displays and why it doesn't simply display every time

onyx hinge
#

@lapis hemlock I think technically you want to use MP_PYTHON_PRINTER if you don't have another print object handy. In CircuitPython we usually refer to &mp_plat_print which is probably not correct

ionic elk
#

If you meant that "Code done running" should show up the second time there is a soft-reboot, I haven't seen that happen.

solar whale
#

I shows up on the PyPortal display

onyx hinge
lapis hemlock
#

@lapis hemlock I think technically you want to use MP_PYTHON_PRINTER if you don't have another print object handy. In CircuitPython we usually refer to &mp_plat_print which is probably not correct
@onyx hinge OK, thanks! But if I do that, can have a single implementation for multiple platforms?

onyx hinge
#

Depends whether micropython has changed in the meantime

lapis hemlock
#

So, this last example should be universally applicable, right?

#

OK, I will look into that.

onyx hinge
#

seems like MP_PYTHON_PRINTER must work in circuitpython

#

this is in header mpprint.h as you may have already discovered

lapis hemlock
onyx hinge
#
#    define MP_PYTHON_PRINTER &mp_sys_stdout_print
#else
#    define MP_PYTHON_PRINTER &mp_plat_print
#endif
``` has something to do with whether an optional feature is enabled
lapis hemlock
#

If you say it is safe in circuitpython, then I think we are done. Thanks again!

slender iron
#

@ionic elk what do you use to connect to the serial output?

ionic elk
#

I'm looking at it over USB CDC

#

I have a terminal emulator on mac

turbid radish
#

?serverinfo

digital shoreBOT
#
adafruit
Owner

adafruit#3230

Region

us-west

Channel Categories

8

Text Channels

54

Voice Channels

6

Members

23964

Roles

32

manic glacierBOT
#

Interesting development -- I included PR #3232 which has a fix for a startup issue.
With GCC 9 it all works normally
With GCC10 - now on the Raspberry Pi, I can get to the REPL but CIRCUITPY does not mount
same on the Mac ... this is different than without #3232 since it works normally on the Mac, but goes to Safe Mode on the Pi (and Linux)

I wish I know what it was telling me, but it is trying.....

manic glacierBOT
prime flower
manic glacierBOT
manic glacierBOT
slender iron
#

@ionic elk try screen if you haven't. it may be that your terminal emulator doesn't send the connect signal

manic glacierBOT
slender iron
prime flower
#

woah - this might overtake the v3 poster for my favorite

manic glacierBOT
raven canopy
#

that is some very sweet posterage!

forest laurel
#

Hi all! I am working on a CP project using ItsyBitsy M4 and so far things are working great. I am extending CP with my own C modules so I'm already building custom UF2 images ... I wonder, since I've seen lots of discussion about overclocking the SAMd51 (and I know you can in the Arduino environment) ... is it possible to build a custom CP image with a different clock rate than the stock 120Mhz?

slender iron
#

@forest laurel ya, it should be possible to change the clock rate in a custom build

#

the clock stuff is in ports/atmel-samd/peripherals

manic glacierBOT
forest laurel
#

@slender iron Thanks Scott. I'll go poking around in there and see what I can find!

manic glacierBOT
manic glacierBOT
#

This freezes adafruit_bus_device and adafruit_rfm9x into the build for the feather_m0_rfm9x.
I had to take out several modules.
At this point, pulseio is removed. It may be possible to put it back once #3236 and #3237 are implemented. Right now some of the larger translations will not build with it and it does not work on the SAMD21 anyway. We can revisit this.
The main downside to removing it is we cannot support the DHT sensors.

I waned to get this out so it can be reviewed and be av...

forest laurel
#

@slender iron Good morning Scott! I have been poking around in the peripherals/ subdirectory as you suggested. Also researching a lot on the cortex (finding mostly stuff on the Arduino side), and trying to piece things together. From what I can gather so far (I'm on github/main), I'm seeing code that is basically using the DFLL (48MHz), dividing it by 24 to "channel 5" (so 2MHz), then setting DPLL0 to 120MHz by using a multiplier of 59 (+1 = 60 * 2MHz = 120MHz). If I wanted to boos to say 150MHz, I could just bump the 59 to 74 in "init_clock_source_dpll0"? Am I on the right track? (I am happy to just try it out, assuming I don't have too much risk bricking by Itsy?) 🙂

slender iron
#

@forest laurel yup, I think that's the right track

forest laurel
#

of course I know I'll need to update my custom C module which uses CYCCNT for some timing stuff ... but thats OK - just wondering if this is even possible 🙂 Also, aside from the obvious like neopixel_write - anything else obvious you could thing of that might be disrupted by messing with DPLL0 drequency?

slender iron
#

¯_(ツ)_/¯

forest laurel
#

I guess I'll find out!

#

😄

forest laurel
#

Well ... my first attempts were successful, at least with my code. I don't have my full board avaialble with the I2C sensors I'm using, but the code runs with previously logged data just fine. I adjusted the CYCCNT timings in my parallel neopixel bitbang code and it is working prefectly. My "frame rendering rate" to an array of 8x96 = 768 neopixels in total went from 204FPS to 259FPS by bumping to 200MHz. Will play around with it and see what breaks if anything, check CPU temp at stock vs. boosted freq, etc.

#

But initial results are promising

#

(the increase is due to reduced cost to calculate the buffers, of course the timing to push to pixel array is fixed)

#

But I'm also slightly overclocking the LEDs since they are SK6812 and seem quite comfortable at 1.1MHz vs 800Khz

manic glacierBOT
#
  • Add a Sphinx transform to convert the first paragraphs into the module titles.
  • It also removes refspecific=True from xref nodes so that Sphinx can resolve references to data attributes (e.g. _typing.ReadableBuffer).
  • Make shared-bindings/_typing/__init__.pyi for the types related to the C-level protocols. We shouldn't use _typeshed as it is typeshed's internal utility.
  • Add make check-stubs command to validate stubs with mypy.
  • Fix some type hints.
slender iron
#

@forest laurel nice!

forest laurel
#

I'm really not sure what else should change for consistency (microcontroller.cpu.frequency still reports 120MHz, for example), or function (does SPI clocking depend on DPLL0?), etc. - but it is a start.

#

I would be happy to continue work on this with a goal of eventually contributing back a patch which would allow overclocking similar to the options added to Arduino the Adafruit products

slender iron
#

@forest laurel making it configurable would be amazing!

prime flower
#

@slender iron Possibly they're using an older version of ESP32SPI_Socket which used write instead of send?

#

I'll jump into that thread if that's OK

slender iron
#

that'd be awesome. thanks!

prime flower
#

Posted up.

simple pulsar
#

I've noticed CircuitPython makes a new copy of a bytes object if you do c = bytes(a). I've tested a few versions of big python and it doesn't do this. Is it suppoesd to do that?

manic glacierBOT
#

A few more observations go GCC10 behavior for SAMD51 - PyPortal

With GCC9 everything works fine
With GCC10 --
on the raspberry Pi/Linux -- it boots then goes to Safe Mode,No REPL, No CIRCUITPY drive
on the Mac , I can access the REPL but no CIRCUITPY DRIVE -- does not got to safe mode

I tried just connecting Power -- no computer -- The Pyportal display looks normal.
"Code done running. Waiting for reload" the Hello World from code.py was displayed.

silver tapir
#

My local hardware provider just gifted me a sparkfun redboard with a cortex m4 module called "artemis".

#

But sadly, it has a serial programmer instead of native usb, so no cpy here 😦

#

I'll research later if there is a chance to program the module directly like in the esp32-s2, but I'm guessing that if they could, they would have saved the money on the serial chip.

manic glacierBOT
mental nexus
#

Along the vein of adding a memory-saving way to handle text labels using bitmaps, I’m interested in extending Bitmap.c to copy a rectangular glyph bitmap into a bitmap. I have it running using Python pixel by pixel copy but it’s really slow relative to the existing label library. I’m totally new with updating CP, could I ask someone a few questions and suggestions on how best to tackle this?

mental nexus
#

Or if there are already other bitmap manipulation functions that I am unaware of, I’ll gladly use them.

manic glacierBOT
manic glacierBOT
manic glacierBOT
manic glacierBOT
simple pulsar
onyx hinge
#

OK that's a super cool idea bleeptrack. Thinking about what modern PCB manufacturing makes "feasible".

mental nexus
#

Is there a learn guide reference for the overview of what is “shared-modules” vs “shared-bindings”? I’m trying to add a new function and don’t fully understand how to get the hooks from C back into python.

stuck elbow
#

@mental nexus in short, shared-modules has the code that makes things happen that calls internal APIs, and shared-bindings exposes that to the python side

mental nexus
#

Thanks @stuck elbow. Now to understand how to modify these incantations properly. One more question. How do I specify these bindings so it is a function than can be used like mybitmap.dosomething(a,b,c) versus dosomethjng(mybitmap,a,b,c). Even better can you point to an example that has both of these?

stuck elbow
#

You mean you want a method on an object? Is the object created in C code or in Python?

mental nexus
#

Ok so in the locals dict, each class function gets an entry like this: { MP_ROM_QSTR(MP_QSTR_auto_refresh), MP_ROM_PTR(&displayio_display_auto_refresh_obj) },

#

And what is this info up at the top in “make_new”:


        { MP_QSTR_auto_refresh, MP_ARG_BOOL | MP_ARG_KW_ONLY, {.u_bool = true} },

Is this the default values for the function arguments?

#

Oops that is just the init for the class.

#

Thanks for the introduction to this. I will dig in a bit more and see if I can fight through it.

stuck elbow
#

that's argument parsing

#

for functions that take keyword argument or variable number of arguments

manic glacierBOT
#

I can check out found_main and see what the value is - I'm not that familiar with this portion of Circuitpython so I was kind of blundering around here. exception_type is the problematic element - it's initialized to NULL in main.c and never changed, so anything based off of it will fail. We could set it to a proper default instead, if you'd like - the problematic stuff starts here. Still ...

mental nexus
#

Thanks for pointing me in the right direction. Definitely a lot to absorb with all of this. I’ll see if I can get something simple working and then go from there!

onyx hinge
#

hmmm .. should I (A) re-spin this board to have an itsybitsy soldered into it or (B) stick with the trinket, but make a custom build that enables long ints?

#

given that it's not a product, (B) probably is the way to go

mental nexus
#

Trying to expand a CP library with a new function. It has 8 input variables. It looks like I need set the shared bindings with MP_DEFINE_CONST_FUN_OBJ_KW(displayio_bitmap_insert_obj, 1, displayio_bitmap_obj_insert);

#

But what does the second parameter (a number) specify? Where can I look to understand how this is defined?

onyx hinge
#

I didn't initially think about how this process of computing si5351 clock settings would require more precision than floats, but when dealing with ratios you end up with values like 915000000000/27923584

mental nexus
#

Oops, didn't mean library, meant displayio core.

#

Got it. Thanks @onyx hinge

onyx hinge
#

so in this case the 1 is the minimum number of arguments that is required, I guess?

mental nexus
#

I see a lot of functions do some kind of validation of the arguments. Where I can I find what these arguments mean and how to check my arguments? This is not what I'm working on, but an example from Display.c enum { ARG_target_frames_per_second, ARG_minimum_frames_per_second }; static const mp_arg_t allowed_args[] = { { MP_QSTR_target_frames_per_second, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 60} }, { MP_QSTR_minimum_frames_per_second, MP_ARG_KW_ONLY | MP_ARG_INT, {.u_int = 1} }, };

#

Seems like this is dealing with optional arguments also.

onyx hinge
#

again, not a lot of documentation. The things you can ask for are: bool, int, obj. additionally, it can be required or it can be kw_only. ```typedef enum {
MP_ARG_BOOL = 0x001,
MP_ARG_INT = 0x002,
MP_ARG_OBJ = 0x003,
MP_ARG_KIND_MASK = 0x0ff,
MP_ARG_REQUIRED = 0x100,
MP_ARG_KW_ONLY = 0x200,
} mp_arg_flag_t;

#

and the last thing can be a u_bool, u_int, or u_obj to match the MP_ARG_<type> and give a default value if not MP_ARG_REQUIRED.

mental nexus
#

How about the MP_QSTR_target_frames_per_second can that be any name or does that reference somewhere else?

manic glacierBOT
#

This PR will fix the following errors:

onyx hinge
#

Yes, it can be any name, you can make up new ones. If you do, and you get an odd error during compile, try doing a "make clean"; the build system tries to keep the list of MP_QSTRs up to date but doesn't always succed in some subtle situations.

manic glacierBOT
mental nexus
#

Thanks for the information, I'll dive in again and see if I can make it work. Also, for the benefit of my future self, I'm taking notes on this complicated scavenger hunt!

ruby atlas
#

@onyx hinge I'm looking into what it would take to make _pixelbuf be able to take ulab arrays. The first thing that comes to mind is to make pixelbuf accept the datatypes from ulab, the second is to make pixelbuf accept an array of len == 3 * n or len == 4 * n (when in RGBW mode or Dotstar mode).

#

It is already easy (though I'm not sure how expensive/fast) to create a ulab array from pixelbuf.

onyx hinge
#

that would be neat

manic glacierBOT
manic glacierBOT
solar whale
#

weird -- github just told me I could not comment "at this time" then on retry accepted the comment...

manic glacierBOT
manic glacierBOT
#

Hi,

I'm using the 2MB internal flash of a Feather M0 Express and os.listdir apparently is broken when the current dir is '/':

>>> os.chdir('/')
>>> os.listdir()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
MemoryError: memory allocation failed, allocating 2048 bytes

If I use os.listdir within different directory, it works as expected:

>>> os.mkdir('test')
>>> os.chdir('test')
>>> os.listdir()
[]
manic glacierBOT
#

Performance of bitmap_label.py is currently limited by the speed of bitmap copying of the individual glyphs into the bitmap_label.

I updated CircuitPython's displayio.Bitmap to provide a .insert function. This takes a slice of a "source" bitmap and copies it into the bitmap at a specified x,y location in the bitmap. My current fork is located here

Note: This version of bitmap.insert copies only non-zero value...

mental nexus
#

@onyx hinge, thanks for the guidance this morning. Thanks to your inputs, I succesfully made a rudimentary bitmap slice copy. It has a huge performance impact on what I was trying to do (copy font glyphs into a larger bitmap) even with a simple strategy. I added some notes to the related issue #3004.

onyx hinge
#

Cool, I'm glad my little hints were worth something to you!

manic glacierBOT
mental nexus
#

Your not so little hints pointed me in the right direction. This code is pretty difficult to piece together for me so a little bit of a roadmap helped a lot. I can’t say I understand everything I did so far but at least this is a first step in that direction. And even minimally-working (albeit far from elegant) is a big step and good positive reinforcement on a Friday!

#

Thanks a lot @onyx hinge and @stuck elbow

manic glacierBOT
ruby atlas
#
from _pixelbuf import wheel as colorwheel

with timer():
    buf = ulab.linspace(0, 256, 256)
    vec = ulab.vector.vectorize(colorwheel)
    for n in range(256):
        pixels[:] = vec(buf)
        pixels.show()
        ulab.numerical.roll(buf, 1)


with timer():
    for n in range(256):
        pixels[:] = [colorwheel((i+n) % 256) for i in range(256)]
        pixels.show()

#

Took 3.28809
Took 4.15796

#

ulab version is faster!

orchid basinBOT
orchid basinBOT
#

@jwcooper it turns out this was a dependency mess. kramdown is actually listed twice in Gemfile.lock, and I missed one. Then, Trying to build locally to test failed, because jekyll 3.8.4 required an earlier version of kramdown. Updating to 3.9.0 implied a bunch of other updates as well. Also kramdown 2.x now splits out kramdown-parser-gfm, among other things, and that's a separate dependency.

This seemed like a nightmare to fix manually, but then I saw that if we used the `gith...

ornate breach
#

<@&327289013561982976>

tulip sleet
#

thanks @ornate breach

ornate breach
#

🙏

manic glacierBOT
#

Implements #2923. Allows the following: https://circuitpython.readthedocs.io/en/latest/shared-bindings/support_matrix.html#

@askpatrickw was correct, rST's csv-table parsing just wouldn't allow the reference to be generated. I switched it to use a list-table, using an example in the docutils reference of applying internal hyperlink targets.

The only tricky part is utilizing the resulting hyperlink targe...

orchid basinBOT
orchid basinBOT
orchid basinBOT
fringe trench
#

Sorry I have been out of touch, lost power in the storm Tuesday, still out.

idle owl
#

@fringe trench Sorry to hear that. I hope you're staying safe.

fringe trench
#

I am. I offered to help with Circuit Python and promptly disappeared, so since my phone is currently charged and mobile data is ok, dropping a note to explain why.

idle owl
#

@fringe trench No worries. The important thing is that you're ok. We'll be here when you return.

orchid basinBOT
#

I don't see the change request for the original file. Could you point me to it? Thanks

@makermelissa Sorry, I did not create a PR after I had submitted my changes earlier. Here is the patch for the existing .md file https://github.com/adafruit/circuitpython-org/pull/517 Hope it looks ok. I kept the parameters you mentioned above the same with others modified. This process was a good exercise to ensure my future board PR goes well :) Thanks.

manic glacierBOT
orchid basinBOT
solar whale
#

@tidal kiln Should we wait for additional review/comment or would you leke me to merge/release the rfm9x change today.

tidal kiln
#

meh, i'd say go ahead and merge/release. you tested 3 cases, i tested 1, seems adequate.

ivory yew
#

oof, anyone ever bricked a SAMD21 board? I can't connect to it with openocd anymore.

ornate breach
#

I have not

#

Fancy paperweight?

ivory yew
#

I hope not

ivory yew
#

yeah I guess I did. 😦

orchid basinBOT
manic glacierBOT
manic glacierBOT
slender iron
#

@ivory yew I did have to use atmel studio once to get one back

#

were you doing pin muxing stuff? it can be particularly hard to get debug access if you switch the mux away from swd

ivory yew
#

lol

#

yeah I imagine so

#

I managed to bring it back from the dead by basically doing a timing attack on it and resetting it until OpenOCD connected.

#

My problem was that I set a peripheral's clock config to a GLCK that wasn't configured and then tried to write to a synchronized register.

#

that apparently is very bad.

slender iron
#

ah ya. maybe hanging the memory bus then 🙂

#

glad you got it back!

#

@worn lark this is a better channel to ask about the RGB status pixel because it'll require some internal changes to work

lone axle
raven canopy
#

yeah, i saw it earlier and DM'd kattni. i'm not sure what the issue is, as all of the recent CI/Jekyll builds passed. 🤷

mental nexus
#

@idle owl I’m working with @lone axle on some updated examples with the display_text library and we’d like to add some font files for the examples. What kind of license issues do we need to consider? Is there someone that vets these kinds of things for inclusion into the libraries?

lone sandalBOT
manic glacierBOT
#

I have a problem reading certain JSON files stored on an SD card on a PyPortal Titano. Basically, if the size of the JSON string in the file is 1024 characters or larger, read() fails. If smaller, it works fine.
Here’s a short demo Python program. https://github.com/gmeader/pyportal/blob/master/bug_demo.py

anecdata: @gmeader Confirmed. I can read a >=1024 character file from CIRCUITPY, but not from SD Card. https://gist.github.com/anecdata/f59901af2922ad2279971a57894c2a24 (PyPortal 6.0.0...

manic glacierBOT
#

I was planning got try the latest, but I am having a problem fetching this PR

[Jerry-desktop-mini:/Volumes/CircuitPythonBuild/circuitpython] jerryneedell% git fetch origin pull/3237/head:pr_3237
From https://github.com/adafruit/circuitpython
 * [new ref]             refs/pull/3237/head -> pr_3237
Fetching submodule lib/protomatter
fatal: remote error: upload-pack: not our ref 2408e9c033f5ec050967b1592b29a950a831d6c2
fatal: the remote end hung up unexpectedly
manic glacierBOT
hybrid scarab
#

👀

idle owl
#

@mental nexus That is the point of PRs, or at least the intention of PRs, for someone else to catch things like this. That said, things get missed. I'm not sure what kind of licensing comes with font files. I'll have to look into it, and get back to you.

hybrid scarab
#

Aren't fonts ostensibly not-copyrightable? Though putting that to the test would be... fun

mental nexus
#

Ok, thanks kattni. We’ll include some fonts in a PR and see how the review proceeds.

hybrid scarab
#

Does the "fonts" Python module work here, or are these extremely display-specific?

#

Actually I guess CircuitPython is a different world WRT to resource distribution

idle owl
#

@hybrid scarab In theory, yes, but licensing isn't necessarily copyrighting.

hybrid scarab
#

True!

lone axle
#

I have run across some fonts in my work that were definitely locked down in some way and came with hefty fees to use depending on how they were used. I'm not sure of the specific legal mechanism in use though. The ones we are looking at here are much more common and seem to be open for use as far as we can tell.

hybrid scarab
#

No complaints... yet

lone axle
#

Ooh that is good to know. Thank you 😄

hybrid scarab
#

Oooh! Thank you

#

I think a handful of people other than me actually use my shove-fonts-on-pypi-because-life's-too-short packages, but it would be nice to add these

crimson ferry
hybrid scarab
#

AH! That's how you do a reuse license for a single file- I had an svg earlier that I just pasted some HTML comments into

lone axle
#

whoa

#

are all of those usable within the system somehow? or you'd need to make a new build to utilize them?

crimson ferry
#

I'm really not sure. I just needed some fonts in the early days of CP when there were only a couple in learn guides, and came across those.

hybrid scarab
#

That Tecate/bitmap-fonts repo is a treasure-trove

crimson ferry
#

I tend to use terminus-font-4.39 bc it has a good range of sizes from 12-32 pt

orchid basinBOT
hybrid scarab
#

In a lot of use-cases I need just one good vertical size, without any weirdness, and with PIL-compatibility. Might have to look over these.

crimson ferry
#

Sometimes I'll even automatically switch to a smaller font if some dynamic text is bigger than my Label 😉

hybrid scarab
#

e-Ink being the exception

ionic elk
#

Would anyone have a moment for me to rubberduck at them about PulseIn on ESP32-S2 today? I'm really bogged down with the FreeRTOS ringbuffer and could use a second opinion.

thorny jay
#

Wait, is it @hybrid scarab on Adafruit Discord server? Are you going to join for the meeting? I need to update my Hug Report...

hybrid scarab
#

Ahaha! Hello there @thorny jay

#

I've been lurking here for a long time, but it's an intimidating server 😆

thorny jay
#

About font and copyright... from usenet reading 25+ years ago, low res bitmap font could not be copyrighted, but TTF or vector font could. At the time I was collecting and distributing a collection of link to cyrilic font, both for DOS(?) and Windows.

#

But I don't know if this was tested in court since then.

hybrid scarab
#

Still not something I'd want to test in court against any significant font publisher though- they seem to enforce their own interpretation

manic glacierBOT
thorny jay
#

There are enough copyright free font that are meaningfull for Circuit Python typical screen resolution.

hybrid scarab
#

Would be nice to collate those bitmap fonts which have permissive licenses, I find myself duplicating effort in that regard a lot

#

When I start porting our other boards over to CircuitPython there will be some that need specific fonts, too

thorny jay
#

There are a lot of duplicate in that repo, because each project try to use one that best fit their need.

#

So putting together those already verified font would be a big progress...

#

Should that be "In the Weed".

#

At one time, I started to group them together to have a collection to choose from when in need.

ivory yew
#

@hybrid scarab definitely intimidating if you don't mute a ton of the channels

thorny jay
#

I am pretty sure those bitmap font are generated from a vectorial source and made to the size required.

ionic elk
#

@slender iron you prepping for the meeting or can I ask you a couple quick questions about found_main and the other run_code_py setup code?

slender iron
#

I'm in a separate meeting atm

ionic elk
#

ok, I'll ping you after the main meeting is over

hybrid scarab
#

Oh boy converting physical_feather_pins into a CookieCutter-based library has been... oof

thorny jay
#

So you plan to keep using "physical_feather_pins"?

#

Do you have other library relying on that?

hybrid scarab
#

At least until something mirroring its functionality is merged upstream- although tbf I don't know how much relies on it

thorny jay
#

I believe it is only the Enviro+ library.

#

Now that lrt559 is solved, I think all the other you use the adafruit supported library...

hybrid scarab
#

You might be right 😬

thorny jay
#

But then, I don't know all your product...

#

at least not the secret one.

hybrid scarab
#

No secrets on the CircuitPython front, still reeling from this 😆

#

It made a good, self-contained project for Nat to do when he was interning for us- allowing me to forge ahead with my workload without having to think about it. Unfortunately that's now coming back to nip at my heels

#

I'd like for us to do Breakout Garden FeatherWing, but there's a lot of software support that has to happen before that's feasible

thorny jay
hybrid scarab
#

Not that secret if it's on my Twitter 😆

#

But yes we have Stemma/Qwiic to Breakout Garden adapters in the works- actually really handy!

thorny jay
#

How many Breakout Garden do you fit on a FeatherWing ?

hybrid scarab
#

Not sure, actually. Might be quite a squeeze!

thorny jay
#

Wondering where the "reverse insertion" protection take place... is it on each breakout?

hybrid scarab
#

Yes, the breakouts are protected themselves

thorny jay
#

I think you could fit 3 but the middle one would need to be "not on the same row".

#

So maybe 2 I2C and 1 SPI in the middle.

lone axle
#

Interesting. I hadn't seen these Breakout Garden devices before.

hybrid scarab
#

That's because they're so awesome their majesty has blinded you 😆

thorny jay
#

This is a pre-Stemma solution to make sensor that are modular but can also be used as breakout board and soldered.

hybrid scarab
#

Those encoders and pots have a Nuvoton 8051 1T driving them, for fun

thorny jay
#

I believe the Rotary POT is not an announced product yet...

lone axle
#

Oh wow. I'm definitely going to have to get an order in. 😻 @ the RGBW Trackball breakout.

hybrid scarab
#

Yeah the edge-connector you stuff into a socket works really well- although unlike Stemma soldering it... kinda breaks that

#

Also WIP. We don't tend to have SUPER SEKRETS, but we don't shout too much about stuff like this in case it never gets released

#

The APDS 9500 is a particularly troublesome sensor

thorny jay
#

Adafruit use the APDS9960, standalone and on the CLUE.

#

Wait... I know rather well the Pimoroni product line... and the Adafruit recent (2-3 years) product. Does that make me an expert?

vivid temple
#

is the esp32-s2 feather already available to buy? can’t find anything

#

if not, what are the alternatives?

lone axle
#

I don't think there is an esp32-s2 feather yet.

hybrid scarab
#

@thorny jay insofar as I'm aware the 9960 and 9500 are frustratingly unalike, and the 9500 datasheet is full of "here be dragons", where it mentions initialising undocumented registers to undocumented values.

lone axle
#

Those are he ones currently available that I am aware of. There may be others that I don't know about though.

thorny jay
tulip sleet
#

we are using the Saola WROOM and WROVER boards. Get the one with PSRAM (WROVER, I think).

thorny jay
#

ESP32-S2 you have one by Unexpected Marker but very few were produced, and one from that Cat company in Mexico that might be supported in the next 6.0.0alpha.

#

And make sure you have an antenna if you take the one with the antenna connector.

vivid temple
#

okay, thanks guys - wifi already working?

thorny jay
#

@slender iron is working on it... you should watch his video, or follow the meeting in 24 minute for the lattest news.

vivid temple
#

24 minute?

thorny jay
#

Check the pinned message.

#

Weekly meeting is in 22 minutes (except if I am wrong).

slender iron
#

it is soon

thorny jay
#

Last thing I have seen in ESP32S2 the scanning was working...

#

But I did not watch the full video and that was 4 days ago.

manic glacierBOT
#

I was having some submodule issues due to using an old version of git. I
had thought all that
was straightened out, though, as the PR passed all the build checks. If you
need to get a good
copy, you can clone my repository at
https://github.com/DavePutz/circuitpython.git and
checkout the issue3216 branch.

On Mon, Aug 10, 2020 at 5:38 AM jerryneedell notifications@github.com
wrote:

I was planning got try the latest, but I am having a problem fetching this
PR

[Jerry-desktop-mini:/V...

vivid temple
#

that’s a youtube live broadcast in 22 minutes?

lone axle
#

it's in the voice channel here in Discord

vivid temple
#

ah okay

lone axle
#

it gets recorded and uploaded to youtube though

#

and various other podcast services

vivid temple
#

@slender iron are you going to implement esp-now as well?

slender iron
#

not planning on it

#

trying to do the main wifi stuff first

vivid temple
#

sure focus to get the main things working first 🙂

#

but if there is time later on ... 😛

slender iron
#

my goal is to get more folks working on the port than me

vivid temple
#

i have a bin for micropython with esp-now working. They just haven’t accepted the code in their main branch because of the style

lean marsh
#

is there an off topic or general chat here?

slender iron
#

@vivid temple I'm happy to help you get it into circuitpython

idle owl
#

<@&356864093652516868> Hello! CircuitPython Weekly meeting in 15 minutes. Please update the notes document with your Hug reports and Status updates (regardless of whether you're attending the meeting), or let us know you're lurking. It's super helpful. Looking forward to seeing everyone soon! https://docs.google.com/document/d/1G2UoQCcNsiacWqUn8z_783TkmnNg6ytaANyaeFx0coE/edit#

thorny jay
#

@idle owl I would love if you could have a second look at my UART enhancement for the PM25 sensor: https://github.com/adafruit/Adafruit_CircuitPython_PM25/pull/6 . This would be handy for usage in Feather Wing Enviro+. Or maybe @hybrid scarab can have a look at it and see if more things can be ported from Pimoroni Library to Adafruit Library?

hybrid scarab
#

It's on my TODO list- right now I'm calling it a day, not been the picture of health lately

manic glacierBOT
idle owl
#

@hybrid scarab Hope you feel better and get some needed rest.

#

@thorny jay I'll try to get to it this week. Added it to my list.

thorny jay
#

I don't know for UK... but it is hot in Europe, at least where I am.

hybrid scarab
#

Thanks @idle owl

thorny jay
#

For health reason, I don't have to (physically) go to work tomorow... not because of Covid... but because of the heat wave and because the air conditioning is not working well in my building!

serene warren
#

Lurking - noted in doc

prime flower
#

Lurking as well

onyx hinge
#

.. grabbing the list of lurkers ..

modern wing
#

Good afternoon all you wonderful folks -- happily lurking, as noted in the doc adabot

turbid radish
#

Lurking today - if you have newsletter content, ping me or Tweet to @anne_engineer

thorny jay
#

Since my microphone works... maybe not lurking after all.

uncut nexus
#

Lurking today, thanks!

bleak tiger
#

@thorny jay yeah super hot, had highs above 35 for the last few days!

onyx hinge
#

@thorny jay mute for now though?

#

It feels like a short meeting notes doc but .. it's still 14 pages 😅

thorny jay
#

I don't care if it's 35C° in the day... but it should go below 20°C during the night.

bleak tiger
#

Right!

onyx hinge
#

@lone axle I can grab links today unless you want the honors again

slender iron
#

@bleak tiger if you want to speak in the meeting we'll need to add you to the circuitpythonistas role

thorny jay
#

That will be hard...

bleak tiger
#

Cool, nothing to add today but I'd like to be added for future meetings?

tidal kiln
#

lurking

onyx hinge
#

@bleak tiger OK, let us know -- we can also add you if you want to get Discord reminders for the meetings.

bleak tiger
#

Oh that'd be useful, please add me

onyx hinge
#

@bleak tiger done! and welcome!

sterile bronze
#

lurking

lone axle
#

@onyx hinge I can get them 😄

bleak tiger
#

Woo now I'm purple?

#

Iam!

onyx hinge
#

Yup hope you like it

bleak tiger
#

Cheers

turbid radish
#

Purple

serene warren
#

lurking

onyx hinge
#

@lone axle it's your new semiofficial role then

inland tusk
#

lurking

ornate breach
#

Turkeying

#

Canadian thanks giving isn’t too far

onyx hinge
#

[I'm just going to assume that illegible user name is lurking, let us know if you're a legitimate person]

slender iron
#

I assume troll

#

joined at 10:25 today

lone axle
slender iron
#

🙄

lone axle
turbid radish
#

If you have newsletter content, ping me or Tweet to @anne_engineer

onyx hinge
#

(we have merged 39 pull requests and a total of 178 commits since circuitpython alpha 2)

ionic elk
#

@gilded cradle that's cool!

gilded cradle
#

Thanks

ionic elk
#

What kind of dev boards do they have for the MP?

gilded cradle
#

I have the STM32MP157C-DK2 which has a display and it's running Linux.

lone axle
errant grail
#

Late and just listening today.

ionic elk
#

@gilded cradle how would you rate it alongside other boards in terms of value? Seems like a good tradeoff of features vs price to me, but I don't have as much experience with SBCs.

hybrid scarab
#

I'm lurking and just listening

gilded cradle
#

Pretty good @ionic elk, but it's designed for more advanced users for sure because you either need to compile packages or you need to compiler a firmware image to get it working with Blinka. I'm currently working on trying to find/create an easier path for new users.

ionic elk
#

That's great to hear. I have a friend who's working with linux on STM32 stuff but I think he's trying to do it off an H7... does the MP even run on an ARM core?

slender iron
#

MP1 is a cortex-a core iirc