#circuitpython-dev
1 messages · Page 319 of 1
@hidden geyser thanks for looking into that cookie cutter path thing.
@tannewt these CI failures are kind of all over the place - right now I see a DE translation failure on the Gemma M0 and Trinket due to flash constraints, and an IDF failure for the ESP32-S2 boards that seems to be related to the virtualenv. Before that it was a server issue with AWS? I don't think any of them are related to my code though.
- trinket m0, gemma m0: out of flash space. Incomplete fix: #3230
- esp32s2: a problem with actions/cache having wrong contents? There is no "clear cache" button. https://github.com/actions/cache/issues/2
@hierophect mentioned this relative to #3232 but really it will make any PR red right now.
https://github.com/adafruit/circuitpython/runs/927877015?check_suite_focus=true
https://github.com/adafruit/circuitpython/runs/927878833?check_suite_focus=true
https://github.com/adafruit/circuitpython/runs/927878963?check_suite_focus=true
https://github.com/adafruit/circuitpython/runs/927878968?check_suite_focus=true
https://github.com/adafruit/circuitpython/runs/927878989?check_suite_focus=true
@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.
I tried building with the updated PR. The build succeeds, but when I put it on my board, it does not boot.
attached is the log from the USB Debug port
esp32s2_crash.txt
If I build main ,it works normally
@onyx hinge are the recent build issues you have had with gcc10 or 9?
@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
yes -- just checking -- after my experience with gcc10 on the GCentral I'm backing off using it.
so happy to have your testing
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.
Setting SUPEROPT_VM = 0 saves 300 bytes on Trinket. Supposed this slows down the interpreter by 20% (according to comment in py.mk. We could do this only on the translations that are overflowing.
FYI -- confirmed the same failure as above on a feather_m4_express.
Appears to be an issue with SAMD51
rtc is also enabled on all builds. It uses 1556 bytes on trinket_m0.
pulseio uses 5888 bytes.
Dropping math frees 8296 bytes.
I was able to build, and no crashes yet, but in circuitpython I can't get the LED to initialize. On the REPL:
import board
import neopixel
pixels = neopixel.NeoPixel(board.NEOPIXEL, 1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'NeoPixel'
I was able to build, and no crashes yet, but in circuitpython I can't get the LED to initialize. On the REPL:
import board
import neopixel
pixels = neopixel.NeoPixel(board.NEOPIXEL, 1)
Traceback (most recent call last):
File "", line 1, in
AttributeError: 'module' object has no attribute 'NeoPixel'
odd -- not at all clear why it won't even boot for me...
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.
# 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...
I don't see any evidence of RELEASE_NEEDS_CLEAN_BUILD actually being set. Does this mean that we're not actually building these translations with the expected CFLAGS?
That sounds like a bug! But I wonder why it worked?? Could you try a commit to add that?
I will add RELEASE_NEEDS_CLEAN_BUILD various places, and see what happens. Also I have an idea about the esp-idf builds: I will change the cache tag.
@tulip sleet feel free to push to that PR branch, I'll try to be mindful and not force-push it
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.
@jepler the only failure was an S3 upload failure, unrelated to builds, so looks good for now
woo thanks @tulip sleet
I was working on this while danh was doing other things to get our builds to fit again. It's 40 bytes, not sure if it's worth it. We can keep it in our collective pocket, I suppose.
@tulip sleet what does the esp-idf cache tag impact?
it identifies the exact cached installation stuff in /opt/hostedtoolcache or whatever it was called. There's some info here but I don't understand this in any depth at all : https://docs.github.com/en/actions/configuring-and-managing-workflows/caching-dependencies-to-speed-up-workflows
To make your workflows faster and more efficient, you can create and use caches for dependencies and other commonly reused files.
Also I should be saying "key", not "tag"
ok -- so it only impacts the github actions, not my local builds...
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.)
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.
do you have the same commit of esp-idf or whatever checked that main does?
is it on linux or your rpi?
Mac and RPi
i'll try it myself
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'
yes, those have been updated since the pr was submitted, it appears
actually I built it both ways (sync and not) and got the same results
what is the commit for the PR? Are you trying it in adafruit/circuitpython or hierophect's fork?
on adafruit circuitpython
it's failing in the PR checks, too
ah ok, I was mixed up; then i have no particular insight, sorry
seem like USB is hosed... fresh install did not help -- I'll try cloning his fork
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
That looks compressed 😉
good point, ship it
Try merging from main; it should fix the breaking builds, due to build cache changes in #3230.
OK, after scaring the clownsbugs away, I have determined that it's NOT a space improvement to store the trailing "\0" of each compressed string, rather than its length. https://gist.github.com/66521c5cb28729d7990795dfd539ca16 for posterity
lost nearly 100 bytes on trinket m0
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...
@tulip sleet I tried building from his fork -- same result -- I'll just wait until it is merged....
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
ugh 🙂
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.
Tested on CPX -- irremote_simpletest now works normally.
Not sure why all the build failures -- appear to be for nrf52840 boards
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...
Let us know if you need help with git to fix the protomatter thing.
@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 ...
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. ...
Performance issue has been addressed, at least to an increase of only .5%
From 6.0.0-alpha.2 on a CPX:
>>> exec(open('perf_test.py').read())
4950000
5.69202
With the modified changes:
>>> exec(open('perf_test.py').read())
4950000
5.73193
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...
@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 ...
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...
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.
@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 ...
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, ...
The single build failure is due to https://github.com/adafruit/circuitpython/issues/3074 and not the changes introduced here.
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 ...
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?
@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?
I ran into this again in a CI run. May still be superseded by #2902 someday, but it'd be nice to eliminate spurious build failures to the extent we can with the current Makefiles.
Closes: #3074
@tannewt I'd appreciate your feedback on this approach before I go further. The main trade-off I perceive is that these new displays implemented in Python cannot survive soft-reset.
This should be good to merge after https://github.com/pidcodes/pidcodes.github.com/pull/542 makes the PID allocation official.
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.
@dhalbert @jepler Is this what you had in mind? I ran make update-frozen-libraries at the top level then
git add -A
I was not sure if you wanted all frozen libraries updated at this time or just BusDevice.
Let me know if I should hae done this differently
Any suggestions about how to fix CI issues?
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...
Thanks @jerryneedell !
These creep in when translators on weblate don't notice a problem with an automatically-generated translation. Generated translations often transform "%q" into "% q". Fix the latest crop.
Where can I get the link for today's meeting?
The doc is pinned. https://docs.google.com/document/d/1i_l-w0lmHZg7vSoNgAvNWDoVwK1jU5dojDuJvzQgvMQ/edit?usp=sharing
beyond that I don't think there really is a link, it's just in the voice section of this channel
Thanks.
?serverinfo
@gilded cradle Are there many "important" displays that are supported by framebuf but not displayio?
@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.
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.
Apparently I fixed this on my fork, but forgot to do a PR. The PR is here now: #514
@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....
I always use this bash alias to update submodules after changing branches as per @dhalbert's recommendation: alias gitsubupdate='git submodule sync --quiet --recursive && git submodule update --init'
@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.
@onyx hinge are you running the meeting today? I can paste the news links in here if so.
@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!
@dahanzimin have you worked at all on the F1 flash implementation? If not, I will work on that this week.
@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
>>>
>>>
@jerryneedell, are you able to test the latest patch? I am having problems with submodules getting a good build on github, so I have attached a zip file with a uf2 for CPX.
CPX-6.0.0-test.zip
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...
@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 ...
@onyx hinge Never dreamt of this: https://forum.micropython.org/viewtopic.php?f=3&t=7005&p=49844#p49842
https://www.electrodragon.com/w/images/0/04/LY68L6400_0.3.pdf seems to be the chip on the unexpectemaker feather s2
@lapis hemlock wow!
Lurking
I am lurking today, by the way.
Since mine builds for main, I assume that exonerates any issue with the esp-idf, correct? Your PR does not depend on any additions to it, does it?
lurking
Sounds good
@hierophect and yes, the "RMT driver already installed for channel" errors one only reported with the PR, not with main.
Good afternoon all you wonderful folks! Happily lurking, and the doc is updated to reflect as such 
Lurking
@onyx hinge but I would like to see the pictures.
Someone has a micropython for FPGA.
micropython port, I mean.
lurking
@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.
No Cylons allowed? Hmm.
lurking today
The news from Adafruit in New York. Broadcast July 22, 2020
We broadcast the weekly ASK an ENGINEER video show and this is the segment on items or concept products that may/might/could be introduced into the Adafruit store in the future (or not)! It's not out yet, so please d...
(javascript is #1, tho)
This is too cute not to share again, re: circuitpython day -- https://cdn.discordapp.com/attachments/327298996332658690/738609940498743336/quetzalblinka.png "I present to you, Quetzalblinka, the mascot for CircuitPython Day Centralamerica."
👋🏻
...what's sleep? 💤
[my typos fix themselves in realtime awesome]
I am afraid @slender iron falled for the "analogue pocket"... (pure guess from fpga + GameBoy + waking up early).
yup, exactly
is lurking
I just looked at the Analogue Pocket -- all sold out. 😕
ya, it went very fast
I am lurking
thanks @inland tusk
⚒️
no anomalies to report
@slender iron glad you finally got a chance to try migen!
Take a hike Scott
🙂
to ble or not to ble? why are you asking me?
https://adafruit-circuit-python.s3.amazonaws.com/index.html?prefix=bin/mpy-cross/ if you want mpy-cross bins for desktop linux, raspbian, windws, or macos catalina
@silver tapir No objections of course! It's simply a matter of doing it properly. 🙂
Technically speaking.
@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
I can get in contact with him and sort out how to move forward.
@rigid birch
thanks.
np
@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.
Yeah, that SD card learn guide I readed and was very interested... @onyx hinge
@thorny jay What lanuage(s) do you speak/write? We're in the process of bringing up a French guide translator.
French.
Kattni's up next
I need to learn KiCad soon because I have a project coming up where I'll need to design a board.
@thorny jay Sure. (in a sec...)
@thorny jay The more help, the better. If after talking to fede2, you decide you're interested, let me know.
And I forgot to hug reports @slender iron for demonstrating modifying a board with KiCad in his stream.
@onyx hinge looks like there's just one more translation error holding up your SDIO PR
@thorny jay I'll have to watch that
@slender iron it's not bad
I don't hear any extra noise
I hear a hmmmmm in the BG (only when @slender iron is on)
some of us just hmmmm all the time
it's a very loud hum
Here's episode 18 of Micro-controllers with kingernorth. This episode I'm taking a close look at very small micro-controllers, namely the Adafruit Trinket M0. This is an upgrade from using an ATTiny 85 which is a micro-controller in an 8 pin DIP chip. The Trinket M0 can be pro...
@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.
@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?
It's the next topic for on the weeds, but yes.
@solar whale assuming it's in the couple dozen - couple hundred megs range I can host it on unpythonic.net
For language selection, please do not use flags. Flags are for country. Country and language do not match in a 1:1 relationship.
@sterile bronze Are you developing your own curriculum for the class or using the metrox guide?
yes I am
I work in a place where we have 24(?) working languages...
It's based on an in class course I've taught before
@thorny jay just sent link
logging off now, so long everybody!
see you @lapis hemlock
@onyx hinge DM your e-mail address and I'll give you acces
We will see when a non alpha version will be out.
Today, alpha-x is their only option?
When 6.0.0 comes out I suppose
@prime flower Didn't you write the metrox guide?
Having worked with the unicode support in Circuitpython last week, unicode characters take about 2MB by themselves
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?
I'll write to Electronic Cats for their ESP32-S2 feather, to see if they'd like a cpy version.
So Chinese character support requires a flash chip that's about 2x larger than what appears on most feather boards and other breakouts
you cut out for just a second but mostly good
@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?
If anyone wants the gcc10 that jerry made https://media.unpythonic.net/gcc-arm-none-eabi-10-2020-q3-update-armv7l-linux.tar.bz2
@ionic elk +1
A hardware chat might be interesting
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
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.
They did a couple.
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.
Thanks Scott!
Meeting calendar: https://open-web-calendar.herokuapp.com/calendar.html?url=https://raw.githubusercontent.com/adafruit/adafruit-circuitpython-weekly-meeting/master/meeting.ical or add to your calendar app https://raw.githubusercontent.com/adafruit/adafruit-circuitpython-weekly-meeting/master/meeting.ical
Next exception to calendar schedule: Week of September 8 for US "Labor Day"
Thanks y'all!
Thanks all
Thanks everybody!
thanks
Alright, I'm heading out. Have a lovely day!
Cheers Kattni!
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.
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.
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.
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.
Yes, same here.
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...
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.
So you targeted the CPX and welcome guide.
Yes graphical interface can be a good start.
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.
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.
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.
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.
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
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...
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
When I try re-running the submodule update command I get an error saying "reference is not a tree"
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
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.
@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'"
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
OK - It's still on Dan H's guide at https://learn.adafruit.com/building-circuitpython/build-circuitpython
still getting the "Unable to checkout error" - used your exact commands
jepler@babs:/tmp/circuitpython$
``` that does not cause me to see the error you are reporting
Hmm. So - are you running on Windows, Mac, or Linux and what version of git?
debian linux with git version 2.20.1
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!!
@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.
I guarantee it is interesting, it show the progress, the problem encountered, and more. 🙂
Memoryio is now functional and I was able to read write to SAMD51 backup RAM. The next step is to figure out how to restrict memory access. My initial idea is and array of memoryio_region_type with start address and length fields for regions that can be written to. The board specific code would then check the set region against the allowed regions to determine if writing is allowed.
@RealAbsurdity Thank you for the issue! It should be fixed in the latest bundle with Bus Device version 5.0.1.
Thanks for taking a look at it! Just to clarify, will Bus Device version 5.0.1 will be in a nightly release of the 6.0 pre-release alpha? Or will I need to update the library i'm using for the Crickit?
Many of these strings are already in the qstr pool. Do you want to switch these to %q (non-standard but useful) and use the qstr instead? That should save storing the pointer and any literal duplication of the string.
@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
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:
- You cannot have a "default" display for a board that has a sharp display in-built because it doesn't work outside the VM.
- Python code is run in-between other code because dis...
@uncut nexus Did you see the git submodule update --init --recursive anywhere but in the decorative screenshot? I removed it a while ago in the shell ocmmands here: https://learn.adafruit.com/building-circuitpython/build-circuitpython#fetch-the-code-to-build-2986719-1
I didn't think anyone was reading the actual screenshot, but I will edit it 🙂
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.
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.
Scitentific Linux 4.7 - A redhat rebuild
Might have something to do with Connie being the lead architect for Scientific Linux for many years 🙂
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.
ok, that's a little better 🙂
still old
i think you should upgrade to 7.6
i used Scientific Linux at work when Fedora was too unstable; that was around 2009
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
i decided i liked .deb over .rpm at some point, after spending too much time chasing down dependencies
but it definitely is STABLE
Yeah, Redhat's big customers don't like rapid changes.
If you are using RedHat , be aware of this https://arstechnica.com/gadgets/2020/07/red-hat-and-centos-systems-arent-booting-due-to-boothole-patches/
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:
- 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...
If you are using RedHat , be aware of this https://arstechnica.com/gadgets/2020/07/red-hat-and-centos-systems-arent-booting-due-to-boothole-patches/
@solar whale i mean, technically they have patched every security hole right? haha
@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?
@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.
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
that is an artifact of how it's commonly done. I'm open to changing the API
the RMT can also do PulseIn?
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
@jerryneedell I have a script in ports/esp32s2/tools/ that will produce a nice backtrace out of that backtrace line. Run the python with the board name as the first param and then copy the backtrace into the prompt. (It runs addr2line and gives you a useful location for the error.)
i think you could expand the API, and throw NotImplementedError on ESP32STM when given a PWMOut.
you mean in ESP32?
ooops, yes
Ok, I'll throw something together and we can hash out details in the PR conversation
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
RMT is for neopixel in general
excellent; i wish we had that periph on the other chips
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
I think that's a good approach. Maybe have it as an "allowlist" so that only the regions in the list can be written.
It was updated 12 hours ago so the latest S3 build should have it.
@jepler @dhalbert Thoughts on how to reduce these build sizes again?
my brain is pretty fried so I think I'll do the gcc10 monotony
bonus that it'll make things smaller
Thanks for doing this! It worked after I enabled pixelbuf. Please also add the neopixel board support for the wroom board too. Thanks!
Please add this below in alphabetical order. That way it'll be easier to find.
Please also turn on CIRCUITPY_PIXELBUF. (It worked for me in my testing.)
@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...
just pushed more to jepler's gcc10 branch
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.
Depending on exactly what the requirements are for the testing mentioned in Adafruit Forums: setting bluetooth channel for CE testing, this might be useful there for channel 37 + 39 advertising only.
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...
I'm so glad our community doesn't allow bug discussions to go like this one .... https://bugzilla.mozilla.org/show_bug.cgi?id=675533 [W: foul language]
RESOLVED (nobody) in Toolkit - Notifications and Alerts. Last updated 2017-02-05.
@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-...
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...
FYI -- with this pr -- I can build the nrf52840 -- feather_bluefruit_sense --- seems to work OK -- at least I get to REPL and CIRCUITPY drive
Still no luck with ATMEL SAMD51
and I can also now build and run the teensy41 with gcc10 using this PR.....
@slender iron couple of ESP32 structural questions for whenever you get online:
- Does ESP32 need
FULL_BUILDturned 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 likeFULL_SIZE_FLASHto prevent confusion. - Should
CIRCUITPY_ULABbe turned on? - TouchIO was turned off, but that just requires Microcontroller, right?
- Random probably shouldn't be turned on until TRNG is implemented, right?
- What does
CIRCUITPY_MODULE ?= nonedo?
@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
@slender iron ok cool. For the record I reworked the build flags earlier this year and we decided that FULL_BUILD should only be for reducing flash sizes. It doesn't pop up automatically on the website yet but I added a lot to the porting guide here: https://circuitpython.readthedocs.io/en/latest/docs/porting.html#porting
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
@jerryneedell @tannewt so if I'm understanding this error correctly, there's an attempt to dereference a null pointer somewhere in the Status LED code? I'm going to dig for it so please correct me if you think I'm wrong.
@hierophect That seems to be what it is suggesting, but why only when I build it? Are you enabling DEBUG when you build?
No, I have no special settings. It's definitely unusual. Do you have a sketch in the filesystem that you can access, or does it never even get that far? Is it possible that it could be something in code.py?
@ionic elk that all sounds good. you clearly know it better than I do 🙂
@ionic elk Doesn't the files system get wiped when the ESP32S2 is flashed at present -- so there is no code.py, correct?
I don't think it does? It keeps my code between loads
OK -- I'll check -- I can only do that if I reload main first -- doing that now
Yeah try loading main and clearing it out
@solar whale I was thinking about that last night, mine gets wiped too.
yup -- no code.py present.
@slender iron I can build/run everything except samD51 with gcc10 ?? nrf52840,teensy41,stm32f405,samd21
Thank you all! Confirmed working with the August 3 release in S3 and the latest August 4 libraries.
@ionic elk built/flashed pr_3232 -- same crash...
welp, I'll keep looking into it
Thanks -- just for fun, can you post a working .bin that I can try?
@solar whale yup I saw. Will try and look today. Gonna tackle some WiFi stuff first
@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.
@jerryneedell What is the top commit in your git log? Maybe you are getting an auto-merge commit that I didn't when I checked out the branch directly.
Maybe code.py is throwing a weird exception? https://github.com/adafruit/circuitpython/blob/main/supervisor/shared/rgb_led_status.c#L389
To reduce power consumption of nRF52840, we can turn off QSPI when USB is not connected and MCU is going to sleep.
nRF52840 will consume less than 10 uA current in sleep mode if all peripherals using high frequency clock (HFCLK) are disabled.
@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...
hmm -- I downloaded the "artifact" build from CI adafruit-circuitpython-grandcentral_m4_express-en_US-20200803-9da03a2.uf2 and it executes normally on my GCM4
I hope I'm not wrong about this deeeee-licious binary size reducing fruit I just picked
@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.)
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...
I've heavily revised this PR and now it contains a couple of substantial size savers.
😅
cool! will give it a whirl... I've broken everything else....
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
all that testing -- just going to find more errors 😉
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...
@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.
before 5 days ago it was 10.1.0-1
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
Doesn't PR 3231 use the 10.1.1 preview?
Has anyone else tried testing a SAMD51 gcc10 build on a Linux box?
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)
that was Ubuntu -- on Pi I see
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
what uses CountIO?
All of a sudden my compiler is complaining about it
Oh, I see, someone added it to FULL_BUILD
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
same here!
I have a wind turbine visible from my window and it's really going
@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 ...
@slender iron can we use GDB on the esp32 yet?
I did manage to connect it on one of my livestreams
didn't really know how to use it though
Maybe I'll work on that a bit this week
would be nice to know
Especially for stuff like this null reference exception
The plan is to recap the computer setup changes and then validate pin selections on the Saola Feather adapter and order v3. Visit the Adafruit shop online - http://www.adafruit.com
LIVE CHAT IS HERE! http://adafru.it/discord
Adafruit...
that's the correct timecode
the tools script has been enough for me when getting a load or store prohibited
?serverinfo
Thanks @slender iron !
@solar whale ah right, if I can give you 1.5kB .. you'll take it
| 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 ... |
Hello. I noticed nvm is listed for Gemma M0 in https://circuitpython.readthedocs.io/en/latest/shared-bindings/support_matrix.html but if I try it then I get ```>>> import nvm
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: no module named 'nvm'
Oh, I've just found it! >>> from microcontroller import nvm
@jerryneedell try giving my latest build a shot. I added protections to remove the idf error messages, and added in an extra include to see if that null reference problem goes away. Tomorrow I may try getting gdb working with the ESP32-S2 since tracking null reference exceptions is kind of a pain without it.
This is fantastic. I always despaired at the size of this, but never looked closely enough.
Yay! Excellent analysis, particularly on the math routines.
This is fantastic. I always despaired at the size of two_over_pi, but never looked closely at this.
Why string here but qstr below?
oversight, will harmonize these to be %q
Nice, another +12 bytes free
[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.
Yeah, I don’t think so
Yay! Excellent analysis, particularly on the math routines.
.. 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...
I made this a separate PR because making a function less accurate is more debatable than everything in the other PR
@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
Thanks for your contribution! The failure in the CI system appears to be unrelated, but I have a few comments and areas you can improve.
This register is in an area that is RESERVED according to nRF52840 Objective Product Specification v0.5, but there is a related declaration in our nrfx/mdk/nrf52840.h. Is there public documentation of this register and its function? Could this be written NRF_QSPI->DEACTIVATE = 1; ?
This register is in an area that is RESERVED according to nRF52840 Objective Product Specification v0.5, and in the latest version of nrfx. Is there public documentation of this register and its function? If not, please add a comment explaining your understanding of this undocumented register.
__OM uint32_t TASKS_DEACTIVATE; /*!< (@ 0x00000010) Deactivate QSPI interface ...
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,...
[I intended to Request Changes with my earlier review, but failed to do so]
By the way I pre-ordered the PCB for this keyboard so I am excited about your work on it! Thanks again.
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...
Thanks. I will make a change based on your suggestions.
It is a feature for nRF52840. I'm not sure if we put a macro CIRCUITPY_QSPI_OFF_WHEN_SLEEP in py/circpy_mpconfig.mk
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...
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,...
@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.
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

and eventually the screen becomes two white bars
:
pass
x = c()
x.extra_method = f # << ?
hmm mp_obj_instance_store_attr looks promising
Didn't add MICROPY_QSPI_OFF_WHEN_SLEEP or CIRCPY_QSPI_OFF_WHEN_SLEEP to py/circuitpy_mpconfig.mk yet, as it is not a module and is only for nrf port. Maybe add it to somewhere else.
@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 ...
Gameboy + FPGA + Midi ... This is for @tannew and could be done with his Circuit Python GB card?
https://medium.com/@AdilSoubki/gameboy-synth-module-1e2d0132d86c
@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...
@tannewt can you advise what we should do here?
Thanks! Can you add a reference to the errata next to the code?
One thing that is fine if it's deliberate ..
Seems like result->exception_type must have an inappropriate value, like being a NULL pointer?
@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.
@tulip sleet is it possible to build Circuitpython on 128kb?
@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.
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
@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...
i forgot to turn off math in the comment above, still 163kB. Edited comment to reflect that.
@tulip sleet thanks for checking it out
are there F1 chips that are > 128kB?
Yes, but what I'm finding is that they're basically obsolete in favor of the access line F4s
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
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
@thorny jay they link to my repo 🙂
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 ...
@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.
@onyx hinge @tulip sleet was it really necessary to remove math from the small builds? I think a lot of sensor libraries need it.
@jepler I'm confused, did you remove the #3245 changes from this PR?
@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
🙂 np
@tulip sleet it's neat to know the 163kB minimum number, in any case
I wondered where all that space came from ...
@ionic elk there is some boards listed here: https://stm32-base.org/boards/
The STM32-base project is meant for students and hobbyists. The goal of the STM32-base project is to provide a simple and easy to use base project for working with STM32 microcontrollers.
with the larger stmf103 ics
Hmmm. I don't see purchase links. I'll try amazon for some of these part numbers.
I clicked through and ended at taobao
I see some stuff for Amazon but it wouldn't arrive until October
@slender iron what did you click through on?
the stm32 base sent me to vcc-gnd and then the board name
I can't get any of these links to send me to a purchase page. Are we looking at the same thing?
The STM32-base project is meant for students and hobbyists. The goal of the STM32-base project is to provide a simple and easy to use base project for working with STM32 microcontrollers.
欢迎前来淘宝网实力旺铺,选购STM32F103VET6 Mini版 核心板 最小系统版 STM32,想了解更多STM32F103VET6 Mini版 核心板 最小系统版 STM32,请进入q1q2q3w1w2w31的源地工作室 VCC GND studio实力旺铺,更多商品任你选购
I haven't bought stuff off taobao in a while. I need to make an account?
I have no idea
Here is what I have now:
arm-none-eabi-gcc --version
arm-none-eabi-gcc (Arch Repository) 10.1.0
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.
I wouldn't do a macro. Just always do it because it's an improvement for all boards.
This looks like an awesome improvement! Thank you! Just a couple comments.
Please make this qspi_disable to match qspi_enable in qspi_flash.c.
@jepler what was your one thing? I don't need to review.
I've got a fix for the LEDC spew in my working code. It's resetting everything even it's not in use.
@tannewt Yeah I've also fixed that edge case, I'm working on tracking down the null reference now
@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 .
I found the error. At this line in main.c, result.exception_type is still at its default value of NULL, and thus causes an exception later in the call stack. One way to resolve it is to only set the exception color in rgb_led_stats if result->exception_type is not null.
But what I don't understand is why this does not occur for every other board? I don't see how this is in any way sp...
Another, very common, example is the log messages of function fitting, and the like.
Also, why do we lock the serial_write_compressed(translate("\nCode done running. Waiting for reload.\n")); message behind the user not having a serial connection? I don't see the purpose in not displaying that message, it's informative.
Yay!! Works for me! Thank you @hierophect!
I think this was actually an error on every board, but most of them don't throw errors for dereferencing null pointers.
@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
that usually causes a hard fault that leads to safe mode
it should be fixed so it doesn't happen
I'm super confused then, because it definitely wasn't causing a hard fault
I am so relieved that this turned out to be a real issue. The toolchains can be such "black boxes" and I was really worried that something was wrong in my configuration but it was baffling as to where it might have been.
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...
I don't have enough context to give you a pointer
@jerryneedell Yeah for sure, it's always stressful when you're worrying about whether your meta-level setup is correct. Thanks to @fede2cr for figuring out it only occurred when code.py is empty!
@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
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
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?
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
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
@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
If you meant that "Code done running" should show up the second time there is a soft-reboot, I haven't seen that happen.
I shows up on the PyPortal display
@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?
So, this last example should be universally applicable, right?
OK, I will look into that.
seems like MP_PYTHON_PRINTER must work in circuitpython
this is in header mpprint.h as you may have already discovered
This should be OK: https://github.com/micropython/micropython/blob/f6375ac3ebac28656a0a757952d32c265b1ba7aa/py/mpprint.h#L42
# 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
If you say it is safe in circuitpython, then I think we are done. Thanks again!
@ionic elk what do you use to connect to the serial output?
?serverinfo
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.....
Translations update from Weblate for CircuitPython/main.
Looks like this is being caused by the optimization improvement in PR #3190. I will open a PR to revert that for the Clue.
@solar whale @crimson ferry I'm going to take out an issue on our fork, this seems like it may fix some issues where we fail out on large files https://github.com/arduino/nina-fw/pull/50/commits/73375c37fcd33f254334eaaf31c3bea4182ebefd
Testing the demo spirit level script for the Clue showed that with the -O2 optimization from PR #3190 the display was not stable. This PR reverts the optimization back to -Os.
Testing the demo spirit level script for the Clue showed that with the -O2 optimization from PR #3190 the display was not stable. This PR reverts the optimization back to -Os.
In the past this kind of behavior (usually -Og vs -Os) has typically meant that something that should be volatile is not, or that there's some uninitialized.
@dhalbert Are there any tools to help track that sort of thing down? I think safest for now is to take the relatively small performance hit and revert the optimization.
@ionic elk try screen if you haven't. it may be that your terminal emulator doesn't send the connect signal
We have no such tools now. Could you file a bug re displayio and optimization level? Thanks! I think we should assume this is a bug, not a compiler problem?
woah - this might overtake the v3 poster for my favorite
See issue #3247. The problem was reported on a Clue running the demo spirit level script. According to @dhalbert this kind of behavior has typically meant that something that should be volatile is not, or that there's some uninitialized variable.
that is some very sweet posterage!
Before enabling it for all nrf52840 boards, I think we should leave some time to test and make sure it doesn't cause any problem.
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?
@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
I wonder if you could run valgrind on the unix build?
@slender iron Thanks Scott. I'll go poking around in there and see what I can find!
The largest display is 400x240 @ 1bpp. With some extra bookkeeping info to make updating fast, it's 12721 bytes. Limor recommended keeping the whole framebuffer in RAM.
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...
@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?) 🙂
@forest laurel yup, I think that's the right track
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?
¯_(ツ)_/¯
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
- Add a Sphinx transform to convert the first paragraphs into the module titles.
- It also removes
refspecific=Truefrom xref nodes so that Sphinx can resolve references to data attributes (e.g._typing.ReadableBuffer). - Make
shared-bindings/_typing/__init__.pyifor the types related to the C-level protocols. We shouldn't use_typeshedas it is typeshed's internal utility. - Add
make check-stubscommand to validate stubs with mypy. - Fix some type hints.
@forest laurel nice!
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
@forest laurel making it configurable would be amazing!
@prime flower this look familiar to you? https://forums.adafruit.com/viewtopic.php?f=60&t=168083
@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
that'd be awesome. thanks!
Posted up.
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?
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.
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.
We are going to:
- keep this as a framebuffer display
- but move it in to the core (module name: sharpdisplay)
- transmitting only dirty rows is a "would be nice to have"
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?
Or if there are already other bitmap manipulation functions that I am unaware of, I’ll gladly use them.
It's fine to test on everything. That way it'll be tested more. The releases we make will be marked unstable so it's ok if it doesn't fully work.
How about making the first case the inverse of this and set the exception color to other in that case? Then you get an exception color and no if nesting.
Thanks for hunting down the code.py issue.
Was this meant to be alphabetical?
Was found_main true in this case? With code.py it should be false and we can just skip all of the exception flashing.
The feature is enabled by default now. To test it, we can turn off other peripherals(USB, PWM and etc) using high frequency clock (HFCLK), and then go to sleep. The current will decrease sharply.
Tested the feature on a nrf52840 m2 devkit, here is a current graph

The code is:
import time
@micropython.asm_thumb
def mem(r0):
ldr(r0, [r0, 0])
@micropython.asm_thumb
def mem_write(r0, r1):
str(r1, [r0, 0])
peripherals = {
'RADIO': 0x40001000,
'UART0': 0x40002000,
'UARTE0': 0x40002000,
'SPI0': 0x40003000,
'SPIM0': 0x40003000,
'SPIS0': 0x...
Hi,
I'm currently working on a series of SAMD21 boards that have procedurally generated decorations and capacitive touch buttons:
https://twitter.com/Bleeptrack/status/1291013322062659586
I'd like to compile my own version of the adafruit trinket bootloader to give CPY support to my boards. Would it be possible to receive a VID/PID for this purpose? This would be amazing.
Thank you very much!
I put in https://github.com/micropython/micropython/issues/6320 for the bytes() issue.
OK that's a super cool idea bleeptrack. Thinking about what modern PCB manufacturing makes "feasible".
those PCBs are so cute!!!!
BleepTrack PicoPlanet VID 0x239A PID 0x00C1 # bootloader
PID 0x80C1 # arduino
PID 0x80C2 # circuitpython
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.
I’m following this PR as an example, but don’t understand what is going on in shared-bindings/displayio/Bitmap.c https://github.com/adafruit/circuitpython/pull/2756/files
Ok found this. Will review and then post if it’s still unclear:
https://learn.adafruit.com/extending-circuitpython/inside-the-virtual-machine
@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
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?
You mean you want a method on an object? Is the object created in C code or in Python?
displayio has many examples of objects with methods on them: https://github.com/adafruit/circuitpython/blob/main/shared-bindings/displayio/Display.c
here is a simple method that takes one argument: https://github.com/adafruit/circuitpython/blob/main/shared-bindings/displayio/Display.c#L262-L269
and then it's added to the type's locals dict here: https://github.com/adafruit/circuitpython/blob/main/shared-bindings/displayio/Display.c#L480-L494
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.
that's argument parsing
for functions that take keyword argument or variable number of arguments
@tannewt It's actually not supposed to need to be there at all - CIRCUITPY_NEOPIXEL_WRITE is supposed to be on by default but it'd bug out if I didn't put it here. You've reminded me I need to look into why that's happening.
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 ...
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!
Translations update from Weblate for CircuitPython/main.
I did not review all the docstring changes
Should we add "make check-stubs' to our CI workflow?
@dhalbert #3245 is an additional size savings, but at the expense of mathematical correctness. I split it out so it could be considered separately.
Rebased and force-pushed because this was still showing commits from 3236 even though that PR was merged.
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
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?
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
so in this case the 1 is the minimum number of arguments that is required, I guess?
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.
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.
How about the MP_QSTR_target_frames_per_second can that be any name or does that reference somewhere else?
This PR will fix the following errors:
-
https://readthedocs.org/projects/circuitpython/builds/11605442/
File "tools/extract_pyi.py", line 91, in convert_folder filenames = sorted(os.listdir(top_level)) FileNotFoundError: [Errno 2] No such file or directory: 'extmod/ulab/code' -
https://readthedocs.org/projects/circuitpython/builds/11616854/
File "tools/extract_pyi.py", line 48, in find_stub_issues for arg_node in (node.args + node.posonly...
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.
procedurally generated decorations
:astonished: :thumbsup: neat!
Is the change to the ulab submodule itself intended? Are these changes merged into ulab?
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!
@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.
that would be neat
@jepler
Not intended, but it is the HEAD of ulab's origin/master that has the latest stubs. So it should be ok.
@tannewt pidcodes seems very slow to act, no github activity since April. I had suggested waiting for them to act, but should we just merge this anyway?
I'm going to close this up and leave this branch, because not much of it is applicable to the new direction for the memory displays. If we do decide someday to enable non-core displayio displays, we might want to revive this.
weird -- github just told me I could not comment "at this time" then on retry accepted the comment...
CI failed with the latest ulab. It seems we have to wait for autoapi supporting the @overload decorator. (https://github.com/readthedocs/sphinx-autoapi/pull/239).
I reverted the changes to the ulab submodule.
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()
[]
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...
@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.
Cool, I'm glad my little hints were worth something to you!
@kmatch98 shouldn't that be called "blit"?
Never heard that until just now but after reading what it means it seems appropriate.
Is blit only for when background isn’t copied? Or is that generic enough term if the whole bitmap is copied over?
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
It's a general term for transferring a block of pixels, with optional mask or other logic operations.
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!
Address automated security vulnerability notice.
Images automagically compressed by Calibre's image-actions ✨
Compression reduced images by 1.2%, saving 482 bytes
| Filename | Before | After | Improvement |
|---|---|---|---|
assets/images/boards/large/unexpectedmaker_feathers2.jpg |
40.83 KB | 40.36 KB | -1.2% |
<details>
<summary>Some images were already optimised</summary>
assets/images/blinka-computer.png- `assets/images/blinka-comput...
@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...
<@&327289013561982976>
thanks @ornate breach
🙏
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...
Added TinkeringTech's ScoutMakes Azul board information (images and .md) to circuitpython.org
Thanks for adding this. We already have a placeholder file at https://github.com/adafruit/circuitpython-org/blob/master/_board/tinkeringtech_scoutmakes_azul.md. Could you modify that instead of creating an additional file so this doesn't appear twice?
Otherwise this looks good.
I forgot to mention, the filename is very specific because it is decided by the script that generates the board information and is determined on how it was added to CircuitPython.
I forgot to mention, the filename is very specific because it is decided by the script that generates the board information and is determined on how it was added to CircuitPython.
Thanks for taking a look. I proposed modifications to the existing file. Do I resubmit the pull request minus the .md file i.e just the images?
You can just update the existing file, remove the new one and push the changes in this PR. The items that you'll want to leave the same in the original file are: layout, board_id, and date_added. You can update whatever else.
@makermelissa I removed the .md file from my original PR. Submitted a change request to modify the existing page https://github.com/adafruit/circuitpython-org/blob/master/_board/tinkeringtech_scoutmakes_azul.md
Hope this makes sense. Thanks for your help.
I don't see the change request for the original file. Could you point me to it? Thanks
This was merged, so closing.
Sorry I have been out of touch, lost power in the storm Tuesday, still out.
@fringe trench Sorry to hear that. I hope you're staying safe.
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.
@fringe trench No worries. The important thing is that you're ok. We'll be here when you return.
Modified tinkeringtech_scoutmakes_azul.md with updated details.
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.
@tidal kiln Should we wait for additional review/comment or would you leke me to merge/release the rfm9x change today.
meh, i'd say go ahead and merge/release. you tested 3 cases, i tested 1, seems adequate.
oof, anyone ever bricked a SAMD21 board? I can't connect to it with openocd anymore.
I hope not
yeah I guess I did. 😦
It would definitely be helpful if you created it. Thanks.
Found a problem with computing the line length, that is fixed with the latest commit. I also rebased this to main and it appears to be fitting on all boards now after the changes @jepler made to make builds smaller.
@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
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.
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
It seems there may be an issue with the system that aggregates the links for https://circuitpython.org/contributing
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. 🤷
@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?
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...
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
Anecdata's traceback:
code.py output:
/1023.txt 1023 1023
/sd/1023.txt 1023 1023
/1024.txt 1024 1024
/sd/1024.txt 1024 Traceback (most recent call last):
File "code.py", line 33, in <module>
OSError: [Errno 5] Input/output error
👀
@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.
Aren't fonts ostensibly not-copyrightable? Though putting that to the test would be... fun
Ok, thanks kattni. We’ll include some fonts in a PR and see how the review proceeds.
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
@hybrid scarab In theory, yes, but licensing isn't necessarily copyrighting.
True!
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.
Not sure if it helps or is relevant but I've collated these mostly under OFL - https://github.com/pimoroni/fonts-python
No complaints... yet
Ooh that is good to know. Thank you 😄
There are a few here: https://www.theleagueofmoveabletype.com/ that are all open sourced.
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
Doesn't address the permissions issue, but perhaps useful to know that there are a bunch of monospace fonts included (linked) within the circuitpython repo https://github.com/adafruit/circuitpython/tree/main/tools
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
whoa
are all of those usable within the system somehow? or you'd need to make a new build to utilize them?
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.
That Tecate/bitmap-fonts repo is a treasure-trove
I tend to use terminus-font-4.39 bc it has a good range of sizes from 12-32 pt
Fix contributing page loading json from s3.
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.
Sometimes I'll even automatically switch to a smaller font if some dynamic text is bigger than my Label 😉
e-Ink being the exception
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.
Wait, is it @hybrid scarab on Adafruit Discord server? Are you going to join for the meeting? I need to update my Hug Report...
Ahaha! Hello there @thorny jay
I've been lurking here for a long time, but it's an intimidating server 😆
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.
Still not something I'd want to test in court against any significant font publisher though- they seem to enforce their own interpretation
What exactly is found_main supposed to do? I'm very confused by this whole section. Circuitpython runs with start_mp, then it tries to find the file afterwards? And you say that it should be false for code.py, but code.py is in the list of filenames it matches?
There are enough copyright free font that are meaningfull for Circuit Python typical screen resolution.
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
If you search for font to use in CircuitPython... there are a lot in various learn guide (go for PyPortal guide) in here: https://github.com/adafruit/Adafruit_Learning_System_Guides
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.
@hybrid scarab definitely intimidating if you don't mute a ton of the channels
I am pretty sure those bitmap font are generated from a vectorial source and made to the size required.
@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?
I'm in a separate meeting atm
ok, I'll ping you after the main meeting is over
Oh boy converting physical_feather_pins into a CookieCutter-based library has been... oof
So you plan to keep using "physical_feather_pins"?
Do you have other library relying on that?
At least until something mirroring its functionality is merged upstream- although tbf I don't know how much relies on it
I believe it is only the Enviro+ library.
Now that lrt559 is solved, I think all the other you use the adafruit supported library...
You might be right 😬
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
Is this a secret project: https://twitter.com/DavidGlaude/status/1291839360887853057
Spotted in the wild: a @adafruit StemmaQT to @pimoroni Breakout Garden.
Let you connect I2C breakout: https://t.co/d7iI4ID2C7
The reverse adaptor should exist, to plug Adafruit breakout on a Pi. You could use Blinka and CircuitPython driver!
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!
How many Breakout Garden do you fit on a FeatherWing ?
Wondering where the "reverse insertion" protection take place... is it on each breakout?
Yes, the breakouts are protected themselves
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.
Interesting. I hadn't seen these Breakout Garden devices before.
That's because they're so awesome their majesty has blinded you 😆
This is a pre-Stemma solution to make sensor that are modular but can also be used as breakout board and soldered.
Those encoders and pots have a Nuvoton 8051 1T driving them, for fun
I believe the Rotary POT is not an announced product yet...
Oh wow. I'm definitely going to have to get an order in. 😻 @ the RGBW Trackball breakout.
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
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?
is the esp32-s2 feather already available to buy? can’t find anything
if not, what are the alternatives?
I don't think there is an esp32-s2 feather yet.
RF/IF and RFID – RF Evaluation and Development Kits, Boards are in stock at DigiKey. Order Now! RF/IF and RFID ship same day
@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.
Those are he ones currently available that I am aware of. There may be others that I don't know about though.
Here is a comparaison of both... https://pdfs.semanticscholar.org/41af/aea923aafb3d37bfeabb318dd3ace870d36c.pdf
we are using the Saola WROOM and WROVER boards. Get the one with PSRAM (WROVER, I think).
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.
okay, thanks guys - wifi already working?
@slender iron is working on it... you should watch his video, or follow the meeting in 24 minute for the lattest news.
24 minute?
it is soon
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.
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...
that’s a youtube live broadcast in 22 minutes?
it's in the voice channel here in Discord
ah okay
@slender iron are you going to implement esp-now as well?
sure focus to get the main things working first 🙂
but if there is time later on ... 😛
my goal is to get more folks working on the port than me
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
is there an off topic or general chat here?
@vivid temple I'm happy to help you get it into circuitpython
@lean marsh #general-chat or #general-tech
<@&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#
@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?
It's on my TODO list- right now I'm calling it a day, not been the picture of health lately
Remember when we found huge amount of spare storage for M0s? Looks like the ja translation takes that all back and more.
@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.
I don't know for UK... but it is hot in Europe, at least where I am.
Thanks @idle owl
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!
Lurking - noted in doc
Lurking as well
.. grabbing the list of lurkers ..
Good afternoon all you wonderful folks -- happily lurking, as noted in the doc 
Lurking today - if you have newsletter content, ping me or Tweet to @anne_engineer
Since my microphone works... maybe not lurking after all.
Lurking today, thanks!
@thorny jay yeah super hot, had highs above 35 for the last few days!
@thorny jay mute for now though?
It feels like a short meeting notes doc but .. it's still 14 pages 😅
I don't care if it's 35C° in the day... but it should go below 20°C during the night.
Right!
@lone axle I can grab links today unless you want the honors again
@bleak tiger if you want to speak in the meeting we'll need to add you to the circuitpythonistas role
That will be hard...
Cool, nothing to add today but I'd like to be added for future meetings?
lurking
@bleak tiger OK, let us know -- we can also add you if you want to get Discord reminders for the meetings.
Oh that'd be useful, please add me
@bleak tiger done! and welcome!
lurking
@onyx hinge I can get them 😄
Yup hope you like it
Cheers
Purple
lurking
@lone axle it's your new semiofficial role then
lurking
[I'm just going to assume that illegible user name is lurking, let us know if you're a legitimate person]
🙄
An @adafruit CLUE is controlling the Rainbow HAT from @pimoroni using the Bit:2:Pi from @4tronics to provide connectivity.
Simultaneous LED animation on the 7 DotStar and fading the brightness of the four 14 segments display.
Code using @CircuitPython :
https://t.co/eBwvNlEl...
If you have newsletter content, ping me or Tweet to @anne_engineer
(we have merged 39 pull requests and a total of 178 commits since circuitpython alpha 2)
@gilded cradle that's cool!
Thanks
What kind of dev boards do they have for the MP?
I have the STM32MP157C-DK2 which has a display and it's running Linux.
Late and just listening today.
@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.
I'm lurking and just listening
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.
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?
MP1 is a cortex-a core iirc
