#circuitpython-dev
1 messages ยท Page 267 of 1
Who needs math? It's a waste of flash.
@swift arrow @ivory yew welcome to the
ista's!
@meager fog it shouldn't... that's weird.
Whoops, looks like I didn't have master merged at the time of the original build I gave you
(had an old master version for the branch)
Try the new CI autobuild
It passed this time
@meager fog
oki!
Hi yall, when plugging a circuitpython board to my pc via USB, the contents of the drive are the contents of the on board flash chip?
Cool, thanks @idle owl, it will help me in a project I have in mind, last question, is the flash memory formatted by the mcu so I can access it from my pc or the mcu does some kind of translation of the data format ?
If this is off-topic I can keep asking on the proper channel you tell me
This is entirely on-topic! You're in the right place.
It's formatted to be accessible by your PC, there isn't a translation happening. It's FAT, FAT12 I believe specifically.
There are others who would be able to explain it better than I can, but that's the general answer to your question.
Thanks for the reply @idle owl, I think I can jump on the code and try to understand how does it works
@granite crow Excellent! Feel free to post any questions you have along the way!
@theacodes Not if you couldn't repro. Will close it.
Ah, why not check kw_args for NULL then? memcpy should handle the n_kw = 0 ok.
@slender iron finally managed to build CP under catalina -- it took some patience....first had to install brew (it was not on this system) and for that, I had to go into bash shell for the install script to work. Getting the symlinks for gettext also took some extra effort due to a permissions issue. ONce I had that everything installed OK -- when I tried to build, MacOS objected to executing every parot of arm-none-eabi.... since it was not from an approved developer. I had to cancel the build -- go into security settings and allow the program, then restart the build and "open" the program. This had to be done for several of the steps in the build, but only once. I have successfully built pyportal and CPX, CPB and feather_nrf52840_express. -- just finished build of all BSPs for "en_US"
@meager fog let me know if you get a chance to run those library tests on the latest build, I want to make sure I've wrapped that up
I'm sorry I didn't get a chance to respond to this before the bug was closed, but has anyone tried reproducing the problem on any of the embedded ports?
(As I understand it, the CircuitPython distributions ship the Unix and Windows ports "as-is," for compatibility with the last MicroPython release that was picked up. If this is an issue only in the embedded ports then it definitely won't be reproducible in the Unix or Windows ports.)
The original write-up was reproduced on the 'atmel-s...
@idle owl I created the pull request for the MCP9600 CircuitPython driver and Travis is happy. I will do more testing when the MCP9600 is in stock.
Yay! Just verified that the ft232h and "blinka" work with MacOS Catalina!
I'll try it out on a CPX later tonight and report back.
On Thu, Oct 10, 2019 at 8:08 AM ddiminnie notifications@github.com wrote:
I'm sorry I didn't get a chance to respond to this before the bug was
closed, but has anyone tried reproducing the problem on any of the embedded
ports?(As I understand it, the CircuitPython distributions ship the Unix and
Windows ports "as-is," for compatibility with the last MicroPython release
that was picked up. If this is an issue only in th...
Just a procedural question.. Once a PR for CP libs has been accepted and merged.. Does that mean it should show up in the next release of the libs?
yes - but only once a release is done on the repo
as long as the build date is > merge date?
hmm guess I need to learn what a release is on a repo
nope. it's a manual step. it can only be done by repo owners.
in short, not something you would need to worry about
definitely worth being aware of if you want other people to be able to use the code you contributed.
You can always file a bug asking for the repo maintainers to make a new release.
yep. or can also respond in the PR thread or something like that.
sometimes there are reasons to hold off on a release, but it shouldn't be a huge amount of time, so if you see that happening, can bring it up somewhere/how
ah so that lib has a release of 19 hours ago.. so on the circuitpython.org website under libs.. It should be in there as long as that date is later than the release on the lib that @tidal kiln referenced
there is a set of tools that are run nightly that check for new releases and update the bundle
And we have checks to tell us when a lib has changes and needs to be released, and a list is generated daily.
So any bundle that is created tomorrow or later will have it
We're a little behind at the moment I think. I did a massive sweep about a week and a half ago.
Yes.
cool, not a complaint in any way.. just figuring out the process
That's what it seemed like. ๐ No worries
The more involved you get, the more you'll want to know and understand. We're happy to answer and explain everything you want to know.
I really like how our libs have an example directory.. VERY helpful for people new to the libs or CP.
@swift arrow wanna close this?
https://github.com/adafruit/Adafruit_CircuitPython_FancyLED/issues/11
That was the intention. And the base example is typically included in the docs, so there's a visual on what things do.
@trim elm Ok. Feel free to take a look at working up a simpletest example for the GFX library. Consider PRing early in the process while it's still a WIP so we can provide feedback as you work on it. You can always PR a WIP for feedback purposes, we don't mind a ton of commits on a PR.
Ok. That's what I'll do. I'm getting the pyportal to see about writing a simpletest for the ili9341 on that. I think it would make more sense to have a few simpletests, one for each of the major screens that still use gfx
@trim elm The other option is to have commented out init lines for each display and use the same code in one file.
Depends on whether they use the same code really.
If there are some that do, consider doing that.
Yeah. That sounds like a better option assuming the code isn't too different screen to screen
0d96f19 mp_binary_get_int: avoid undefined behavior - jepler
46b6870 gc_alloc: Remove redundant 'collected' assignment - jepler
85f0048 mp_bytecode_print_str: avoid undefined behavior - jepler
8fbe19b mp_obj_instance_make_new: avoid undefined behavior - jepler
cd0ed65 mp_obj_instance_make_new: clearer way to avoid ... - jepler
@swift arrow if the PR is still open you can just push a new commit and it will be include in it.
@solar whale are you talking about the one we were discussing
Fix for Issue #24 #26 ?
Ya, turning it off when both are deinit would be nice but not critical.
static state like this is totally fine since it's contained to this file. You'll find similar in the atmel-samd port for timer tracking (pwm).
Overall, looks really good. A couple replies but ok to merge as is too.
@swift arrow yes, and just a general comment that you can add changes easily to an open PR.
would you like it resubmitted with the pass made into a continue? but the rest left as is
That was my suggestion -- as long as it still works ๐ but that was just my suggestion not a request.
๐
it's interesting.. when I get my phone to actually connect using the bluefruit app.. I can not get that example to crash.. I did get John's Solderless Tie example from the blog to crash.. and fixed it by using the try around the packet getting. His example is basically the ble_color_picker with some extras in there..
the code seems sensitive to more commands coming in with the code making it too busy to get back and grab the next pack soon enough
I'll give it a try --- take few minutes to find it...
I put a PR against John's code and he added the try.. so you will need to pull it out to get the failure
but he noted that he also saw the failure
do you have a link handy ?
sure, one sec
naturally a simple tweak to use the CPX neopixels and not external ones
heheh SORRY!!!
Of course you delete the evidence ๐
too bad I didn;t have a hot mic.. you would have heard a cool "eeeeeeeekkkkkkk"
Anyway, I feel like Limor had them communicating 70ft apart at some point, so it's possible that the signal strength indicator in the app has a larger range than whatever the CPB has, but it's still fine.
I was trying to figure out if maybe I had a bad phone or damaged CPXBFLE
@swift arrow OK -- have it running without the try -- how do you make it crash?
also -- I see 1-2 bars about a foot away
go thru different animations really fast.. pretend you are really angry at it and want it to crash..
I used the arrow keys to slow it way down.. then changed the animation style.. then more arrow keys.. more number keys..
yup killed it
then it froze..
I was able to control-C then reboot
we need a crash or freeze emoji
@solar whale , right that was my experience.. so when I saw @idle owl's issue with the ble example.. I figured I could kill two birds with one stone so to speak with the try fix.
I have it running a string of 30 neopixels via a "gizmo"
but excellent questions around should we silent error, or print "Hey we got a bad checksum" kind of thing..
also should the library catch the error.. so the user never has to worry about such things?
lol.. I found myself with more questions after than I did before ๐
That's usually the way it goes! In the example, I think errors should be reported. It can be dangerous to hide too much in the library.
So use the try but add a message saying it got an error?
and leave the lib the way it is
or are you saying let it error out?
I think the library is OK -- the example can do the try/except and handle it.
again -- just my opinion, I am by no means a python expert.
That is my preference as well. If people are like me they go to the examples and use that as a starting point for projects. I like the idea of them seeing how it should/could be done to catch it and move on.
I am a total Python newbie.. so I like hearing all opinions
and if a lib fix is eventually implemented, no harm done...
@solar whale yup, I got it going yesterday by jumping through the security and open hoops
it was painful, but done!
and..... more hoops ๐
so far no deal-breakers with Catalina
@solar whale I guess the question now is what errors to catch.. and what message to print
I tried mu and it works -- as did Arduino...
@slender iron So you took the big stick approach? Or you actually managed to get it working properly?
@swift arrow have you seen more than ValueError?
@idle owl I figured out how to add security exceptions for each binary
I myself have only seen the valueerror with a bad checksum
Fair enough.
no reason to add more -- unless they become a problem. better to see the errors!
@idle owl saw a "OSError: Failed to read CCCD value, err 0x3002".. but maybe we should leave that alone.. and just go after the bad packet for now
that could be something more serious
Like I said, Dan wanted to fix it properly.
maybe I will open my own issue for the bad packet.. and my simple fix PR to fix it. Keep Kattni's separate.
I do want to add better errors for BLEIO
will likely wait until after I land my current changes though
another good reason to handle it in the example -- the libraries are going through a lot of development and it is great to flag this kind of issue in an example. Perhaps it will go away wiht future library updates. It really depends how often the issue occurs. the "bad checksum" is pretty easy to trigger. Not sure about the OSError.
@solar whale The question on my mind is it's easy to trigger.. but not easy to trigger in the example I opened a Issue against.
in John's code it is easy to trigger.. and John's code is a modified ble_color_picker .. so in a way it makes sense to fix it.. but in another.. sigh..
I think it only happens because it can not pull in packets as fast as they are issued from the phone app when you add complicated animations.. in the example I can not trigger the error because it can process them faster than I can issue them from the phone
but that's just my opinion
The issue is real as your example shows - your PR can be seen as a "workaround" not a fix. Perhaps the issue should remain until it is fixed in the lib or deemed liveable,
perhaps the way to look at this is.. the fix hurts nothing.. and is instructional in it's use
that was fun to play with -- I have to go offline for awhile. Thanks!
thanks for talking me thru this
These are the ones that didn't make it in with the PR due to reliance on stub presence. I'll re-add with the template-port if we decide to swing back to that.
I'll add it as an issue and handle during cleanup.
At the moment, DAC only disables when reset. It should also turn itself off when both channels are turned off individually, which will require a minor static object in the module independent of the DAC instances.
I wonder if it'd be better to return None to imply that it's unknown. Some boards could also define it per board.
Is there a wrapper script that you can use which will work across OS? I'm on Mac and needed to change this to get a spk file.
I wasn't able to do this step on Mac. The kernel spun up for a while and then the script produced this error:
> spresense-exported-sdk/sdk/tools/flash.sh -l spresense-exported-sdk/firmware -c /dev/tty.usbmodemE594E79FECF32
Traceback (most recent call last):
File "site-packages/pyserial-2.7-py3.6.egg/serial/serialposix.py", line 468, in read
OSError: [Errno 6] Device not configured
During handling of the above exception, another exception occurred:
Traceback (most recent cal...
Are there pin names for the actual microcontroller instead of the board? The goal for this file is to be board agnostic so that other boards can use it as well. The boards directory is meant to contain board specific names and map them to the MCU names.
tfw you read your own conditional wrong, and place code in the wrong place... ๐คฆ
Pre-PR request for comment. @jwcooper, does this format work for you?
"Adafruit_CircuitPython_Bitmap_Font": [
{
"title": "TTF support (Open 147 days)",
"url": "https://github.com/adafruit/Adafruit_CircuitPython_Bitmap_Font/issues/10",
"labels": [
"None"
]
},
{
"title": "Remove backward-compatible imports when 4.0.0 released (Open 203 days)",
"url": "https://github.com/adafruit/Adafruit_CircuitPython_Bi...
Yes, that looks good to me at first glance!
Would it be possible to name this new format something like libraries.v2.json so that we don't break the site while we transition to the new format?
Would it be possible to name this new format something like libraries.v2.json so that we don't break the site while we transition to the new format?
Definitely. Will make that happen when pulling in the updated adabot submodule.
From CircuitPython 4.0.1 on a Feather M4 Express:
>>> a = 2
>>> b = 'a'
>>> a/b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't convert 'int' object to str implicitly
>>> -b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported type for __neg__: 'str'
>>> a = object()
>>> b = object()
>>> a / b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeErr...
I changed the port name to cxd56 and added Spresense as a board. In the port I use cxd56 pin names, while in board I use Spresense pin names.
I changed Makefile to work across OS. You can try now.
- Have you installed the serial driver?
- Have you connected USB to main board? USB connected to the extension board is not intended for flashing new image.
- Try using /dev/tty.SLAB_USBtoUART as a serial device.
I didn't change it. This function returns a float variable. Do you want me to change the CircuitPython source code to interpret 0.0 here as None?
Some changes. I added Spresense to your tools, but I'm not sure if it's correct. I'm also not sure what to do with Reference Voltage.
@theacodes :
Great!
Thanks for checking.
This is a Request For Comment for a suggested extension to pulseio for doing high precision timing on multiple inputs on the SAM port of circuitpython.
I would like to do time capture on pin inputs so that I can do things like:
- Get the exact time of an event (on one pin), compared to GPS time (referenced to the Pulse Per Second on another pin).
- Get the time between a start pulse and a stop pulse on two different pins
- Get the frequency, duty cycle, etc. of a signal by measurin...
I was looking into this and want to make sure I understand what is needed.
As far as I can tell, the time module only knows about "local time" it has no concept of Time Zone.
However -- when we have an internet connection and us the adafruit_ntp library to set the time, it sets it to GMT.
Do we need to add Time zone awareness and then return localtime or gmtime as requested?
I am thinking that was is now referred to as localtime should really be gmtime and if local time requested, ...
@tulip sleet any idea if scan response events happen right after the corresponding advertisement?
Sounds like an interesting project! I don't know of anything that currently allows for it (though I'm not much of an Arduino user).
I'd suggest adding it as a separate module so that it can be supported separately from PulseIO.
Other than that, let us know if you have CircuitPython questions. Thanks!
I hadn't updated the serial driver and may have been using the wrong serial device. I got it working today though! ๐
Ya, I think changing shared-bindings to interpret 0.0 as None makes sense. That way an exception will be thrown if the user code uses it in any calculations.
Workflow looks good and I successfully got a REPL on my board! This is ready after tweaking the analog reference voltage.
- Get the frequency, duty cycle, etc. of a signal by measuring the times of all the rising edges, falling edges, or both.
frequencyio.FrequencyIn() can get you the frequency. It uses 2+ TCs [reference and source(s)] with 16-bit counters. The capture period can be set in a range between 1ms-500ms. However, it is currently hard-coded to use rising edge. Duty cycle could possibly coerced out ...
I meant to mention that frequencyio is only enabled on SAMD51 based boards. Its too large to include on SAMD21 based boards.
@slender iron the scanner should ask for the scan response quite soon, assuming it's interested in the advertisement
Hey all, my apologies but I forgot this .. I have the m0 adalogger and need a second uart , how do I do this ? My current version of circuit python is 2.x
@tulip sleet I think the Stm32 uart HAL may have actually been written by satan
to torment mortals
๐บ
Considering upgrading from 2.x: there have been many improvements since then, including big speed improvemetns
@tulip sleet thank you kindly for reminding me, I wonder how much of my code will break from the upgrade? Is the upgrade stable ? ๐
@rotund basin Yup, it's stable! Go to 4.1.0. You can always revert, but I think you'll like the improved perfomance and bug fixes. 2.x hasn't been supported since 4.x came out.
Thanks @tulip sleet will do it!!
@tulip sleet ok, will try it. I'm wondering if I should merge the scan response into the original scan entry
Drafting a PR for this despite major issues so it can be reviewed by others.
I'm running into several issues with the STM32 HAL implementation of UART. Broadly, the HAL does not have any buffering capability and generally is not built around the concept of receiving unknown quantities of data. The example code and structure of the HAL expects global, shared handles for every device, you cannot assign your own callbacks, and pre-defined callbacks have no context pointers. In general this m...
@slender iron right now the scanner doesn't do "active" scanning, so it never actually gets scan responses. I'd look maybe at how iOS or Android do scan responses for inspiration
yup, I plumbed it through
my guess is that it's all callback based
if one event is right after the other then the payloads can be merged
I added a filter to the scan so it'd be good if they were merged
Maybe look at the STM32 Arduino core for inspiration? https://github.com/stm32duino/Arduino_Core_STM32/blob/master/cores/arduino/stm32/uart.c et al
Or the MicroPython STM32 port?
@dhalbert I'll see what I can dig out of micropython. It has a very different interface but maybe I can glean their strategy on the interrupts.
@tulip sleet mind if i ask some questions about the nrf port? about turning on some micropython features?
sure
So I'm looking at a project where I want tighter control of the power consumption / hardware. and I prefer I really like the bluetooth abstraction you made. I'm looking to control sleep / not sleep modes, cpu frequency, and the inline assembler. where would i look for some of the config toggles?
All that is not really available from CircuitPython right now. We use SysTick as the fundamental timekeeper, and it requires the CPU to be going all the time (not sleeping). We have ideas about how to rework this, and it's on my list of things to do (there's at least one issue), but is not the absolute next thing to do, though it's not far down the list.
The inline assembler stuff might work, but you're not going to get very far with that in terms of controlling sleep because of the other issues above.
also we'll have to be really careful in the nrf port to use the nRF SoftDevice sleep/low-power API, because the bluetooth code depends on being awake to maintain BLE connections, etc.
Thank you for the prompt and detailed response! i have two more questions: is SysTick use as the timekeeping method (no pun inteneded) in just cirpy or micropy too? and what if it was fine for the entire system to sleep for a some amount of time w/out running python?
MicroPython mostly uses the RTC of whatever chip it's running on. That is what we want to head toward. The RTC peripherals are designed to work at very low power, so that timekeeping proceeds no matter what.
If you are willing to turn off power completely (no BLE state is being maintained), then you could just turn off power to the board and restart, using something like one of these: https://www.adafruit.com/?q=tpl
this stuff really is on our radar, it's just that a lot of other things are too. But having BLE raises the priority, because there are a lot of applications people have in mind that require good power managment (and you are one of those people).
@prime flower @crimson ferry @solar whale just caught up on the chat about all the nina-fw changes... I was one of those 800k+ affected by The Great California Power Shutdown of 2019 ๐ but I'm back now.
I still need to read all the github email I have, but great idea bout doing the binary releases on GitHub....I feel dumb I didn't think of that...oh well.
I'm out this weekend, and no clue what next week will look like at work given the data center issues I had to work on this week due to the power nonsense...so yeah...please don't count on me for a week or so. Hopefully next weekend (Oct 19/20) I can get back to things....sorry I haven't been around more or made more progress!
im having a dumb and cant find it anyplace else, on the metro M4, did you use an external crystal? and if so at what frequency?
thank you @tulip sleet ! this was very helpful and illuminating !
@radiant juniper I don't know off the top of my head, but I bet the answer lies in the schematics: https://learn.adafruit.com/adafruit-metro-m4-express-featuring-atsamd51/downloads
thankyou
you're welcome
huh. The answer is "maybe?" there is a crysal on the schematics, but... Its not connected where I would expect.
@sly falcon I may have a window of time this weekend where I can get immersed. If you're not in the middle of the NINA stuff, would you mind if I took a stab at it, if that window doesn't close? I'm sure I'll need some help on data structures and build. Or if it closes, it will still be there when you are ๐
@crimson ferry heh...nope - I say go for it! From my perspective, you taking a shot and learning something new is worth it. I haven't started coding anything...when I left off, I was getting v3.3 of the IDF setup and doing some rough ideas of what I wanted to do...so yeah...no chance of duplication of work at this point
@radiant juniper it's in PA00 and PA01 which is the normal place iirc?
AFAICT from the datasheet, the external Xtal for XISCO go on PA14 and PA15.
OXOSCO
Page 37 from the SAM D5x/E5x data sheet
It's XOSC32K
'To guarantee the XOSC32K behavior in crystal mode, PC00 must be static.'
now you have got me all confused.
well the good news is that PC00 isn't even on the usual QFP/QFN64 package.
right.
alright, I found my confusion. I missread an arrow on the block diagram. I thaught XOSC32K was fed from OSCCTRL... not the otherway around. PA01 and PA00 are correct for a 32.~~~ mhz crystal. the other pins are what one would use for other crystal frequncies.
My personal use case is a running count of pulses from a source of around 10 MHz, which I can check "from time to time" but maybe as infrequently as once a second. If it can reset to 0 at a specific value (e.g. 600e6 ~1 minute) even better.
Hey @tulip sleet , Iโm getting about a 20 mA draw even while using the radio with the NRF52840. Does that sound right to what you see?
Have seen**
Reproduced on my own CPB. My reproducer script is:
def count():
i = 0
while True:
yield i
i += 1
from audiopwmio import PWMAudioOut as AudioOut
from audiocore import WaveFile
wf = open('cymbaly-1.wav', 'rb')
wave = WaveFile(wf)
import board
for i in count():
print(i)
with AudioOut(board.SPEAKER) as audio:
print(audio)
audio.play(wave)
while audio.playing: pass
print("Finished")
`cymb...
Otherwise, when an AudioPWMOut object was deinitted without being explicitly stop()ped, it would use up a slot in active_audio[]; the 5th iteration would create a non-working audio object which would just buzz instead of playing the right thing.
(In a separate commit, stylistic changes are made to better match the CP coding style)
Closes: #2203
@ladyada that would be great, thanks!
@idle owl for using neopixels on a raspberry pi, the guide explains that you have to install the neopixel library as "sudo" and run code as "sudo" Is it also necessary to have installed "blinka" as sudo as well? I think I ran into issues if I did not but just wanted to check and see if it was necessary. If so, you may want to add a note to the guide. It gets confusing having two installations (user and sudo...)
@idle owl ah -- never-mind -- I just removed my "sudo" installation of blinka but then just installed sudo pip3 install rpi_ws281x adafruit-circuitpython-neopixel and it works just fine -- as in the guide ๐ it automatically installs adafruit-blinka for root as part of this. Still have two installations, but a bit less confusing when you just do what the guide says....
@solar whale I ran into a situation yesterday where I needed to just read the guide... I get it ๐
hopefully soon, i'll be testing Blinka on a RPi running Ubuntu 19.04... assuming it survives my frustration. ๐
@raven canopy Wait, wat?
Back to working on RosiePi. Using Ubuntu Server 19.04 since it comes with the correct version of gcc-arm-none-eabi to build circuitpython. but...now that i got the Ansible playbooks to run correctly, i've discovered that the way i structured everything doesn't work. #status-update ๐คฃ
@raven canopy interesting -- never thought of trying Ubuntu on a pi for that reason ๐ค
they have distro an image for it too...no muss, no fuss.
I was more @.@ about Ubuntu on a Pi in the first place.
its just Debian, really. Like Raspbian.
I suppose so. But I know it better than Raspbian ๐
Though I guess I mostly ssh into my Pis, so who cares?
Sounds attractive if I'm ever using it with the GUI though.
Disco Dingo ๐ Didn't know we'd gotten that far.
well, the GUI is probably better with Raspbian.
Fair enough.
did you use the 64bit (last one) for the Pi3?
yep. ubuntu-19.04-preinstalled-server-arm64+raspi3.img.xz. just did a clean one this morning.
cool! something new to play with!
here's some [very confusing/unorganized] reading material: https://wiki.ubuntu.com/ARM/RaspberryPi
hah!
When you first boot after install - what is the device name? equiv to raspberrypi.local?
ubuntu
the cloud-init system may give you fits. are you ssh'ing in? or direct?
was going to try ssh -- by direct do you mean UART?
direct keyboard/monitor.
oh -- I can do that as well if ssh does not work
yeah, if it stays non-responsive beyond a few minutes, its probably hanging on cloud-init due to connectivity problems. (ran into that with a non-dual-pair ethernet cable)
building your own CI-like service teaches many things. most are painful. ๐คฃ
oh. i misunderstood you. give me an easy command to find what you're looking for. (i go straight IP)
ah -- just need to know its IP address... hooking up monitor/keyboard
Amazing -- it's alive!
and working via ssh -- now that I have its IP address - very cool
there goes the rest of today ...;-)
hehe. sorry. kind of. ๐
not sorry..
My personal use case is a running count of pulses from a source of around 10 MHz, which I can check "from time to time" but maybe as infrequently as once a second. If it can reset to 0 at a specific value (e.g. 600e6 ~1 minute) even better.
10 MHz is a bit too fast for a 'A pulse caused an interrupt: take down all the details then return from interrupt'.
What would work is 'The PulseTime clock is driven from this external pin instead of the CPU clock'. Then you just call `.no...
@raven canopy hope you don't mind a few more questions... where did you get the arm-non-eabi distro from -- I could not install the ppa (no release) -- same issue for the raspi2 ppa -- did you bother to install it and if so, how?
I may try 18.04
verified i am boppin for many loops!
circuitplayground_bluefruit.zip
here's the artifacts if ya dont want to wait for a release!
Hi all, the meeting is at our normal time, 11am Pacific / 2 pm Eastern, on Monday here in our Discord voice chat. All are welcome to attend. Details on the meeting are in the notes doc here: https://docs.google.com/document/d/1LVztWEsQVUZIOpSC36iRl72r09S51LjRymuYSv9TjtQ/edit?usp=sharing Feel free to add your notes in early as well. <@&356864093652516868>
@solar whale its available from the ubuntu disco source: https://packages.ubuntu.com/disco/gcc-arm-none-eabi
no ppa necessary..
so you built from source -- ok
didn't build it. just apt install gcc-arm-none-eabi would be required.
haven't tried. i'm using ethernet. but i will say: netplan is annoying as all get out.
looks like it -- wired for now
ipv6 is largely broken too, for netplan. i've got a disable resource if you need it.
OK -- will ping you if I get that far
@solar whale i loathe plain text passwords, but look at the WIFI examples on netplan: https://netplan.io/examples
thanks!
@raven canopy hmmm -- all installed OK but when IT try to make mpy-crooss I get ```make: Entering directory '/home/ubuntu/circuitpython/mpy-cross'
Use make V=1, make V=2 or set BUILD_VERBOSE similarly in your environment to increase build verbosity.
GEN build/genhdr/moduledefs.h
In file included from ../py/mpstate.h:34,
from ../py/runtime.h:29,
from ../py/gc.c:32:
../py/nlr.h:63: error: "MICROPY_NLR_SETJMP" redefined [-Werror]
#define MICROPY_NLR_SETJMP (1)
../py/nlr.h:39: note: this is the location of the previous definition
#define MICROPY_NLR_SETJMP (0)
had same issue with 18.04 -- did I miss something?
looks like nlr.h is not detecting the achitecture
hmm. might need to work some dpkg magic. i honestly haven't gotten that far yet..
ah -- ok -- no problem -- I'll let you know if I figure it out.
i appreciate it @solar whale!
@solar whale stumbled upon this, but the last comment doesn't really answer definitively. https://github.com/micropython/micropython/issues/4666
ahh. just looked at the log. building unix port.
hmm - could have used a bit more info at the end ...
Add microprocessor.cpu.voltage to measure the regulated voltage supplied to the chip. Monitoring of this value can detect when the regulated voltage is slumping due to a low battery.
This is typically 3.3V. Note that this does not measure the actual on-chip voltage used to urn the CPU, which is often lower due to an on-chip regulator (e.g., 1.2V).
I use the on-chip bandgap reference and compare it with a scaled version of the supplied voltage. The SAMD51 is very touchy about how to us...
I think you've got it. The primary objective is to be able to determine local time accurately based on gmtime when it's available. The nice-to-have would be to calculate gmtime from local time when an actively-updated gmtime isn't available.
Since the flag is available, calculating and including the DST offset would be frosting on the cake.
`>>> time.localtime()
Out[2]: time.struct_time(tm_year=2019, tm_mon=3, tm_mday=18, tm_hour=0, tm_min=3, tm_sec=26, tm_wday=0, tm_yday=77, tm_isdst=1...
@raven canopy hmm -- it appears to only impact mpy-cross --- I was able to build feather_m0_express ```buntu@ubuntu:~/circuitpython/ports/atmel-samd$ make BOARD=feather_m0_express
Use make V=1, make V=2 or set BUILD_VERBOSE similarly in your environment to increase build verbosity.
GEN build-feather_m0_express/genhdr/moduledefs.h
QSTR updated
6812 bytes free in flash out of 253696 bytes ( 247.75 kb ).
24868 bytes free in ram for stack out of 32768 bytes ( 32.0 kb ).
Converting to uf2, output size: 494080, start address: 0x2000
Wrote 494080 bytes to build-feather_m0_express/firmware.uf2.
yeah, i might be able to get away with that for my purpose. i don't currently plan on sending a CPX or the like through a Rosie test.
still should be fixable -- will keep looking
but the allure of reading the contents of things like libc/arch-aarch64/include/machine/setjmp.h is high ๐
the board build set CFLAG -mthumb so I think that keeps it happy
the mpy-cross may need a new config for RPi
yeah. i'm tempted to just plug in an #if defined(__aarch64__) if i can narrow down what the values should be.
sigh -- have to stop playing for now -- will get back to it later this evening or tomorrow. So much fun -- so little time.
right? thanks again for climbing down this hole with me!
my pleasure - thanks for showing me the hole !
@raven canopy got a few more minutes to play -- if it is OK to use MICROPY_NLR_SETJMP instead of something specific to the architecture then this change allows mpy-cross to compile and I am able to build circuitpython_express ```ubuntu@ubuntu:~/circuitpython$ git diff
diff --git a/py/nlr.h b/py/nlr.h
index 802f5f39a..769994eb8 100644
--- a/py/nlr.h
+++ b/py/nlr.h
@@ -36,7 +36,6 @@
// If MICROPY_NLR_SETJMP is not enabled then auto-detect the machine arch
#if !defined(MICROPY_NLR_SETJMP) || !MICROPY_NLR_SETJMP
-#define MICROPY_NLR_SETJMP (0)
// A lot of nlr-related things need different treatment on Windows
#if defined(_WIN32) || defined(CYGWIN)
#define MICROPY_NLR_OS_WINDOWS 1
@@ -64,7 +63,9 @@
//#warning "No native NLR support for this arch, using setjmp implementation"
#endif
#endif
+#if !defined(MICROPY_NLR_SETJMP) || !MICROPY_NLR_SETJMP
+#define MICROPY_NLR_SETJMP (0)
+#endif
#if MICROPY_NLR_SETJMP
#include <setjmp.h>
#endif
ubuntu@ubuntu:~/circuitpython$
i was digging in the same direction. aarch64/arm64 has setjmp, so in theory it should work... should
make: Entering directory '/home/ubuntu/circuitpython/mpy-cross'
Use make V=1, make V=2 or set BUILD_VERBOSE similarly in your environment to increase build verbosity.
text data bss dec hex filename
268038 20144 904 289086 4693e mpy-cross
make: Leaving directory '/home/ubuntu/circuitpython/mpy-cross'
ubuntu@ubuntu:~/circuitpython$ cd ports/atmel-samd/
ubuntu@ubuntu:~/circuitpython/ports/atmel-samd$ make BOARD=circuitplayground_express clean
Use make V=1, make V=2 or set BUILD_VERBOSE similarly in your environment to increase build verbosity.
rm -rf build-circuitplayground_express
ubuntu@ubuntu:~/circuitpython/ports/atmel-samd$ make BOARD=circuitplayground_express
Use make V=1, make V=2 or set BUILD_VERBOSE similarly in your environment to increase build verbosity.
GEN build-circuitplayground_express/genhdr/moduledefs.h
QSTR updated
FREEZE ../../frozen/Adafruit_CircuitPython_BusDevice ../../frozen/Adafruit_CircuitPython_CircuitPlayground ../../frozen/Adafruit_CircuitPython_HID ../../frozen/Adafruit_CircuitPython_LIS3DH ../../frozen/Adafruit_CircuitPython_NeoPixel ../../frozen/Adafruit_CircuitPython_Thermistor
6072 bytes free in flash out of 253440 bytes ( 247.5 kb ).
25748 bytes free in ram for stack out of 32768 bytes ( 32.0 kb ).
Converting to uf2, output size: 495104, start address: 0x2000
Wrote 495104 bytes to build-circuitplayground_express/firmware.uf2.
I'll do some real tests with it later or tomorrow.
wipes sweat from brow
finally back to a workable state, and on the target device to boot.
rosie@ubuntu:~/rosie_pi$ rosiepi metro_m4_express f510fbeb0f197c2568c0ca59ae312f741c1bba71
========================= RosiePi ==========================
Initiating rosiepi...
------------------------------------------------------------
- Date/Time: 12-Oct-2019,22:13:41
- Test commit: f510fbeb0f197c2568c0ca59ae312f741c1bba71
- Test board: metro_m4_express
============================================================
Connecting to: metro_m4_express
------------------------------------------------------------
Failed to connect to: metro_m4_express
Can't find USB device: idVendor=0x239a, idProduct=0x8021
============================================================
Closing RosiePi
rosie@ubuntu:~/rosie_pi$
now to test triggering from the web...
yay! ill check next week i think
@raven canopy @tulip sleet FYI -- I just ran through the Linux install steps in https://learn.adafruit.com/building-circuitpython/introduction on a Raspberry Pi 4 (Buster) with one change. Instead of using the ppa for installing the arm tools I just did sudo apt install gcc-arm-none-eabi which installed the same toolchain we are using gcc version 7.3.1 20180622 (release) [ARM/embedded-7-branch revision 261907] (15:7-2018-q2-6) and it all works very well.
@raven canopy with Ubuntu 19.04 on the RPi - with the one change to py/nlr.h from yesterday, it also builds fine -- I was able to execute a build on the cpx and use some of the frozen modules so mpy-cross is fine. I then tried to install "blinka" on the Ubuntou19.04. system and ran into another issue due to the aarch64 architecture setting -- rpi-ws281 fails to build when installing via pip3. Looking at the code, it is due to the aarch64 architecture setting. Still investigating how to workaround it. Note: I also found that I had to manually mount the CPX (either CPLAYBOOT or CIRCUITPY) not a problem, but took a few mintes to figure out... progress
@raven canopy and wifi is working!! just followed these steps https://raspberrypi.stackexchange.com/questions/98598/how-to-setup-the-raspberry-pi-3-onboard-wifi-for-ubuntu-server-18-04-with-netpla
@solar whale oh yeah; buster came out right after i switched to using disco and i forgot all about it. did the buster version require that change to nlr.h? I am planning on getting a Pi4 at some point; 4GB RAM and faster USB would allow for some things like running a Redis server and booting from a drive...SD cards come with too much risk. ๐
i also imagine raspbian buster is a tad more performant than ubuntu disco.
ahh.
i might have to make that switch then. the only other platforms i can think of that would show up as aarch64/arm64 are maybe things like a Chromebook running Linux, the upcoming Surfaces (i think they switched to ARM), and maybe some CI services. might not be worth it to change micro/circuitpython for that...
opens Ruby docs to work on the webserver; why am i sticking with GitHubs template vs using Flask/Django? ๐
I think the change I made is harmless if it is useful.
i didn't narrow it down to the root, but i think its just a matter of setting -DMICROPY_NLR_SETJMP for mpy-cross, like the unix port does: https://github.com/adafruit/circuitpython/blob/master/ports/unix/Makefile#L245
that way nlr.h doesn't set it to 0
Interesting. Still seems like nlr.h should not set it twice. My change just avoids that.
But it could be handled in the Makefile that way as well
May be simpler
@raven canopy aha! it look like it has been changed upstream on micropython to avoid the issue - the initail setting to 0 is gone. https://github.com/micropython/micropython/blob/master/py/nlr.h#L46
well looky there. i could've swore i peeked at it yesterday. good find @solar whale!
hmm - looking with "blame" the initial set to 0 was added by @tulip sleet last year .... the plot thickens https://github.com/adafruit/circuitpython/blob/master/py/nlr.h#L39
@solar whale that was part of a merge from upstream https://github.com/adafruit/circuitpython/pull/1068
tips hat to @tulip sleet for upstream merges yet again. those must be sooo painful.
@tulip sleet ah -- ok -- I may put in a PR for discussion then, as we found it can lead to errors as written, but I think a simple reordering fixes it.
I can't remember about that at all. I may have put it in to get it to work in some situation. I don't see it upstream.
the problem is it set is there -- but also tries to set to again if the architecture is not found, which is an error
So I think probably I wanted to make sure it was set one way or the other, and thought "arch not found" should maybe indeed cause an error so it could be fixed?
I think this avoids it with no impact ```ubuntu@ubuntu:~/circuitpython$ git diff
diff --git a/py/nlr.h b/py/nlr.h
index 802f5f39a..769994eb8 100644
--- a/py/nlr.h
+++ b/py/nlr.h
@@ -36,7 +36,6 @@
// If MICROPY_NLR_SETJMP is not enabled then auto-detect the machine arch
#if !defined(MICROPY_NLR_SETJMP) || !MICROPY_NLR_SETJMP
-#define MICROPY_NLR_SETJMP (0)
// A lot of nlr-related things need different treatment on Windows
#if defined(_WIN32) || defined(CYGWIN)
#define MICROPY_NLR_OS_WINDOWS 1
@@ -64,7 +63,9 @@
//#warning "No native NLR support for this arch, using setjmp implementation"
#endif
#endif
+#if !defined(MICROPY_NLR_SETJMP) || !MICROPY_NLR_SETJMP
+#define MICROPY_NLR_SETJMP (0)
+#endif
#if MICROPY_NLR_SETJMP
#include <setjmp.h>
#endif
ubuntu@ubuntu:~/circuitpython$ ```
unless you want it to fail
we have stricter warnings, and want #if SOMETHING to throw an error if SOMETHING is not defined.
it still gets defined, just a bit later
so please go ahead and restruture to have it make sense in the "don't know this arch" case
at the time there were probably no unknown architectures
ok -- I'll put a PR in later today. Then we can discuss if it is they way to go.
so it didn't fail
another approach could be to handle aarch64/arm64 so that its known. again, i think this is a small vector. biggest would be if github actions starts running on ARM servers, probably.
I have go -- ๐ถ needs a walk -- back later .... thanks!
Remove non-CircuitPython ports. We discussed this a week or two ago in the weekly CircuitPython meeting, and there was general agreement to remove these for clarity. These ports have not kept up with CircuitPython, except for esp8266, which was dropped. If and when we do a port to one of these platforms, we may choose a different directory name so as not to conflict with the MicroPython port name. (For example, we are using stm32f4 for our port, instead of stm32.)
These ports have b...
@prime flower I have a working digitalRead NINA + digitalRead adafruit_esp32spi.py ...I assume NINA version number I'll leave alone and it will get changed when the PR gets accepted and someone with access (probably you?) does an official build? Also, what is the significance of 1.4.0-dirty?
@crimson ferry the -dirty implies you have made changes to the repo since the last tag.
hey @slender iron can I pick your brain about the spi flash filesystem?
@exotic pumice sure. I'm not around for very long though. have brunch soon
I'm writing a qspi flash driver in Rust, and the fat library I'm using either needs an MBR or the lba_start address and block size of the filesystem
do you happen to know where I can find the lba start address?
oh and another question I had was if there was any way to detect size of the flash chip
we hard code the partition table in circuitpython
the flash size my be detectable but we don't go that far because there are other aspects you may need to know like qspi support variants
newer chips have more complex id registers but we don't use them
we read the older one and map it to static info we build in
yeah I'm not sure if I want to start building a database of flash chips like you guys have but it might be unavoidable
could you show me where the partition table info is?
why not have the user supply the info about the chip?
that's a good idea
you probably want to use a real mbr though
it's only good to stub it if you want to lock it down
is there a way I can get direct access to the flash chip over usb to write an mbr?
ya, usb is all block level below the fs
because I had circuitpython installed and tried reformatting and stuff and it didn't like it
yup, that is because we hard code the partition table
so what do I do? some low-level usb shenanigans?
to do what?
direct access to the flash chip to write an mbr
in circuitpython?
usb just reads and writes blocks. just don't intercept the block 0 read like we do
so I need a usb fs driver
yes
12
the chips are too small for fat16
hey @slender iron or @tulip sleet , how far out is BLE HID from being ready for testing?
@pastel panther It already works in the current alpha.4 release, but is a little rough around the edges. @slender iron is doing a rewrite, so the API will change. Also, since we don't have bonding yet, you may have to re-pair each time.
@tulip sleet ok, great. Thanks for the update
Sounds good. I will close this for now, but feel free to ask further questions, in, say, discord or the forums.
A pull request will be coming soon for support of the Cedar Grove StringCar M0 Express board. It's a SAMD21E18A. Would it be possible to issue a unique USB VID/PID for this board before submitting the PR? Thanks!
CGrover StringCar M0 VID 0x239A PID 0x005F # bootloader
PID 0x805F # arduino
PID 0x8060 # circuitpython
@slender iron for the meeting:: hug reports to everyone, I've missed you. Status update: Flying back to USA today, will look at my issues and pick something to get started on once jet lag has passed. Will miss today's meeting
Actually I might be between flights in MSP when the meeting is going on...
hmm. GitHub Apps & GitHub Actions seem to be quite intertwined due to the fact that both exist in the "check suite". finally got to test the RosiePi app...and it received 80+ (* 2, for push & PR) requests. one for each check created by the GitHub Actions. hooray! ๐ฌ
Any information about replacing the python-based SD library by a C version ?
In the meantime, you can accelerate things by fixing https://github.com/adafruit/Adafruit_CircuitPython_SD/issues/22 .
@tannewt I have added requested changes.
This PR is by no means critical - there may be better ways to do this
Background
I was attempting to build CP on a Raspberry Pi with Ubuntu 19.04 installed - just to see if it worked...
When I tried to build mpy-cross - it failed with several instances of this error
make: Entering directory '/home/ubuntu/circuitpython/mpy-cross'
Use make V=1, make V=2 or set BUILD_VERBOSE similarly in your environment to increase build verbosity.
GEN build/genhdr/moduledefs.h
In file included fr...
morning... I have dad taxi duty (again) at time of meeting. I've added stuff to the agenda doc. TL;DR -- lots of painful Mu things & hugs to @slender iron for upcoming radio fun.
Q: would folks like to see the circup functionality wrapped in some way within Mu..?
@plucky flint I would
@plucky flint sweet, tag me and I'll gladly test
@tidal kiln hihi how is the neopixel guide goin
@meager fog oops. haven't really started it. somehow missed your response in basecamp that mini=ok. i'll go ahead and crank it out today.
@plucky flint, only if it means the Catalina fix won't be slowed down ๐ .
Hey all, I upgraded my adalogger m0 to 4.1 and I think its sending out an SOS for help ๐ , how to fix? https://www.dropbox.com/s/wqp34f8od8tk9ej/2019-10-14 12.53.57.mp4?dl=0
@rotund basin are you looking at the serial output?
Hi @slender iron I can't seem to find the m0 in either my windows device manager or ubuntu system ๐ค
did you try a different usb cable?
blinking the red led looks like a perpetual reset
It seems like it's just connecting and disconnecting on every flash set
what is it connected to?
Windows box
all of the jumper wires
I think the reset is confirmed
They are all disconnected
So, is it bricked now? ๐ค
can you double click to get the bootloader?
Tried that, a G? Appaeard briefly but , no joy otherwise
you know you've been flashing a board too much when you write shell and python scripts to build Circuit python, reset the board into the bootloader and then wait for the bootloader volume, copy it, then start the serial monitor ๐
whee, hello from MSP! It's good to be back in the states. A couple hours waiting for our connecting flight back home to LNK.
@onyx hinge Hey! Welcome back!
@slender iron can't make the meeting today but I'll post some updates later tonight on UART hopefully. Notes are in the doc
@ionic elk when will you be around? we can do a voice sync on it
Had some moving stuff bleed into the early afternoon but I'll be at my desk in an hour or so to do evening work.
How would 3:30 work?
should be fine
@slender iron confirm its bricked? Would a swd programmer fix?
lurking
lurking
hi kattni
@rotund basin what .uf2 did you use?
lurking working on a guide ๐
I wanted to makesure upgrading to MacOS Cataclysm didn't break discord
now you know you need a second mac
@rotund basin it's not bricked - you should just be able to get FEATHERBOOT and reload it
Lurking but here for questions/comments
yah, we have not moved to catalina on our day to day machines or our broadcast machine(s) yet
Some people on Twitter are likening Catalina to Vista
ouch
is that better than a comparison to 8.1? ๐
๐
yay! clicky keyboards! just like old times!
you'll get there
... lurking today ...
Is there a link to the notes doc?
Thanks. ๐ The pinned one is for last week's.
"Reasonable Backtrace" would make an excellent name for a rock band.
good. i wasn't the only one who thought that. :phew:
phil us in
Hi all. Just listening today, I think.
Philler material
๐คฆ๐ป
Phillosophical notes
in-phil support
gets ready to add Master Punner roles
@tulip sleet it keep resetting itself, won't go into boot loader mode either ๐
It's OPEN HARDWARE MONTH, we are doing a post a day!
https://blog.adafruit.com/?s=%23OHM2019
@rotund basin will circle back after meeting
MicroPython slithers its way to Feather!
https://youtu.be/ssz5SNH0QDY
MicroPython running on a Feather STM32 https://www.adafruit.com/product/4382 #micropython #python #stm32 Visit the Adafruit shop online - http://www.adafruit...
Scanning and advertising - BLE with CircuitPython update
https://youtu.be/iHfd31qDTmw
Scanning and advertising - BLE with CircuitPython update! Proximity based color demo using four Circuit Playground Express Bluefruits - https://www.adafruit....
The philament that binds us
Supercon โ Supercharge Your Hardware (Old and New) with CircuitPython
https://hackaday.com/2019/10/11/latest-dose-of-hardware-talks-headed-to-supercon/
PyConDE in Berlin photos / PyLadies at the event!
https://twitter.com/PyLadiesHH/status/1183056425456680961
Interactive CircuitPython Poster from CodeNSolder
https://twitter.com/iAyanPahwa/status/1183017937591947264
Have you ever seen a poster presentation that itself is a project ? Presenting @CircuitPython programmed poster @pyconindia 2019 powered by @adafruit ๐ https://t.co/8HUf77McEj
281
circuitpython encircles the world
Sponsor arturo182 on GitHub
https://github.com/users/arturo182/sponsorship
String car.. VID/PID, we have'em!
https://github.com/adafruit/circuitpython/issues/2215
Thea Flowers made a CircuitPython driver for the Analog Devices AD5689 16-bit DAC - GitHub. https://github.com/theacodes/Winterbloom_AD5689
Does Mu work with Catalina? Yep!
"...the update to OSX Catalina breaks Mu in dark and high-contrast modes (text remains black, so can't be seen). It's still fine for "day" mode, although code colouration might not work properly. I tested things this morning and it's down to the version of Qt packaged with the 1.0.2 version being old. I hope to release a new alpha version early next week that fixes the issue. BTW, the only reason it's called "alpha" is because the new features may not be finished or finalised. Alpha versions of Mu still have to pass all the tests and things we do for a regular release. Just letting you know in case you get folks on your forums or support channels asking."
https://codewith.mu/
PyCon US 2020 is opening applications for Financial Aid, they are accepting them through January 31, 2020. To apply, first set up an account on the site, and then you will be able to fill out the application through your dashboard. The financial aid program aims to bring many folks to PyCon by limiting the maximum grant amount per person; this way PyCon can offer support to more people based on individual need. The financial aid program reimburses direct travel costs including transportation, hotel, and childcare, as well as offering discounted or waived registration tickets. For complete details, see our FAQ, and contact pycon-aid@python.org with further questions - PyCon blog.
https://pycon.blogspot.com/2019/10/financial-aid-launches-for-pycon-us-2020.html
PyCon US 2020 is opening applications for Financial Aid today, and weโll be accepting them through January 31, 2020. To apply, first set u...
now off to FILL UP MY COFFEE CUP
@idle owl, my sound stopped working
YAY @ivory yew !
Winterbloom Sol will be an open source (hardware and software) Eurorack MIDI to CV module.
I'll be publishing the board files and sending a PR to CircuitPython to add support for Winterbloom Sol very soon.
Could I have a USB PID for this? ๐
Winterbloom Sol VID 0x239A PID 0x0061 # bootloader
PID 0x8061 # arduino
PID 0x8062 # circuitpython
no new labels were assigned. i think there are about 9 or so issues with the Hacktoberfest label.
i could probably dis-ambiguate that text... ๐
no worries
Ok, sounds is back after a restart
๐ฆ
yea @ivory yew !
๐
welcome back charles!
Group hug
https://docs.aws.amazon.com/iot/latest/developerguide/iot-moisture-raspi-setup.html re: tannewt/aws blinka
Insert your micro SD card into the Raspberry Pi, connect your monitor, keyboard, mouse, and, if you're not using Wi-Fi, Ethernet cable. Do not connect the power cable yet.
@ivory yew (and YouTube land ๐), are you aware of the Community Bundle of community-contributed libraries? Let us know if you want to get your library(ies) into the bundle.
https://github.com/adafruit/CircuitPython_Community_Bundle
Yep!
@solar whale Speaking of NTP, after the meeting, did you happen to test if the NTP "error" still occurs on nina-fw 1.4.0?
@prime flower yes -- it does but I no longer have as many failures to find my SSID when I first connect. It still needs some time to find a valid NTP time.
@raven canopy hi, I used to work on pip and python packaging, feel free to ping me for help with that stuff. ๐
i defintely might take you up on that @ivory yew! thanks in advance.
(whee, adafruit package right in the middle of the cp weekly!)
I am also available for geektrapping on this stuff @ruby atlas
@slender iron ready whenever you are
bye!
@ionic elk will be available in 5
Oh yeah I see you guys are still going
@onyx hinge thanks! ๐
@rotund basin back from meeting, are you still unable to get the bootloader going on the board? Did you have the UF2 bootloader installed on the Adalogger?
@solar whale You may want to open a descriptive issue on nina-fw regarding get-time taking a while, so we at least have it documented somewhere. Long-term, I should look into debugging the SNTP code within nina-fw to figure this out... https://github.com/espressif/esp-idf/tree/master/examples/protocols/sntp#working-with-time
@prime flower will do - may have to wait until next weekend if I can't get to it today. traveling the rest of the week .. ๐ฆ
no rush
ok, @ionic elk
fridge update: kiddo wasn't wrong. water filter somehow was impeding the flow. uninstall, reinstall, and all is right in the world.
@tulip sleet I had to use the bin file with bossa as in the adafruit pages. The boot loader didn't show before , but it all worked well on 2x
did you use the same bossac as before for 4.x? The new bossac has different default arguments, and can overwrite the bootloader if it's not protected
if you double-click the reset button, do you get a pulsing red led?
i will dig out an adalogger
I used the latest bossac 1.9.1 with the 0x2000 offset like on the adafruit pages
ok, that's good
Double click still gets me to continual reset
ok, i have an adalogger with the Arduino bootloader. Will try.
Ok
@rotund basin where di you get bossac 1.9.1 from?
and did you use adafruit-circuitpython-feather_m0_adalogger-en_US-4.1.0.bin ?
Github, and yes
@slender iron Uploading the vid to YouTube. I need a link to the notes doc. Here is the vid link once it's processed: https://youtu.be/sGLswv_yHxk
The contributing page is pretty cool.
@idle owl Is https://circuitpython.org/libraries/contributing where those labels are going to go to point out good issues for first timers? Hacktoberfest or something
CircuitPython Organization
@idle owl notes doc will be at: https://github.com/adafruit/adafruit-circuitpython-weekly-meeting/blob/master/2019/2019-10-14.md
doing it now
@slender iron Thanks! Vid processing now.
thanks!
@swift arrow Once we get it updated, yes. But right now you can't filter by label.
ah ok. I thought it was done and I was looking in the wrong place ๐
Nope, the data is available, we haven't updated the UI yet.
@slender iron Video is uploaded.
@swift arrow I think so as well. I'm looking forward to it. Not so much looking forward to the huge sweep to label everything ๐
๐ wrapping up newsletter now
@slender iron so, uh, if i change obj.c or objtype.c is there a test suite? ๐
ya, the tests/ directory
thanks!
that's good to know (coverage)
@rotund basin
C:\Program Files (x86)\BOSSA>bossac.exe -e -w -v -R --offset=0x02000 -p COM8 \Users\Dan\Downloads\adafruit-circuitpython-feather_m0_adalogger-en_US-4.1.0.bin
Erase flash
Done in 0.744 seconds
Write 183248 bytes to flash (2864 pages)
[==============================] 100% (2864/2864 pages)
Done in 2.303 seconds
Verify 183248 bytes of flash
[==============================] 100% (2864/2864 pages)
Verify successful
Done in 22.614 seconds
It came up with CPy, and also double-clicking reset is getting me a pulsing red LED, as expected.
Bossa told me it was successful as well , but didn't work after. I used the bossa gui as well
do you mean you tried it twice?
No
Board definitions for the CedarGrove StringCar M0 Express. Added a device definition for the AT25SF161 flash chip used on the StringCar board. Includes the assigned custom VID/PID codes. Built and tested okay.
I'll need some help with the next steps. Have reached my skill/experience limit. ;)
so just bossa GUI?
Yes
ok, will try that, hold on...
@rotund basin did you select "Erase all" in the Write Options?
did you put in the offset the very first time, and as 0x2000?
Yes , it fails without it
ok, it's working for me with the GUI too. So, when it's plugged in, and you double-click the reset button, what shows up in "Ports" in the Device Manager?
Windows device manager continually refreshes because the device is resetting
Wonder if it's a 2x to 4x thing? ๐ค
if you double-click, you should be going into the Arduino bootloader, and so what was flashed should not matter. It sounds like maybe the double-click isn't working??
have you tried another USB cable?
I had to double click for bossa to work
right, that's what I'd expect
But now it's broken ๐ค
if you plug it into a USB power supply (not Windows) and double-click, you should also get a pulsing red LED. Did you try this on other than Windows? (I forget.)
@tulip sleet still doesnt work, red flashes the same as my video
2 bright red, 1 dim red , 1 off repeat
Maybe its 3 bright red
When I double click, I get a red glowing effect then back to the above pattern
i get similar for single-click. But double-click gets a pulsing. Try simulating a double-click by plugging a jumper into RST and then inserting and removing into GND twice quickly. Also unplug other stuff and remove the SD card
@rotund basin iDid you check any of the other checkboxes in BOSSA when you flashed? It's possible you somehow set the watchdog timer fuses, but that would be hard to do. How long does the reset loop take, as seen by Windows?
do you have a J-Link or similar programmer?
someone want to hop in the audio channel so I can test?
are you familiar with Atmel Studio? You could hook up the JAGATAGICE3 to the SWDIO and SWCLK pads on the bottom, check the fuses, and reprogram the bootloader.
@danh I am going to try that , hoping that perpetual reboot doesnt interfere. Just to confirm which bootloader should be loaded ?
first just check the fuses, since they may be the only things you need to fix. I'll find the bootloader
@idle owl had to launch from command line because obs doesn't trigger mic permissions correctly. also updated ishowu though I'm not sure I needed to
@rotund basin the hex file for the bootloader is in the file list here: https://github.com/adafruit/Adafruit-Feather-M0-Basic-Proto-PCB
File "code.py", line 1169, in <module>
File "code.py", line 259, in load_font
File "code.py", line 248, in load_font
File "/home/travis/build/adafruit/Adafruit_CircuitPython_Bundle/libraries/helpers/bitmap-font/adafruit_bitmap_font/bitmap_font.py", line 51, in load_font
OSError: [Errno 2] No such file/directory```Never seen a Travis path in an error before. This was spurious (I may have done something funny on an analog pin), not to be too concerned about I think, but a curious result.
I have seen travis paths a couple times lately.. think in the _ble stuff
Wasn't able to find the .travis.yml file to update with the new board name. Is there a different process than the one described in the guide?
@crimson ferry @swift arrow yeah. i need to drill down on that. are these happening with raw .py files or .mpy?
or both..
.mpy but clearly something was corrupted in the processor, I have no refs like that in my code, and there's none in the .py of that lib
the only reason i can think of it happening has to do with how the script that builds the bundles is getting...confused.
the path must be in the .mpy, but it should never get accessed by code
@raven canopy I think it was the mpy
basically, the script creates a temp file, and copies over the original, going line-by-line so it can update __version__ info before it all gets zipped. i'm wondering if its replacing something like __file__ or __name__ with the path. which would explain the Travis/...since its run on Travis.
makes sense
@crimson ferry @swift arrow issue created. i'll dig into this week. https://github.com/adafruit/circuitpython-build-tools/issues/51
We now use GitHub actions, which is in https://github.com/adafruit/circuitpython/blob/master/.github/workflows/build.yml. But I'm not sure you can put that in a PR, for security reasons. @tannewt, how do we do this now?
bingo! now to find out why...
though i realized it could also be a mpy-cross issue as well.
@tulip sleet so the chip is resetting too fast or the ice3 can't read it. It reads a low voltage about 1V and can't read the chip or erase it
When the ice3 is connected and I double click, it stops resetting but... I still can't read the chip
@rotund basin sounds like a physical problem with the chip
@tidal kiln ok yay guide done, whatcha wanna do nex?
got something?
well, theres a few library tags you did
if ya wanted to poke at those
was also maybe trying the recorder project with bluefruit CPlay
or...maybe something else? have ideas? ๐
yah, i was going to get caught up on weekend forum postings and then checkout those github things
i did try the recorder thing with the CPB, and it did sort of work better
@tidal kiln maybe worth a guide showin how you can do basic frequency 'detection'
it did sorta follow the trail of notes when i tried some squawking
could also display the frequencey detected on TFT Gizmo
that's what i was thinking. the underlying method is kind of cool.
it's not solid enough to like tune a guitar, but it still sort of works
ok we'll add FFT eventually ๐
maybe thats a @onyx hinge project
its audio related
plz do version without TFT (using neopixels) and also a page with TFT gizmo
the cool thing about the zero crossing is that it is fairly easy to explain and groc
yeh!
New board list is here: https://github.com/adafruit/circuitpython/blob/master/.github/workflows/build.yml#L75 Will edit the guide now. Thanks!
@slender iron I respectfully disagree, it worked fine on 2x before the upgrade to 4x
why would the voltage be 1v?
Thanks! Just added the board to the list.
Looks good to me. Thanks!
@rotund basin have you also connected GND and VREF (and perhaps also RESET) to the ICE3?
do you need to tell Atmel Studio it's SWD (as opposed to JTAG, etc.)?
7.3.1
Looks good to me! Needs one merge before merge.
I believe there are submodules that are used only by the ports being removed so they could be removed too, for example "lib/stm32lib" and "lib/berkeley-db-1.xx".
Does this also mean some of the old code only used by those ports will be removed too, like the machine modules?
Neat! One question but looks good otherwise
_reset is called after each vm run. Do you want this in _init instead?
Looks good to me! Needs one merge before merge.
Thanks! Feel free to merge after GitHub CI is happy.
@arturo182 extmod, which includes machine, will go away later, after i updated the remaining ports, including the unix port, to not use anything in extmod. We need to move various things in extmod like re and json to shared-*. I can clean up the submodules at that time as well; thanks for pointing those out.
That was unintentional, but the calibration can vary based on temperature, so maybe it's a good idea to do it on each vm run. It takes maybe a msec or so.
Sounds good to me. Nice to see CP dropping dead and unsupported code :)
Alternatively, we can call it once, and add a calibrate() function which is a no-op on other ports. I actually didn't notice any difference in the results before and after calibration, though.
@tidal kiln hey i have an idea!
๐
jp's gona write a guide on the 'beam images to cpbluefruit' this week
but next week, maybe he can do a guide on running turtle on the tftgizmo
the CPX can't run turtle, but the CPB can
do you wanna do a team up, maybe in the next week or so, write a few turtle scripts that make fun holiday / winter -fall themed graphics
and jp can do the writeup/explain them
sirpinski snowflake i think we even have, can do a dreidle, xmas tree in green, maybe some baubles on it
snowman
okie doke
dunno if you did logo as a kid, i kinda find it relaxing + nostalgic ๐
a little...wayyyyyy back
๐ข
so, yah, would be fun to play with it again, haven't even used turtle yet
@tidal kiln its built into mu!
yep
@tidal kiln feel free to bump mcp and close the two issues
hmm. that one's still not really solved.
@danh you are a genius, I definky forgot those pins. Atmel studio jtag sees the m0 just fine now. Which bootloader should i load on the m0 after i erase it ?
robo, what exact board do you hav?
Hey @meager fog I have the adalogger m0 ๐
I think I found it on the uf2-samdx1 github
But I dont see adalogger in releases , is it the same as the feather m0?
And it doesnt show via USB, probably have to burn it via the swd connection
Any documentation on how to put the bootloader on it via atmel studio ? I'm not sure which fuses to set
Yep, of course there is https://learn.adafruit.com/how-to-program-samd-bootloaders/programming-the-bootloader-with-atmel-studio ๐
But the bootprot says this
What is the 07 equivalent?
So I did the 8k one after I flashed the bootloader and I have recreated the perpetual resets
After a double click and disconnecting the jtag
@slender iron I had to update tinyusb manually even after merging from upstream for the deleting unused ports PR. Also I had to update submodules inside the tinyusb submodule
I thought I was doing that recursively already.
I tried going back to 2.00 bootloader , still no luck. The device just resets as soon as its loaded , what is the original bootloader version that shipped for adalogger I wonder?
@rotund basin do you mean the 2.0 version of CircuitPython? That's not a bootloader. Use the .hex file from the link I posted earlier.
No the bootloader @tulip sleet
I went down from 3.7 all the way incrementally to 2.0.0
@tannewt, OK, finally built correctly again.
OK, I see some other calibration possibilities for other chips. I'll change it to analogin_init() and maybe add a calibrate() function later.
@rotund basin the original bootloader was an Arduino bootloader, not a UF2 bootloader. The original Arduino bootloader is here: https://github.com/adafruit/Adafruit-Feather-M0-Basic-Proto-PCB/blob/master/featherm0bootloader_151101.hex
which UF2 bootloader are you trying to load, and how are you loading it? You'll need to load it at 0x0000, and maybe undo the BOOTPROT fuse temporarily so it can write. So are you succesfully flashing with Atmel Studio?
@danh I've tried eac, one from 3.7 to 2.0.0.afafruit6 , the avr studio defaults to 0x0000 , after bootloader is written, the m0 resets perpetually... I can find no shorts across the pins and the jtag reports 3.7V on the chip. Does OpenOcD have to be used to program the bootloader instead? Not sure why that would matter ?
If you are using the latest alpha on an nRF52840 board, then you need the latest prerelease of the adafruit_ble library: https://github.com/adafruit/Adafruit_CircuitPython_BLE/releases/tag/2.0.1-alpha.2
OK, looks good, tried the same thing in CPython to verify.
@idle owl it appears the ili9341 (the same screen on the pyportal from what I can gather) is already supported on displayio. Should I continue working on a simpletest for it with the gfx library?
Or what I could do is work on some simpletests for the displayio library for various displays as I can't seem to find any online
found...
print(e.manufacturer_specific_data)
But itยดs returning always
None
Advertised Device: Name: INDRIYA-BLE, Address: fa:64:be:99:81:cd, manufacturer data: ffff153cfe52, serviceUUID: c83e0fa6-f5b7-473a-a2a2-3957117a2f, txPower: 4
Should be return that ffff153cfe52
i tested doing a ARDUINO BLE SCANNER
Moving this as an issue on the library. Will investigate.
@ionic elk hiya - you're working on a GPS demo?
@tannewt all updated to handle recent PR's
@umbral dagger any reason to limit the turtle lib to only boards with built in displays?
Great! Looks good. Thanks!
c1ab248 return chip vcc value - dhalbert
fdd7ebe change calibration from analogin_reset() to ana... - dhalbert
eca7343 Merge remote-tracking branch 'adafruit/master' ... - dhalbert
a0d18ac add dummy common_hal_mcu_processor_get_voltage(... - dhalbert
b80048b Merge pull request #2213 from dhalbert/cpu-voltage - tannewt
44ebc4c establish stringcar m0 express definitions - CedarGroveStudios
b04a218 initial load of stringcar m0 express defs - CedarGroveStudios
bd608e0 remove placeholder - CedarGroveStudios
f1ab9aa add def for AT25SF161-SSHD-T 2MiB SPI flash chip - CedarGroveStudios
2b9bb78 add stringcar_m0_express to boards list - CedarGroveStudios
@slender iron @ionic elk ok lets chat about attack plans
usually it is!
im also often wrong
I had a chance to chat with Scott yesterday but we can talk again if you want
@trim elm I would say find a display that uses GFX, and write a simpletest for it. There are at least a few for sure. There should be a number of guides using displayio already. We can think about writing up more examples for displayio though.
i wasnt there ๐ so now we can catch up in text
@ionic elk at this time you have basic character reading but its not buffered?
That's right
it works for most things, including returning raw GPS data, but it won't work for the GPS sketch in full
Gets stuck on fixing
(compared to control)
My Feather M4 express will fix on my "warmed up" battery-backup in about 4 tries, the STM32 one never does, it just returns the "attempting fix" forever
I would guess dropped characters, when it's working in high speed asynchronous format, caused by a lack of buffering and not requesting data at the correct times
I do see what appears to be complete data when I read the raw data
do you know that for sure or are you guessing? ๐
I'm not totally sure, since I don't have great python debugging chops - but with the current system, if you do receive anything when a read isn't actively in progress, you will lose characters. Even before I started Scott figured that would pretty much disable the GPS from working
you can drag files here
@ionic elk you can modify the gps library to print out what it's reading from serial
@ionic elk ok back in a few - have to finish a tester
Raw data sample, I don't know if this is useful:
$GPGGA,170915.000,4222.8886,N,07106.2939,W,1,07,1.08,18.6,M,-33.7,M,,*67
$GPRMC,170915.000,A,4222.8886,N,07106.2939,W,0.34,91.59,151019,,,A*40
$GPRMC,170914.000,A,4222.8885,N,07106.2940,W,0.44,94.06
@tannewt Looks good! I have to go out, so assuming it works, feel free to merge.
Ok, I'd guess that's based off common_hal_busio_uart_rx_characters_available
yes please implement it
Since there's no input buffer, should it just be 1?
sure
the library assumes that data is bufferd
so it wont work really without that
if self._uart.in_waiting < 32:
return None
it doesnt read a GPS sentence until there are 32 bytes
ah, that'll break it
there is an interrupt based HAL api
there is no way to get a callback when a byte is received over UART?
Basically the issue is the IRQ API is inflexible by default. You can't specify your own callback, you have to use theirs, and you can't pass in context pointers, so everything you use in it has to be global.
(as given in examples, anyway)
thats ok there's no more than 3 UARTS
So I'm looking at how Micropython does it, which turns out to be how I was planning to do it but thought it'd be too clumsy, which is to have a file with all these global interrupt registrations and then call custom interrupts out of there
you could allocate 128byte buffers for each uart
you are definitely able to get data fast enough, if i disable the 32-byte buffer read check the data comes thru
it just isnt getting there right now ๐
Ok gotcha
I've got a system that's almost completely done I just need to sort out the IRQ management
globals are totally ok
I just wouldn't do a global buffers. Allocate the buffers on the micropython heap. That way they only take up space when in use
Let me pull up a link
The issue is I need to get the buffer into the IRQ/callback. And the IRQs don't take context pointers
that's my key problem
@ionic elk can you tell what triggered the IRQ?
@tannewt This only did a "test" check, it didn't do a complete build of all the boards.
All STM32 device interrupts are mapped to one of these functions: https://github.com/micropython/micropython/blob/master/ports/stm32/stm32_it.c
right, there are separate functions per uart
when there isn't you can check the interrupt bit on each peripheral to know if it triggered
Ok, I think I see the key element
scott, do you know what this does? pyb_uart_obj_t *self = MP_STATE_PORT(pyb_uart_obj_all)[uart_id - 1];
they all call the same handler but pass in the index
MP_STATE_PORT is global state so it must map to the uart for the given index
I think that line fetches the mp object for the UART based on the UART index, which is what I need to get the buffer into the callback
right, can I still do that in Circuitpython?
ya, I'd just store it globally myself
the buffer?
the pointers to the native object
Ok, so every time you create a native object for a given UART, it puts itself in a global pointer table?
ya
it's probably best to put it in MP_STATE_PORT
you need to make sure the pointers go somewhere that the garbage collector looks
otherwise it'll free it out from under you potentially
@slender iron Can you give me a once sentence description of what it actually is? I see it refers to a structure called MP_state_vm
I think it's accessing the root pointers, right? Which I would need to define, since we don't currently have any
its a big struct of global state where part of it is automatically collected during garbage collection
So MP_STATE_PORT is basically just a bunch of global variables used by a specific port/board?
(I'm lurking and very interested in this discussion)
yes
@slender iron so I'd add root pointers for the UARTS to mpconfigport.h, and then I'd have access to them via MP_STATE_PORT, right?
what do you mean by root pointers?
In micropython, the array of UART objects, pyb_uart_obj_all, is not specified in the actual MP state vm object, but in mpconfigport.h under MICROPY_PORT_ROOT_POINTERS, which then get included in the actual object
right
root pointer means it's the first pointer collected during gc
- one of the first
the collection process recurses into it to find other referenced pointers
What's the advantage to this vs just storing the pointers in an static global array in the UART module, again? Will the array of pointers prevetn the uart modules from being garbage collected?
right, if it's a plain global the gc won't realize you still have a reference and re-allocate the memory
sorry, it's my first time dealing with gc in this kind of context
assuming the user stopped using it
Will that matter? We don't need the UART to persist past user use even if it's still referenced
which it shouldn't be, because when the object is de-inited, that pointer should be set to null
it will because your interrupt handler will still try to use it
objects aren't always deinit
deinit is a convenience for folks to get back resources immediately
python is very handwavy when an object is actually freed
I see. So the threat is that an object goes away, the IRQs are still going because there was no concrete common_hal event to signify that, and they start attempting to read/write from memory that's already been reallocated
do I have that right?
yup, exactly
you can test by:
uart = busio.UART()
del uart
gc.collect()```
the del will delete the python reference but not the internal one
I guess I'll start by trying to get the root pointer array in, and then I'll get the IRQ linking set up
and the collect will free the memory
Is there a big array of specific IRQ functions for Atmel and NRF? If so, where did you put them? Micropython has the stm32_it but I'd rather follow circuitpython convention if it exists.
we don't have it in one file because the global names are enough
the big array is an arm thing
I mean where do I put this stuff:
void UART5_IRQHandler(void) {
IRQ_ENTER(UART5_IRQn);
uart_irq_handler(5);
IRQ_EXIT(UART5_IRQn);
}
Should I just have it in my uart.c function, or port.c, or what?
we do something similar here: https://github.com/adafruit/samd-peripherals/blob/master/samd/timers.c#L105
per file then, you'd say?
ya, I'd put all of the uart ones together
๐ you got it ๐
This is where the names are established: https://github.com/adafruit/asf4/blob/039b5f3bbc3f4ba4421e581db290560d59fef625/samd51/gcc/gcc/startup_samd51.c#L317
arms have an array of exception (aka interrupt) handlers
I was considering editing that but didn't want to break it too badly.
Wasn't sure how the HAL would take to it
nah, the functions there are declared weak so if you create one of the same name it'll win
I mean the actual assembly file
it's assembly for stm?
you probably want to do it through the hal still
Yes, it will be, in this case. The array of root pointers will allow me to access the ring buffer without the use of a context pointer, just by using the index of the UART, so I'll be able to continue using the HAL functions without modification
or not since it expects you to know how much
If it continues having issues I can reduce down to direct register pulls like Micropython does, which probably wouldn't be awful in the case of uART
I find registers easier than HALs but it can get tricky when using both
@slender iron is there an easy answer for what to do about older examples that use refresh_soon() and wait_for_frame()?
and things will generally be ok if running in 4.x?
4.1.0 at least
well, that is easy then. thanks.
@tannewt Looks good! I have to go out, so assuming it works, feel free to merge.
Well. I couldn't get my adalogger working , so I bought 10 more ๐
@ionic elk hiya was in a meetin' - sounds like you have a path?
@idle owl what needs to be done here?
https://github.com/adafruit/Adafruit_CircuitPython_turtle/issues/7
if it's simple, i can fix
@tidal kiln Oh hmm. I think the current iteration of it on RTD needed to be deleted and it needed to be added like normal. I have this open in a tab somewhere.
Let me look
That appears to have been resolved. Looking into it.
@tidal kiln It's not simple. I think it needs to be deleted and redone.
oof
only for boiler plate text in a release
Oh right. Yeah leave it as is in the release text. It'll get fixed
ok. thanks.
@meager fog yep I think I'm pretty close. I was pretty close before but my approach would have given me problems with the garbage collector, so I'm super thankful Scott helped me understand the circuitpython root pointer stuff
It's definitely nice to get his help, especially on the micropython arcanery
Hug report next week lol ๐
@meager fog also, sent you an email about this, but I've been thinking of putting together some of my own CPy boards and was wondering if I could get access to the Adafruit eagle parts library
lol ok @ionic elk dont forget to implement available_bytes
orwhatever its called
@ionic elk oh yahh its undergoing a refactor
Yep!!! Good to know it's essential
can you 'recycle' existing boards
thats the best way to use our parts
copy n paste from the sch ๐
Gotchaa yeah I think eagle has the reverse library build thing, I was just wondering if you had a big sharable database
I'm just looking for connector bits mostly, the old Sparkfun and Adafruit libs don't even have USB C and the managed libraries are a bit of a mess
Plus your parts are so much prettier
(and more informative)
but if it's WIP I can use the reverse thing
@ionic elk yeah its something im working on but its kinda a mess right now ๐ฆ
so you can use exp-lbr
or copy-paste from a schematic into yours
I'll do that! I assume the copy paste drags along the brd layout too?
@ionic elk no, you have to relayout
if you want to include both you need to import the design you want to copy
Well, apparently the checks were just considerably delayed for some reason.
Updates the libraries contributing page into a 3 tabbed layout.
Adds an issues label select list that allows sorting issues by label.
incremental progress! now to fix the actual test so it doesn't fail.
and also handle fails more gracefully. even after closing that PR...the check is still "running". ๐
hey <@&356864093652516868> if someone could test the msa301 or another driver that uses adafruit_bus_device with a current bundle and 5.0 alpha 4 build? if you're seeing what I'm seeing it'll be obvious.
I have to run out for a bit but @vernal fern if you can, thanks!
I tested the RA8875 yesterday and it seemed fine @pastel panther
@pastel panther can do. i'll do itsy m4 + msa301. one sec....
@pastel panther I have one in-hand and could test it later tonight if that would help.
Any other driver? I'm using bus device for the AD5689 driver, I can try that out.
I'm seeing an issue across the board with anything using bus device on calling the constructor. Driving now, bbiab
@pastel panther seems to work fine.
Adafruit CircuitPython 5.0.0-alpha.4 on 2019-09-15; Adafruit ItsyBitsy M4 Express with samd51g19
>>> import board
>>> import adafruit_msa301
>>> msa = adafruit_msa301.MSA301(board.I2C())
>>> msa.acceleration
(0.0766094, 0.809186, 11.6973)
>>>
Ok thanks @tidal kiln I must have lost my mind
Hmm. Now to find out if register works with an already existing non-register driver.
Welp the driver I wrote sight-unseen doesn't work. Surprise. ๐ Getting OSError: [Errno 5] Input/output error.
!! My driver did work!
Needed to set frequency on I2C init.
ah nice
The rest of it worked. I wrote that in June without having the board.
Probably the 3rd driver I ever wrote I guess?
2 more than me. ๐
You have a far deeper knowledge of this stuff than I do, or at least it seems so based on the assistance you're providing to others here ๐
๐ I'm mostly just good at research.
@idle owl ๐
What's the new driver?
MCP9600. But a community member has since submitted the basic bits of the driver and we're using that. I am supposed to go through and add all the extra features I implemented in the original one I wrote in June.

