#circuitpython-dev
1 messages ยท Page 196 of 1
Kattniiiiiiiiiiiiii
Lurking
๐ ATMakers!
@errant grail Ladyada will probably do final moderation on your guide tonight, it looks great!
@turbid radish Thanks! And thank you for your changes and updates!
Group hug and kudos to the teams developing the web-based editors for the Micro:bit for the new WebUSB support.
(I have hugs)
hug reports:
To Kattni and Scott for going the extra mile for making the CP community especially welcoming and encouraging me to remain involved in any way I can. Also to CGrover for spending extra time helping me with some audio electronics questions
@pastel panther Thanks for sticking with us ๐
๐
@tannewt for the PR review. And a group hug!
Very cool @slender iron . Like the display = console terminal concept.
at noon Sunday is my talk in the Digikey area
@slender iron I am going to Makerfaire on Saturday
Sorry.. a dayjob boss called. ๐ต
k, I gave you the role @inland tusk
sneek peek of the project used for the front panel guide
It will be out soon
nest day or so
next
His guide is awesome & VERY helpful
Boxing is a very useful skill
mine woill be a twelve hole tenor ocarina. That iis what I learned to play.
@inland tusk nice, I was thinking about doing a 6-hole one, using the touch for buttons, because then I can react to lighter/stronger touch
Adafruit has a 12 pad touch board which I will try to use for the finger board.
Current activities - MakerFaire Sundat talk at noon Sunday in Zone 3 Digikey., Updates to the Intro to Crickit and Make It Move guides to including CircuitPython & MakeCode, incorporates new products.
@idle owl sure. let's do it before you take off for NYC.
Someone mentioned that they were working on the circuitpython Library for it.
@tidal kiln Excellent, that will work perfectly.
my update is above
All garbaled
I'll just type. I need to replace this headset.
interference from the Vogon construction fleet sounds like....
Earbuds... ๐
updates:
Assembled and tested the first version of my battery powered CP board (pictured) that runs off a AA using a boost converter. I found plenty of things to fix but the concept is pretty promising. These are for running dotstars molded into the toys my wife sculpts and casts.
I have another CP board on the way for the Hackaday Square Inch thing (https://hackaday.io/contest/160135-the-return-of-the-square-inch-project) and hopefully Iโll be sending out yet another M4 board that Scott suggested that is possibly my most dense board so far.
As an aside, Iโm not happy with the micro USB socket Iโve been using (https://www.digikey.com/product-detail/en/amphenol-fci/10118193-0001LF/609-4616-1-ND/2785380) so if someone has one they really like for strength and insert/remove force, please let me know.
Also so that someone can call me on it later, Iโll say here that Iโm planning on writing a guide/article on how to mashup adafruit or other open source boards into custom designs.
@pastel panther: that's an amazing board design!
I did some beta testing on the microbit web editors. It's great that they exist for situations where you don't have something better to use, but there are definitely better options.
@pastel panther Noted and will be called. ๐
๐
FrequencyIn: Started working OSCULP32K/GCLK source for DPLL1. Since non-sync enabling of a GCLK generator is only available in samd/samd51/clocks.c, and I wanted to make DPLL1 available to any future use anyway, I've started to move all of that out of FrequencyIn over to clocks.c. But, that is a fair amount of engineery thought process that I didn't anticipate. Definitely open to thoughts and suggestions.
VEML6070 now matches VEML6075 usage to max possible extent.
Non-CPish: spent the weekend setting up the laptop with dual boot Ubuntu Bionic. Hope to get to a point to help out with dev/user support on that platform. And, well, because penguin. ๐ง
@pastel panther If you're not already in the Learn system, ping me when you're ready. Or immediately. ๐
weeds: an easier way to enable/disable C modules per board
@idle owl I'll ping you for feedback when I have a first draft?
@pastel panther That also works
In the weeds NPR 12 pad touch
@pastel panther You're also welcome to work on it in the Learn system if you'd like.
@idle owl Sure?
I'm turning into a ๐ so I have to run but thanks everyone for a year of CP weekly and for making the community and code awesome.
๐
We talked about it in my PR, well for sub-module. I was going to just #ifdef in shared-bindings, but don't like that...
@inland tusk https://github.com/adafruit/Adafruit_CircuitPython_MPR121/issues/1
a lib exists, but work needs to be done to make it more in line with current libs in terms of software interface
Hi all - I have a work training in minutes, but wanted to stop by and say thanks for all your help
Happy Anniversary (sp?)
@tough flax Great hear you.
Thanks everyone!!
Thanks!
@indigo wedge I spent a lot of time lookng at the ble_scan, and have to admit, I have no idea how to "fix" it for SD=s140 - It looks like the AI has Pchanged again from when you fixed it last time so I could not just "do what you did" . If you have any time, can you point me in the right direction.. Or let me know if I shoudl just forget about it until youre BLU update is done . That is a good option as well.
'bye all! Back to the studio...
Blue offers premium USB and XLR microphones, and audiophile headphones for recording, podcasting, gaming, streaming, YouTube, and more.
Discord has a sllider for input in the setting. and also for output.
See you on Saturday
Darn, I missed the meeting ๐ฆ
FYI, I've used the Yeti and their Raspberry and I prefer the raspberry
@charred lake oops! I'm excited to hear about your projects!
@tough flax Interesting. I saw that one too.
@slender iron Thank you! My girls and I are excited as well; I'll post an update of our Spooky House project soon! They are having so much fun ๐
The Raspberry works on iOS as well but I never have bothered. It's got a gain knob and is very portable
Hey folks, I saw a note where @tulip sleet was asked when he would merge in the 3.x code... does that mean that I should start new work on a the 3.x branch? I didn't realize 3.x was not in Master yet
@stuck elbow if I can provide some help, do ask. also, if something can happen with both PyConUk and PyConFr which happens close in time...
@tough flax master is where you should work. 3.x just has a few fixes that master doesn't but soon will
@idle owl you out of the newsletter?
@slender iron Oh bugger. I got distracted.
We can add them for next weeks. I wouldn't worry about it.
you can do it now ๐
thanks!
@stuck elbow from today's in-the-weeds, here is the issue that i think Scott was referring to: https://github.com/adafruit/circuitpython/issues/335
I am going to need to implement something along these lines for pulseio.FrequencyIn, because it gets really tight on non-express SAMD boards. I'm going to put my thoughts into that issue...
@deshipu brought this up in today's weekly meeting. Being on my phone and text only, I was a little late in getting some thoughts into the discussion.
I am going to need to implement a way to disable/enable the pulseio.FrequencyIn sub-module, since it leaves very little memory/flash left (or doesn't fit) on non-express SAMD boards.
My initial thought was to try and just #ifdef it in/out of shared-bindings with a #define HAS_FREQ_IN in mpconfigboard.h. I'm not even sure if that w...
<@&356864093652516868> Here is the recording from today's 1 year anniversary meeting ๐ : https://www.youtube.com/watch?v=RQIeFU-1U-M&list=PLjF7R1fz_OOUvw7tMv45xjWp0ht8yNgg0
Notes with time codes are available here: https://gist.github.com/tannewt/a3e9cd422215274c7ea88f8f63396570 Thanks to @kattni for taking notes! Join here for ...
totally sorry i was non-responsive during hugs. a boss totally sprung a "call me" IM on me. ๐
For what it's worth, my mic was unmuted, and I muted it to say that you had posted it to the notes and I read it off, and then unmuted my mic. Not realising this until Scott said he'd read it from the notes.
First day back + monday. nuff said. ๐
I'll go with that, yes.
@idle owl monday enough for you yet?
https://github.com/adafruit/Adafruit_CircuitPython_CircuitPlayground/issues/40
@tidal kiln which firmware did you test with?
@raven canopy Adafruit CircuitPython 3.0.1 on 2018-08-21; Adafruit CircuitPlayground Express with samd21g18
k. just wanted to narrow down sleuthing... so it wasn't a breaking change with 3.0.2. ๐
thanks for pointing that out. added info to issue thread.
hmm...seems to have some weirdness in the 540 to 690 range... give this a spin:
>>> for i in range(50):
... tone = 300 + (i * 10)
... print("Tone:", tone)
... cpx.play_tone(tone, 0.5)
...
yep. the forum poster did a similar test.
yeah...totally misread the range(450, 650) as in (450, 650). ๐
just tested on a fresh-from-factory CPX, with 2.2.0. tones shift accordingly... maybe RawSample is the culprit? ๐คท
I happened to be in this code and thought I'd look... forgive me if I'm stepping on toes...
But I think the issue might be in the sine generator?
When I extracted this method, it didn't work as expected
def _sine_sample(length):
shift = 2 ** 15
for i in range(length):
yield int(tone_volume * math.sin(2*math.pi*(i / length)) + shift)
'i' is an integer, so it does integer division and gets zero
Adding a float() cast makes it work? yield int(tone_volume * math.sin(2math.pi(float(i) / length)) + shift)
Sorry, discord is using double splats as bold
i get this in REPL:
>>> for i in range(length):
... tone_volume * math.sin(2 * math.pi*(i / length)) + shift
...
32768.0
52027.9
63931.3
63931.3
52028.0
32768.0
13508.1
1604.76
1604.72
13508.0
Scratch that, while Python on linux says (i/length) = 0, CircuitPython does the conversion(I guess0
Yep - just tested it
sorry for the misdirection
it was totally worth a look! had my brain convinced... ๐
python 2.7 on Ubuntu (win10) does not convert them to floats
hows this for a head scratcher?
>>> math.pi(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'float' object is not callable
>>> 2 * math.pi(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'float' object is not callable
>>> 0 / length
0.0
>>> math.pi(0 / length)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'float' object is not callable
>>> math.pi(0.0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'float' object is not callable
>>>
why would you pass 0 to a constant?
lol. i must need coffee...
did you mean sin()?
i repeatedly missed the *
Gotcha. Similar line in AudioOut.c where lots of integers are divided...
static void set_timer_frequency(Tc* timer, uint32_t frequency) {
uint32_t system_clock = 48000000;
uint32_t new_top;
uint8_t new_divisor;
for (new_divisor = 0; new_divisor < 8; new_divisor++) {
new_top = (system_clock / prescaler[new_divisor] / frequency) - 1;
if (new_top < (1u << 16)) {
break;
}
}
@tough flax just seeing your comments. d'oh! thought maybe you were on to something.
yeah, sorry. I was looking at set_timer_frequency() and was wondering if the rounding down of the integers might be letting the new_top be higher than the prescaler can go? Not sure how this code works
I should probably back off - I just saw something that I thought was it and didn't know that CP (or maybe Python 3.x?) had changed integer->float promotion
thats a python 2 v 3 thing
i just ran some of the calcs in set_timer_frequency by hand. they seem to check out. i could of course hook up a jlink'd board...
Gotta head home - following this issue (curious how it turns out)
@gentle bronze hi im around for another 2 or 3 hours if you need help with UART
@ladyada ah thanks, I will ping you if needed. But uart is simple enough, no worries. Just need to know where to put thing :)
ok no problem! yeah we did not have it before, but it is not a hard device i think, compared to i2c or spi. not as many options
hardest part is probably the timeouts
Good morning! Two quick questions: 1) How do I reset the rotaryio? I want it only to count from 0 to 9
position = encoder.position
if position > 9:
position = 9
if position < 0:
position = 0
is there something like encoder.reset()?
Question 2) I see a picture of the M4 with an SD card slot. Where can I get one?
Thanks!
While working on uart, @arturo182 is it ok now if I remove the macro that use the jlink cdc instead of native cdc. That option is there for you only :)
position = position & 0x0F
position = position & 0x07
(in pseudo-code)
If you can tolerate an exact power of two, that's an easy way to reset a counter.
can you do text on TFT displays?
@velvet oasis Where do you see this picture of an M4 with a SD slot?
@upbeat plover As far as I know, at this time, the only way is to use bitmapfont -- there is a n old guide here with lots of out of date information, but the installation of the bitmapfont module should still work. https://learn.adafruit.com/micropython-displays-drawing-text?view=all#software
import rotaryio
import time
from board import *
enc = rotaryio.IncrementalEncoder(D1, D2)
last_position = None
while True:
position = enc.position
if last_position == None or position != last_position:
print(position)
last_position = position
is the example listed in readthedocs
So you're going to do something to enc.position as there's no source code support for resetting it other than assigning it a new value.
(it does look like there is write-support for enc.position; it does not seem to be read-only)
@upbeat plover What hardware are you using? Boardaand TFT? I have some examples that work on a feather_m0_express with the 2.4 inch tft
Sorry - I have not gotten the joypad wing working yet and I don't have a Hallowing. Theya re a different chipset than the displays I have used so my examples will not be useful. Hoepfully others can help -- I know @slender iron has been doing a lot of work to add display control especially for the hallowing.
will it work with 3.0.2 cp?
i was able to use the RGB lib, to draw squares and change background colors and stuff
Good luck ! It works wit the ILI9431 TFTS, but I have no idea if it will work wit the ones you have.
thanks ill give it a go
FWIW - here is the exampel I use -- may help you get started ```
import time
import busio
import digitalio
from board import *
from adafruit_rgb_display import color565
import adafruit_rgb_display.ili9341 as ili9341
import bitmapfont
Configuratoin for CS and DC pins (these are FeatherWing defaults on ESP8266):
CS_PIN = D9
DC_PIN = D10
Config for display baudrate (default is 32mhz, about as fast as the ESP supports):
BAUDRATE = 1000000
MAXROW = 240
MAXCOL= 320
Setup SPI bus using hardware SPI:
spi = busio.SPI(clock=SCK, MOSI=MOSI, MISO=MISO)
Create the ILI9341 display:
display = ili9341.ILI9341(spi, cs=digitalio.DigitalInOut(CS_PIN),dc=digitalio.DigitalInOut(DC_PIN), baudrate=BAUDRATE)
display.fill(0)
with bitmapfont.BitmapFont(240,320,display.pixel) as bf:
try:
column=0
row=0
while(True):
bf.text('tft',row,column,color565(255,0,255))
row=row+10
if(row>=MAXROW):
row=0
display.fill(0)
column=column+20
if(column>=MAXCOL):
column=0
time.sleep(5)
except:
pass
finally:
pass
awesome
your mileage may vary ๐
that demo just writes tft then moves down a row and over a few colums and keeps writing tft -- control-C to exit
@indigo wedge @tulip sleet this should be != to assert right ? https://github.com/adafruit/circuitpython/blob/master/ports/nrf/supervisor/serial.c#L60
@gentle bronze I think so, and this is for the '832 uart which is dedicated to talking to the USB-serial chip, right?
yeah, it is
think I might report the error in a different way. I'm confused as to why this works at all in the current build
doing the busio, I think we could remove the jlink cdc option for nrf52840
assert with no debug build do nothing
aha, i see, let me look for a better way to hang or report an error
if ( NRFX_SUCCESS != err ) {
mp_raise_msg_varg(&mp_type_AssertionError, translate("error = %08lX "), err);
}
I current used this for busio uart, let's me know if there is a better way
oh, that's wrong
but serial_init() is called really early, before the CircuitPython VM is really set up
but I think it won't assert on NRFX_SUCCESS so that's why it worked
ah, I see the problem ๐
i would say don't even bother to check the return value
that's not good practice
does NRFX_ASSERT hang in a loop if DEBUG is enabled?
i think it does a MP assert which does a exception
#define NRFX_ASSERT(expr) ((expr) ? (void)0 : __assert_func(__FILE__, __LINE__, __FUNCTION__, #expr))
#else
#define NRFX_ASSERT(expr)
#endif ```
void MP_WEAK __assert_func(const char *file, int line, const char *func, const char *expr) {
mp_printf(&mp_plat_print, "Assertion '%s' failed, at file %s:%d\n", expr, file, line);
__fatal_error("Assertion failed");
}
#endif```
in atmel we hang in a loop, so that you can do a stack trace in the debugger
void NORETURN __fatal_error(const char *msg) {
HardFault_Handler();
while (true) {}
}
right
is that from atmel or nrf port?
it's from root main.c
ok, that's good, so do that. @gentle bronze in general follow the practice of whatever the atmel port does
if you think the atmel practice is bad, fine to file an issue, but let's make it consistent for now
serial_init() is called in main.c after boot.py is run
yeah, I will change the NRF_ASSERT() so that we can use it easier. we don't really need to check the value before calling assert
@indigo wedge no, because you might want to set up serial in an usual way, disable USB serial
// By default our internal flash is readonly to local python code and
// writable over USB. Set it here so that boot.py can change it.
filesystem_writable_by_python(false);
run_boot_py(safe_mode);
// Start serial and HID after giving boot.py a chance to tweak behavior.
serial_init();
etc. boot.py might do all kinds of config things of disabling, enabling, redirecting, etc.
i see
e.g redirect serial to tx/rx pins, etc. (not that we have that now)
Which cdc do you mean?
the jlink cdc that uses the hwuart on pca10056 CFG_HWUART_FOR_SERIAL
https://github.com/adafruit/circuitpython/blob/master/ports/nrf/supervisor/serial.c#L35
Yes, it's fine to remove that :)
@tidal kiln Ping me when you're around.
@idle owl i'm here but doing forum stuff
Did the LSM9DS0 PR get tested?
Yes
no. i don't have the hw.
Ok
I probably do somewhere. I'll hold off on reviewing
@tidal kiln And the guides have been updated from this issue?
http://circuitpython.readthedocs.io/en/latest/docs/design_guide.html#sensor-properties-and-units Currently have accelerometer and magnetometer and gyroscope, verify there are not more past that. Ne...
Forgot to paste. Oops.
that. i guess.
guide updates are essentially different issues
the pr fixed the code issue, so close.
that's my thinking at least. i was just using the issue thread as a place to put reminders for updating the guides, and what guides, etc.
@umbral dagger We made a change to the function names in LSM9DS0 to match the design guidelines. See: https://github.com/adafruit/Adafruit_CircuitPython_LSM9DS0/issues/4 . You will need to update your guide to match: https://learn.adafruit.com/adding-an-accelerometer-to-you-cricket-featherwing/code - Please let me know when you've completed it.
http://circuitpython.readthedocs.io/en/latest/docs/design_guide.html#sensor-properties-and-units Currently have accelerometer and magnetometer and gyroscope, verify there are not more past that. Ne...
@tidal kiln You're correct. I was combining things in my head. I'll make another issue.
just for guide update? wondering if github is best place for doing that?
@idle owl on it
@idle owl I'm failing to see the problem. The constructor and accelerometer use jives with the lsm9ds0 driver in github.
@tidal kiln I think it is. It's a good place to track any related things to the lib.
@umbral dagger updates haven't been released yet. so it's not in bundle version.
@umbral dagger It's acceleration in the lib...
ok. I was going from what was linked from the bundle.
Ah ok. You had me confused as well ๐
I see it now.
accelerometer -> acceleration
magnetometer -> magnetic
gyroscope -> gyro
PR submitted
Done! Thanks!
np
@idle owl would it be possible to do a release of the HCSR04 for pypi? https://github.com/adafruit/Adafruit_CircuitPython_HCSR04
@prime flower In the middle of something at the moment.
@tidal kiln Do you have an LIS3DH not attached to a CPX? And a few minutes to check something for me...
@idle owl probably. let me see if i can dig it up...
@idle owl bingo! got hands on a PID2809
Beautiful.
Wire it up to something with INT connected to D9 (Feather is what I have, not sure everything has a D9) using I2C
Then try this. Double-tap it and see whether it responds like it should in the serial console.
which feather? i'll try and match
can match that also. let me know.
ok do 3.0.0
For me it's missing a double-tap every so often, but it's not returning multiple Trues on any of them. Missing them every so often is kind of expected I suppose.
The issue was that it was returning multiple Trues before.
seems to be working ok?
Adafruit CircuitPython 3.0.0 on 2018-07-09; Adafruit Feather M0 Express with samd21g18
>>> import lis3dh_test
Tapped!
Tapped!
Tapped!
Tapped!
Tapped!
Ok
yah, kind of misses, but i think that's expected
Then I guess we resolved the issue with the int pin but never bothered to test the update.
Good enough, thank you
not getting multiple Tapped! from one event
not getting Tapped! from a single tap
Oh.
so, yah, guess it works?
yep. was just trying other possible failure modes.
other than it missing sometimes, i'm not seeing anything odd
I tested single-tap too. But I upped the threshold, which I remember we had to do
seems to work
Lower threshold it seems to detect the bounceback and return multiple True
hmmm. isn't there some kind of time window parameter also....
meh
@tidal kiln Can you test SPI as well? Seems to be working for me.
but i'd have to hook up another cable
Yah... no worries. I think we fixed it. I'll close the issue.
jk. hold....
Holding.
oh. AND CS. two cables!
The nerve of me!
should i switch to D6 for int like the code, or keep using D9?
swap it
two cat paw thumbs up!
Adafruit CircuitPython 3.0.0 on 2018-07-09; Adafruit Feather M0 Express with samd21g18
>>> import lis3dh_test_spi
Tapped!
Tapped!
Tapped!
Tapped!
Tapped!
woah cat thumbs! Way better than human thumbs.
anyone knows this function got called, or it is called by system board_uart
https://github.com/adafruit/circuitpython/blob/master/ports/nrf/board_busses.c#L108
maybe in a hour? want to get through some forum stuff.
No problem. Sounds good.
want me to ping you?
Sure.
ah ha, I figured it out, it is the default constructor some sort :D
@idle owl @tidal kiln mind looking at https://forums.adafruit.com/viewtopic.php?f=60&t=139728&start=15 for me?
Sure.
thanks!
In theory anyway....
From https://github.com/adafruit/Adafruit_CircuitPython_CircuitPlayground/issues/40
@caternuson says:
Agree, I think it's going to be something lower level than CPX. I can recreate with this:
import array import math import time import board import digitalio import audioio speaker_enable = digitalio.DigitalInOut(board.SPEAKER_ENABLE) # Generator thing def sine_sample(length): tone_volume = (2 ** 15) - 1 shift = 2 **...
@slender iron i can't recreate issue. there are several posters and several linked codes, etc. i think i tried them...
code.py output:
Traceback (most recent call last):
File "code.py", line 4, in <module>
File "adafruit_crickit.py", line 56, in <module>
MemoryError: memory allocation failed, allocating %u bytes```
the robot code:
Adafruit CircuitPython 3.0.0 on 2018-07-09; Adafruit CircuitPlayground Express with Crickit libraries with samd21g18
>>> import robot_test.py
the code that virtualbrooklyn posted:
Adafruit CircuitPython 3.0.0 on 2018-07-09; Adafruit CircuitPlayground Express with Crickit libraries with samd21g18
>>> import cpx_crkt_ir_test
the code that acknak posted:
Adafruit CircuitPython 3.0.0 on 2018-07-09; Adafruit CircuitPlayground Express with Crickit libraries with samd21g18
>>> import cpx_crkt_ir_test2
@tidal kiln I've been helping the person at the end
hmmm. maybe it's with how i'm testing?
ยฏ_(ใ)_/ยฏ
I grabbed the demo code from the guide that the last person linked.
And I get that.
Presumably as soon as a signal is received because it doesn't fail until the controller-code-CPX is in IR range.
@idle owl you're testing this code?
https://learn.adafruit.com/cpx-ir-infrared-hand-gesture-robot-control-glove/robot-code
No nm, it fails regardless.
Yes.
Two CPXs, running 3.0.2, most recent lib bundle as well.
that's what i put in robot_test.py
Debug is on so I can see things printed out since I don't have a robot to control.
Let me kill debug.
Same thing.
code.py output:
Traceback (most recent call last):
File "code.py", line 4, in <module>
File "adafruit_crickit.py", line 56, in <module>
MemoryError: memory allocation failed, allocating 84 bytes```I got a number this time.
Deleted PyCharm's little folder, and I get failed 84 bytes every time now.
and i still get nothing:
Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.
code.py output:
i'm not generating any IR signals though
Failing here: from adafruit_motor.servo import Servo, ContinuousServo
with debug on:
Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.
code.py output:
Failed to decode: ('10 pulses minimum',)
Failed to decode: ('10 pulses minimum',)
Failed to decode: ('10 pulses minimum',)
so i take it it's running
I'm not getting that. Apparently yes.
let me try with 3.0.2
Ok
Adafruit CircuitPython 3.0.2 on 2018-09-14; Adafruit CircuitPlayground Express with Crickit libraries with samd21g18
>>>
and then...
Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.
code.py output:
Failed to decode: ('10 pulses minimum',)
Failed to decode: ('10 pulses minimum',)
so i dunno
hmm.
@idle owl wanna talk libs now?
Yeah sure
So, I've successfully used the circuit python AVR programmer library that @meager fog wrote (i guess?) to program my attiny85. Super cool, and easy.
My question now is - has someone designed a feather wing PCB for this, essentially so I can have a low budget: https://www.sparkfun.com/products/11801
I mean, I have it all hand soldered on a massive breadboard, but... sure would be nice if it was a tidy little thing with a DIP socket...
I have all the essential parts sitting around, just not the wing PCB design for the 6 traces...
@sharp rain we have sold this for many years: https://www.adafruit.com/product/46. But the CPy AVR programmer is just wires and a socket, as far as I see: no extra microcontroller needed (as is included with the USBTinyISP or the SparkFun thingie). So you just need to wire a socket to the appropriate pins. You could just use a Featherwing Proto for that: https://www.adafruit.com/product/2884
@tulip sleet oh sweet. also thanks for the pointer on the cpy avr lib, so easy ๐
- Merge latest 3.x (3.0.2) changes and fixes into master. This includes UART additions and fixes, PWM fixes, UART long-lived buffer, NeoPixel timing fixes.
- Add pca10059 as a board to build regularly.
- Reorganize board build lists.
make translate
Library driver needed for sensor.
Library/driver needed for this sensor.
Library/driver needed for sensor.
Library/driver needed for sensor.
sample rate of 350ksps.
Also added an error check of sample rate.
Fixes #1196
anyone around to review ๐ ?
I can pull that, build and test on the CPX that failed last night? Would that be helpful?
I pulled the UF2 and got these errors
Traceback (most recent call last):
File "main.py", line 20, in <module>
File "adafruit_circuitplayground/express.py", line 594, in play_tone
File "adafruit_circuitplayground/express.py", line 620, in start_tone
File "adafruit_circuitplayground/express.py", line 574, in _generate_sample
TypeError: extra positional arguments given
Do I need to pull changes to the libraries?
@slender iron - shouldn't those changes have been frozen in?
built it from your branch
did you make sure submodules are up to date? what does git status show?
cloned your repostitory, then checked out the branch from that PR
hrm
bill@MSI:~/tannewt/circuitpython$ git status
On branch wrong_playback_frequency
Your branch is up to date with 'origin/wrong_playback_frequency'.
nothing to commit, working tree clean
`git submodule update --init --recursive
what is on your circuitpy drive?
Nothing much - no libs, just what I needed to run that example last night
hrm, what version were you using last night?
it should be like 3.0
let me put back the old UF2 and make sure it furns
ah, it could be the version number
yep, the old UFT works.
UF2 that is...
Ok, how do I get this build then?
Want to share the UF2? Is that adequate?
what does git describe --tags give you?
v1.9.3-2273-g655f22391
yeah...thats the micropython tag, no?
did the git describe change?
I got the tags
kk
I saw it get the tags
k
I was thinking about your sound bug (while this builds)
I think the issue was when it chose the 1x prescaler
heh, thats what its fixing
Given that we know the audio will be between 20-20K, can't we just choose a prescaler?
Good!
I'm not nuts
But it could keep up when it was using the 2x?
the datasheet has a misleading clock limit in it that we followed in 3.x but not 2.x
Sounds are not jumping around (yay) - I can't tell if they're accurate - you want me to play 440 and hit my piano?
I was measuring with a saleae
No failures and it definitely is not jumping around
its pretty close and varies a bit with the internal clock calibration
Yay you!
๐
Is everything running faster? Or just the DAC?
nah, atom
atom... will it use etags/ctags?
ยฏ_(ใ)_/ยฏ
I was thinking about making a video every once in a while about "ancient incantations" like 'ctags/etags'
๐
I've been using Emacs & etags for 25+years... and it saves my butt when I need to figure out a new code base
basically it gives you an early version of intellicode
Alt-. jumps to the function call
'tag-query-replace' will replace a string in every file in the entire source tree
ya, I'm bad about using that
It's like magic
vim users will tell you VI does the same (it does), but that's not the point of sharing this - it's for the young folks who can't work effectively when they are editing text on Linux
pca10059 is broken because build_adafruit_bins.sh isn't fully updated to build it as nrf. Thanks for the merge!
@raven canopy are you waiting for me on the frequency stuff?
not necessarily. i know there are pressing matters (hallowing, etc)
i'm looking at in now
๐
how so?
MC interrupt isn't used
according to the DS and what i've seen, any capture regardless of the EVACT will set the MCx intflag...
but trigger a count on an event isn't a capture
hmm...that makes sense. and is probably where i'm going wrong on using COUNT. So disable the TCEI and CAPTEN?
k. i can give that a shot after dinner.
and ignore MC0 in the interrupt handler and just read the count
sorry it took so long for me to look. have a good dinner!
yep. and...i apologize; that code is dirty with all the old stuff still in it.
no worries. like i said, i understand priorities. ๐
np, no sense in cleaning it if you are experimenting
do you want all that DPLL1 stuff moved over to peripherals? well, better question, do you want to be able to turn DPLL1 on/off elsewhere?
not yet, lets wait until we do low power stuff
k. that just limits M4 use to boards with a crystal, since we can't setup the gclk generator without syncing.
I don't think I count as a reviewer with write access, but I pulled Scott's code, built it, ran it on the CPX that failed with the current 3.0 build and his fix worked.
which, i don't think there are crystalless M4 yet anyway...
we don't use the crystal yet anyways afaik
this is what i'm basing that thought on: https://github.com/adafruit/samd-peripherals/blob/master/samd/samd51/clocks.c#L111
why not use the 32k clock for the reference's GCLK? not sure why you need the dpll
thanks for the review comment @tough flax !
i tried. it locks up waiting for the sync...
ah, hrm
this is only available inside clocks.c: https://github.com/adafruit/samd-peripherals/blob/d0dcba251c27f629c0a89b5ced4433dd0a609ca3/samd/samd51/clocks.c#L55
how close does it get if the FREQM uses the open loop dpll?
which is why i was going to move it. ๐
with FREQM, the lower values were comparable to M0. but, in the higher range it was farther off than without it.
yeah (to without dpll). which i think is a result of having the FREQM check the frequency during get_item instead of the interrupt.
hrm seems like it should be the same reading from the FREQM
Same interface as being discussed here?
https://github.com/adafruit/Adafruit_CircuitPython_MPR121/issues/1
datasheet said something like 46 - 49 MHz. so, at a higher frequency capture, the clock shifts between the time the capture is recorded and get_item is called, and manifests larger swings. the math just isn't as smooth when dealing with 48000000 / 135 vs 48000000 / 134. at least, that's my theory...
how does the reading change after its recorded?
its not that the reading changes. its that DFLL's frequency may have changed by the time get_item is called: https://github.com/sommersoft/circuitpython/blob/frequency_in_count/ports/atmel-samd/common-hal/pulseio/FrequencyIn.c#L433
I think you are getting too fancy with that
ignore the fact that the dfll isn't perfect
haha. i rarely get accused of fancy. ๐
๐ assume it's 48mhz and measure the external signal against it
later we could add a way to provide a reference clock signal
that's how it was done originally. and jepler noted the inaccuracy and swing (i saw it too).
its not important for most cases like the light sensor
get it going first with the basics and then allow jepler to provide a reference clock
k. i think the addition of the controller clock is very value added. allows a much higher range. thanks for that suggestion.
totally, its interesting but not important for first pass
kitchen timer finally went off... ๐ฝ
byeee!
@tannewt (or whoever), I think I'd like to go ahead and add a module for this. It's trivial - just one method that checks whether there is input available on the console. In theory, it should be temporary as the updated async IO code would replace it. However, I think there are some use cases (including two of mine now) where this one feature is blocking other solutions.
So, the question is where this code should live. My first thought was under ports/atmel-samd... but then I saw that ...
@slender iron @idle owl deja vu:
https://forums.adafruit.com/viewtopic.php?f=60&t=141135
seems very similar to the one from earlier. i can't recreate this one either.
Will there be a way to get a UART interface "on top of" the console? That is, will we be able to use these IO methods to talk to the USB Serial port (ala input() / print())?
If so, I'd like to offer to help test/debug this effort (point me at the right person please). If not, I think I'll add the "usb_bytes_available" module that Scott requested instead of the input() timeout.
Bill
anyone use the CP dotstar library?
I can't seem to assign colors as anything other than a tuple of ints. I was under the impression you should be able to use a tuple of floats as well
Iโve only ever set them to 0-255 ints. Of course you can scale and cast your floats if needed
I think there is a bug on line 160 of the library; it seems to be assuming that the value passed to set the color is a tuple
It is a tuple. (Red, Green, Blue)
not always, I don't think
0-255 each
value can be one of three things:
a (r,g,b) list/tuple
a (r,g,b, brightness) list/tuple
a single, longer int that contains RGB values, like 0xFFFFFF
brightness, if specified should be a float 0-1
Humph. Ok. Iโve written my own hex code to tuple function
I think I see the bug/fix; I'll take a look after I get some quality time with these foster kittens ๐ป
Nordic testing is a bit higher than us for write speed (different tool can be a bit different), but seem like write speed will be somewhat 1/10 of read speed. We may not improve it much with pca10056.

I have one of these; is anyone else looking at working on this?
@dhalbert the default uart for pca10056 should be P0.8 and P0.6 instead of P1.1 & P1.2. It is connected to jlink cdc allow for quick testing. Furthermore if jlink cdc is not connected, those pins are in tri-state, which is safe to use with other device. Please let me know if I missed something.
https://github.com/adafruit/circuitpython/blob/master/ports/nrf/boards/pca10056/mpconfigboard.h#L49
Ah, I see, seem like you want to keep the pin compatible with Arduino layout :D . Sorry, didn't realize that until I check the pcb
Hiya Scott, not yet but I'm working on rearranging the micropython-style
code as it currently is into the circuitpython shared-modules style.
I'll get some work done on this tomorrow ...
-----N
@hathach right, exactly.
@dhalbert @tannewt should the self->buffer is freed in common_hal_busio_uart_deinit() , or we can just leave it to gc
https://github.com/adafruit/circuitpython/blob/master/ports/atmel-samd/common-hal/busio/UART.c#L217
Leave it to gc. It is allocated by gc_alloc() as a regular garbage-collectable object.
ah thanks, this new to me, I will just skip the free for nrf52 as well.
@siddacious Nope! Please assign this to yourself if you decide to begin work on it. If you don't have access to do that, let me know and I'll assign it to you. Thanks!
@tidal kiln Hmph.
@idle owl memory allocation thing?
Yes
hmph indeed
My first instinct is to blame the Crickit lib, but it's worked for most of this all along, so...... (To be fair, my first instinct is always to blame the CPX lib too, and it's essentially the same thing.)
also - i can't repeat the issue
ยฏ_(ใ)_/ยฏ
and that's two cases doing the same thing
I managed to get it to fail, remember?
how about that second one?
Haven't tested it. I have a Thing to do first.
Ok, no worries.
On Wed, Sep 19, 2018 at 4:03 AM Nick Moore notifications@github.com wrote:
Hiya Scott, not yet but I'm working on rearranging the micropython-style
code as it currently is into the circuitpython shared-modules style.
I'll get some work done on this tomorrow ...
-----Nโ
You are receiving this because your review was requested.Reply to this email directly, view it on GitHub
https://github.com/adafruit/circuitpython/pull/1164#issuecomment-422758434,
...
@ATMakersBill That's the idea in #231. We'll have UART like interface for the second USB CDC connection.
b0dd645 Retune neopixel timings on SAMD51. They were to... - tannewt
2e80f37 Merge pull request #1096 from tannewt/tune_neop... - dhalbert
e1b4e9b UART: Always allocate UART objects in the long-... - jepler
b0e33f6 atmel-samd: UART: allocate rx buffer in long-li... - jepler
cac760a Merge pull request #1080 from jepler/uart-ll - tannewt
I couldn't find a reference. I just tried it and verified with the Saleae.
@prime flower Did you do the PyPi setup on HCSR04?
@idle owl Yeah
@prime flower In setup.py, you didn't change packages=['adafruit_hcsr04'] to py_modules=. packages is only valid when the driver files are multiple files found in a directory. When it's a single .py file in the root directory, you need to change it to py_modules. The last step before creating a PR for the PyPi setup, is to run python3 setup.py sdist to test. It failed when I ran it. If you're going to complete the PyPi setup in the future, please be sure to test it by running that before creating the PR. Travis will pass on the PR because it isn't attempting to deploy it to PyPi yet. On release, it would have failed if I hadn't tested it first. You can also run python3 setup.py install to verify further.
so it should have been py_modules=[adafruit_hcsr04]
and then run a verification to test install
Yes
hey @idle owl, is this still a good reference?
https://learn.adafruit.com/porting-an-arduino-library-to-circuitpython-vl6180x-distance-sensor/overview
You're welcome.
@pastel panther It's ... okay. It covers the basic concept but it doesn't really explain how to make something truly CircuitPython. I think it's all we have though. I would say use it, but bear in mind that what you port needs to be CircuitPythonified, not simply ported.
Do you have a good before/after example of an arduino'd vs CPy'd driver?
@slender iron For adding CircuitPythonLibrarians to a repo, the team needs write access, right?
ya
@pastel panther Hmm. Good question. I feel like probably but I don't know of one off the top of my head. Seems like something we should have though. @slender iron Any ideas for this one?
Example of a well-ported-from-Arduino CircuitPython-lib
not any one thing
ok yeah same
the design guide has some tips
I used the Trellis and VEML6070 Arduino libraries to port over...
thanks @raven canopy
@slender iron @tulip sleet some recent info added: https://forums.adafruit.com/viewtopic.php?f=60&t=141135
and for reference, there's also this one:
https://forums.adafruit.com/viewtopic.php?f=60&t=139728&start=15
works if imported but not as code.py?
@slender iron Trying to run adabot. I'm missing something. I feel like I'm supposed to run something before I run adabot, and I can't remember what.
Says Traceback (most recent call last): File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/runpy.py", line 85, in _run_code exec(code, run_globals) File "/Users/kattni/repos/adabot/adabot/circuitpython_libraries.py", line 26, in <module> import requests ModuleNotFoundError: No module named 'requests'
enable venv?
I'll go over the design guide and give it a first pass
@pastel panther look at the PR reviews on Trellis. Scott had some good CircuitPythonic points on that.
@raven canopy Ah yes, of course! Good idea
@slender iron Oi, yes. Thanks. Isn't there some other thing too though? Now it's failing KeyError: 'login' which I think was some other command to run.
yessss
Hmmmm... second CDC? Will that show up as a second COM port (or tty on Linux)? If so, will there be a way to differentiate the two?
@pastel panther the biggest TLDR is probably the use of @property instead of getter/setter funcs.
@idle owl @tidal kiln Longshot on the CPX Crickit problem: compare bootloaders?
@raven canopy hmmm. ok will ask for the info.
FWIW, this is me:
UF2 Bootloader v1.21.0 SFHR
Model: Feather M0
Board-ID: SAMD21G18A-Feather-v0
Forgot where to find that
Yeah..like I said. ๐
yours is one louder
Yes, it would be a second COM or tty port, and distinguishing them is probably going to be a problem. In Windows 10 it would just be another "USB Serial Device", unless we had the user install drivers, but we've been trying to get away from that given that Windows 10 has innate usbser.sys support. On Windows 7 we would need to add the USB PID to our current driver list, so it would be identifiable in Device Manager. Linux would be another /dev/ttyACM<n>.
@tidal kiln @idle owl latest bootloader is v2.0.0-adafruit.5 if you want to try updating: https://github.com/adafruit/uf2-samdx1/releases
@tulip sleet think that could matter for that issue?
@tulip sleet have you tried current master on a feather_nrf52832 yet? it seesm to have bricked mine...
ah - nevermind -- it was an SD mismathc -- the nrf Bootlader loads SOFTDEV 6..1.0 -- the CP build uses 2.0.1
it works if they are consistent.. set both to 2.0.1 ---
@tidal kiln I don't actually think so
hmm - there is no SD-s132 SOFtDEV - 6.1.0 -- it gets very confusing
is confusing the theme of the day?
for the thread where they are using a feather:
UF2 Bootloader v1.18.0 SFHR
Model: Feather M0
Board-ID: SAMD21G18A-Feather-v0
@tidal kiln i'm reading the forums posts now
awesome. thanks.
@tidal kiln how about importing crickit as the very first thing? Also, neopixel is frozen in, but the frozen version won't be used if it's in lib/ or elsewhere on the path. If crickit is imported first, it will change sys.path to have .frozen first. And/or just remove or rename the neopixel lib on the filesystem
Ok, a separate PID would work. Also, I believe you can set the "Name" field in the descriptor (it's currently just
Name : USB Serial Device (COM30)
Both lsusb on linux and PowerShell on Windows can extract that name
That name (in Windows) is set by the (built-in_ driver). I'm not sure giving a name in the USB descriptor will show up on Device Manager.
@tulip sleet that seems to have worked for the feather one
Press any key to enter the REPL. Use CTRL-D to reload.
soft reboot
Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.
code.py output:
Ranger ON
Interesting - I know that when I plug things and look at them in Arduino they have the device name - I assumed that was sent in in the Name field... perhaps there's a lookup table for the PID?
@tidal kiln my guess is that JP had no lib/ directory
Here's what Windows (PowerShell) can see easily about a Serial Port... perhaps we can control something in here:
__GENUS : 2
__CLASS : Win32_SerialPort
__SUPERCLASS : CIM_SerialController
__DYNASTY : CIM_ManagedSystemElement
__RELPATH : Win32_SerialPort.DeviceID="COM30"
__PROPERTY_COUNT : 47
__DERIVATION : {CIM_SerialController, CIM_Controller, CIM_LogicalDevice,...
code.py output:
Traceback (most recent call last):
File "code.py", line 1, in <module>
File "adafruit_crickit.py", line 57, in <module>
File "adafruit_motor/motor.py", line 90, in DCMotor
MemoryError: memory allocation failed, allocating %u bytes```
Even with Crickit first.
From the other issue, not the new one
I haven't tested the new one
Simply plugged in the CPXs from yesterday
hmmm. yah. all the imports are built ins. let me try that too...
@tulip sleet bingo! put crickit import back to last, deleted lib folder, and it works.
switching to CPX....
This washing machine is running really close to full -- any more clothes and it overflows
That seriously sounds like a code phrase.
Like it needs a code response: "There are no more clothes to add, everything is clean."
The oak trees in the ravine have twelve squirrels. Pass it on.
@tidal kiln Now I get this with the Crickit build Auto-reload is on. Simply save files over USB to run them or enter REPL to disable. code.py output: Traceback (most recent call last): File "code.py", line 4, in <module> File "adafruit_crickit.py", line 373, in <module> RuntimeError: SDA or SCL needs a pull upI suppose I need to have it on a Crickit?
yep
blergh. ok ok. Travis is being a jerk anyway. I'll go find my Crickit.
hmmm. i still can't get the CPX one to show the issue...
Adafruit CircuitPython 3.0.2 on 2018-09-14; Adafruit CircuitPlayground Express with Crickit libraries with samd21g18
>>>
soft reboot
Auto-reload is on. Simply save files over USB to run them or enter REPL to disable.
code.py output:
Failed to decode: ('10 pulses minimum',)
@tulip sleet @gentle bronze @indigo wedge before I file an issue - I thought I'd just ask here -- What is the recommended SOFTDEVICE for the feather_nrf52832 Board.? The nrfBootloader builds an s132 - 6.1.0 Softdevice and loads it t by default with make sd but the CP build defauls to s132-2.0.1 and there is no file for s132-6.1.0. Just curious what is recommended and should they be made consistent?
@solar whale as of c135c7f they all should be 6.1.0. Where is 52832 2.0.1 set? We should fix that, I believe
Now it's doing this: Auto-reload is on. Simply save files over USB to run them or enter REPL to disable. code.py output: Traceback (most recent call last): File "code.py", line 58, in <module> File "adafruit_irremote.py", line 217, in read_pulses MemoryError: memory allocation failed, allocating 512 bytes
I see - the .ld file is 2.0.1. Probably need to wait for @gentle bronze to wake up and comment. The newer versions are bigger and there may be a space issue.
@tulip sleet I think it is in a few places -- -- here https://github.com/adafruit/circuitpython/tree/master/ports/nrf/boards/feather_nrf52832 but also in ports/nrf/drivers/bluetooth there is no s132-610 file after downloading the files
anyone want to help contribute to the micropython based esp32 badge for open hardware summit?
there is only an s140-6.1.0
it'll be fun I swear
what kind of contributions are you thinking about, if the badge is ready?
we have 300 badges that are been shipped to boston today I think
I have a proto and one of the latest on my desk
@tulip sleet I'm happy to wait for @gentle bronze to look into it -- I had been using sd132 and 5.0.0 on the nrf52832. When I built the latest master - something got confused and the board is not at all happy when the SD does not match! - for now, I went back to 2.0.1 and it is all working. I know its undergoing rapid change and just wanted to know how best to proceed.
@solar whale @tulip sleet 2.0.1 is the offical version for S132. Last time when we discussed whether we should drop the v2 support and migrate to v5/v6 for nrf52832. @indigo wedge want it as part of his new ble API, so I just leave the S132 as it is. Didn't touch it since then
the bootlaoder s132 v6 in the bootloader repo is meant for using with Arduino repo
it is dual purpose, you can either flash arduino or cpy
can we make the SD be part of the CircuitPython image, or does it have to be flashed separately (or is it already part of it and I am worrying about nothing)?
@gentle bronze ah -- that makes sense -- @tulip sleet you can load the SD from the CP repo now
nevermind -- I misunderstood your question
I'll just stay with 2.0.1 until someone says to upgrade -- thanks. -- just rememebr to flash the SD from the CP repo and not the Bootloader repo.
@tulip sleet it is possible, just need to make sure setting/config memory is right. if thing go wrong it could easily brick the feather board.
I have an issue to allow update sd using uf2 in bootloader repo
actually, I think update SD via uf2 make more sense than making it as part of CP
but ideally if SD is included then if/when it's updated it will be part of the CPy uf2 so people don't have to download two things and make sure they are in sync.
did we wake you up ๐
time is 0223 in vietnam
no, I am doing uart io, the nrfx uart behaves in a way I didn't understand, weird, uart is supposed to be easy
๐ฆ
too many discord alerts !!
if SD could be update via uf2
then include it as part of the CP or not, is your choice
your can bundle both cpy and sd within a single uf2
I think
i thought SD was just another thing that is flashed, but if uf2 depends on it... Or maybe it's an issue of doing an update over BLE
uf2 only need usb, only OTA require the SD
though, bootloader only needs a bit of tweak
what I mean is you can upgrade SD using msc uf2 file
and a uf2 file can be composed of CPY and SD
currently bootloader doesnt allow to write to SD region.
@gentle bronze thanks for explanation
@stuck elbow just pulling together disparate pieces and making a final image
@gentle bronze yes, thanks -- I hope you get some sleep soon!
@tulip sleet can you file an issue on bootloader repo, list what you want to achieve there. It is possible, just take time to make sure it is done right
i'll talk with scott about this too, to make sure I understand all the issues. will be seeing him tomorrow
thse may be related
@stuck elbow nah just vanilla micropython with some hacks
@stuck elbow guess it would be hard to help without the hardware
@tulip sleet in short, pre-built bootlaoder come with a version of SD. cpy make can choose to combine SD + CPY in to a single firmware.uf2 to flash
@scenic jetty an esp32 board is easy to get
while Arduino will only flash the application.
don't worry if you have to flash SD over and over, the bootloader will just skip the flash page that already hs the same contains.
@stuck elbow well the webserver side could but done with an esp32 board
so you are actually don't flash anything within the SD.
@stuck elbow drew wants to be able to provision/update the board via a webserver
why not the existing OTA update for micropython?
@gentle bronze can arduino work with multiple versions of the SD, or is it tied to one?
how much time you have? the ota update feature took half a year to develop, iirc
@tulip sleet it has a drop down menu for use to pick, they must upgrade bootloader+SD to work. From v2 to v5 the whole SD API is not compatible
the size is the first simple thing, the API parameter are all different
worst, even the SVC number, the one that nordic used to execute SD function is changed as well
but can you choose V2 vs V5 vs V6 in Arduino, that is, choose the one you want to match your code requirements? Or is the BSP tied to a particular version?
yeah
user can choose now using the IDE, it will pick the different ld file
and run a different set of API and thus software flow as well.
sounds good
but in the next major version of arduino BSP, user will need to flash the latest bootloader to run with latest bsp
I won't be able to maintain both software flow
we keep both v2 and v5 option back since that was the first time we allow user to upgrade bootloader + SD
which can easily brick and lead to support headache. Arduino user normally don't own jlink to recover
@stuck elbow send me some info about the OTA feature and I will take a look
i can understand not being able to continue supporting the old ones
@scenic jetty ouch
@stuck elbow yeah I have been very busy and no one else seems to have ran with the software
as most of micropython, the ota update stuff is very poorly documented
Arduino user is screaming since I am hiding the whole time :))
I never used it myself, but it was one of the kickstarter goals
@scenic jetty https://github.com/micropython/micropython/issues/2535
and from that https://forum.micropython.org/viewtopic.php?f=16&t=3262
no idea how that applies to esp32
@gentle bronze Thank you for taking the time to clear things up.
@solar whale np, I should make it clearer for you at first ๐
@tulip sleet let me know if there is anything I can do to help -- I have been building/testing master with the 3.x merges on various boards. othere then the confuison with the nrf52832, no problems yet. metro m4, gemma_m0, itsybitsy_m0, nrf52840 dongle and now feather_52832 all OK
note to self - and anyone who cares -- when going from Arduino to CP on an esp8266 -- erase the chip first!
my alias: alias esp8266-upload='esp8266-erase; esptool.py --baud 460800 write_flash 0'
I'd use && instead of ;
@solar whale helped me get text to display on hallowing but its upside down? how can i fix it? is there a way to change the pixel update order? was think it might flip it if it wrote the opposite direction
@idle owl I don't know if this is your travis issue, but sphinx 1.8.0 was released, and it breaks travis. We had to put a version restriction into the circuitpython .travis.yml files. But I thought the libraries did not run sphinx themselves?
@tulip sleet I don't think that's the problem here.
It's making it through all of that part
in case anyone is wondering, the toolchain works on Bionic. and good lord, building in VM is soooo much slower. ๐
OK, this is quite possibly an "I'm being blind and not seeing it" question, but what's the current "gold standard" for drawing text on a tft featherwing? I was using https://github.com/adafruit/micropython-adafruit-bitmap-font but it's giving me the incompatible .mpy failure and I'm not seeing where else to go at the moment.
What is the best tutorial or readable example of how to write and compile C language modules for execution as importable modules under Circuit Python?
@lunar crown there is a lot of boilerplate to add C language modules. See circuitpython/shared-bindings for the common code, and then in each port (e.g. ports/atmel-samd), see common-hal. If the C code can be shared across ports, see examples of that in circuitpython/shared-module/
OK, so, found the problem. bitmapfont is not good for 3.X, but works with 2.X.
Hi folks. If this is the wrong forum let me know. I have a Circuit Playgroud Express Developer Edition. Is that compatible with the current circuit python code for the CPE?
@sand blade Yup, it sure is
Depending on when you got it, you'll probably want to update the version of circuit python on it to the latest release
do you have both files?
@tulip sleet Thanks. I'll start reading.
@lunar crown like Dan said, definitely study shared-bindings and the common-hal. but, for a "condensed" version of the process, there are a couple PRs open adding modules/sub-modules. #839 and #1144.
@tidal kiln @pastel panther I have flashed https://github.com/adafruit/circuitpython/releases/download/3.0.2/adafruit-circuitpython-circuitplayground_express-3.0.2.uf2
@sand blade I would make sure you have a copy of the blinky code off the device, delete both files, and then copy it as main.py
try removing the usb cable and then replacing it, then trying again
If you can connect to the REPL with a serial console, it will report any errors to you if there are some
https://learn.adafruit.com/welcome-to-circuitpython/kattni-connecting-to-the-serial-console
Once you connect, CTRL+D will restart the code and display any errors
@sand blade Also just to check, paste the main.py here within some back ticks like so
```
code here
```
and there is nothing in the REPL I could not get the blink sketch to print anything out.
Youre seeing the REPL prompt?
I did not see that prompt. In mu-editor when I press the serial button it brings up REPL, right?
ok. it is balking at from adafruit_circuitplayground.express import cpx
in main.py
incompatible .mpy file
I am off to look up adafru.it.....
The libs you have were probably built for an older version of CP; you'll need to get an updated set:
https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases/tag/20180919
3.0 version i presume
and just copy them to the lib directory
yes. As I have now read that page๐
@pastel panther @tidal kiln thank you for your help!
did you get it working?
Just for my understanding, if you update to a new minor version of circuit python you are not changing any of the /lib files
yes
@tidal kiln yes. it is working now.
circuitpython and the non-builtin libs are two separate things
got it!
so yes, if you update the firmware, the libs, like the ones in the /lib folder, do not change
some "libraries" are built in though, they're called core modules:
https://circuitpython.readthedocs.io/en/latest/shared-bindings/index.html#core-modules
which ones are included depends on the hardware
gamepad is only for the gamepad...
gamepad SAMD Express, nRF
yep
but also express vs. non-express, which refers to the external SPI flash some boards have
ok good to know
OK. now on to figuring out what is wrong with my python install on my other computer ๐
thanks again!
np. good luck!
mu-editor is incompatible with python <=3.5.2 apparently
What makes you say that?
@sand blade Mu should work with 3.5. How are you installing it..?
@charred lake @plucky flint I used pip3 install mu-editor and when I installed python3.6 and linked my python3 to python3.6 mu-editor no longer threw the error about the undefined symbol. I forget what the bug report # is but there was a thread on the wiki about it.
Yup.. that's a bug in PyQt5. We're waiting for them to fix it and then Mu will work.
@tidal kiln if you have a chance --- look at https://forums.adafruit.com/viewtopic.php?f=57&t=141222 -- I just want to make sure I answered correctly. Are the M0 basics now shipping with a UF2 bootloader? Nice if they are.
crazy - was just reading that!
@solar whale looks fine. i think they're just confused about bootloader vs. firmware.
ah -- do they ship with CP now as well?
oh - because it's the somewhat olderish "basic proto" board?
right, they used to ship with the arduino bootloader and you have to use bossac to load CP or load the uf2 bootloader manually.
I have not bought one i a long time...
me neither. the one i did get was like you said.
hmmmm. good point.
and i don't know - would have to ask
let's just see what they say, either way it'll work with arduino
"they" = the forum poster
yup - if they are shipping with UF2 and CP - I can see how it might confuse someone using arduino. Not a problem, but a "feature" ๐
there's only a .bin version of the CP firmware for the m0_basic in current releases
i'd think if it was shipping with UF2 bootloader, dan/scott would be building a release for it as well
agreed -- checking build script
the build script genrates the uf2s
ah -- that is for master 4.0 -- not 3.x
The linker script (foo.ld) will show if it's skipping over the bootloader or not.
@timber mango its just a question of whether the .uf2 is being build as well. I think the Makefile always builds it for SAMD -- just a question of whether it is copied to the release at this time.
Well, it'd be inconsistent to not offer .UF2 if there was any expectation of use of the target, as shipped, for CircuitPython.
agreed -- if the m0 basics are now shipping with CP installed, then the .uf2 should be in the release as well.
OTOH when someone asks it's probably not hard to whip one together for them. ;)
I don't know how to overwrite a bootloader (I do in principle I suppose).
I just don't remember things well enough now. Everything I get from Adafruit Just Works. /sheepish grin
you can load the bootlaod using the bossac tool.
I thought there was some unlocking required to protect the bootloader from novices. ;)
looking at my notes -- been awhile...
It looks like the process has changed since I did it last -- best to check with @tulip sleet - two questions -- is the M0 basic now shipped with UF2 and CP, and, if so, for an older version what is the correct way upgrade to the UF2 bootloader?
when they had that foo-foo-rau about arduino.cc vs arduino.not-cc I think there was a recipe to update your bootloader to the friendly one.
for the sadmd21 I "think" the bootlaoder does it all.. the samd51 was an issue early on, but I think it is all hidden away now.
all I know is i got the uf2 bootlaoder on an adalooger- basic m0 somehow...
looks like dan gave us an .ino option
// Bootloader update sketch. Paste into Arduino IDE and upload
// to the device to update bootloader. It will blink a few times
// and then start pulsing.
// Your OS will then detect a USB mass storage device.
#include <stdint.h>
const uint8_t bootloader[8192] __attribute__ ((aligned (4))) = {0xd8, 0x2d, 0x00, 0x20, 0x89, 0x02, 0x00, 0x00, 0x85, 0x02, 0x00, 0x00, 0x87, 0x02, 0x00, 0x00,
.
.
yes -- that was what I meant by - something changed -- sounds great!
That's where I got that .ino from
So if you already have a good .UF2 he provides an upgrade path using it. But if you don't, you aren't left out in the cold -- there's the .ino which would have been the earlier platform (Arduino IDE).
They both use PA24 PA25 for USB - Feather M0 Basic and Feather M0 Express. Bootloader should be Express-agnostic here. ;)
@tidal kiln @solar whale as far as I know we are not shipping non-Express boards with a UF2 bootloader. I haven't built any that identify themselves in INFO_UF2.TXT as being for Feather M0 Basic, etc. The other question is whether the poster actually has Feather M0 Basic or Express.
@tulip sleet thanks!
@tulip sleet thanks -- thats interesting. BTW -- if I wanted to go to a uf2 bootloader on an basic m0 -- do I just load the .ino sketch via arduino now? I thought I loaded a .bin via bossac in the past, but it was a long time ago and my notes are bit vague.
@tidal kiln @solar whale querying limor as we speak
double thanks
@tidal kiln @solar whale ok, in fact about four months ago, the Feather M0 tester code was updated to ship with a UF2 bootloader and CircuitPython ! (still version 2.3)
maybe Metro M0 as well.
ah-ha!
probably the same hw issue that I encountering. The first 2 irq uart request will fail miserably without real reason. UART is not too easy after all ~.~
https://devzone.nordicsemi.com/f/nordic-q-a/33677/nrf52840-pin-uart-rx-bug
so may be time to add the .uf2s to the releases
definitely Basic
@nova stag not sure what you mean. You can load CircuitPython onto a huzzah breakout board.
I meant if I got a circuit python board and an esp8266 breakout could I connect the circuit python board to the internet and use adafruit IO
Oh nose, my computer sprung a leek!

What I have done is connect via UART (TX/RX). On the ESP8266 it just acts like you are typing into the REPL -- then I have a program on the ESP8266 that sends input to AIO. Crude, but it works.
@hathach that devzone post is very confusing. I wonder if that's the PDK board.
Heya @kattni, I got the arduino demo working last night so I'll take a pass at this over the weekend. Can you assign it to me?
@dhalbert that is what I am seeing here as well with my board. At least I know why it doesn't work out the way I think. Using bare-metal is much easier for busio in comparison with the nrfx_uart. Though, I am getting it done by just ignoring first 2 irq error
@dhalbert If you have time, I could push the code for you test there before I clean them up.
i could try it with a GPS
You don't need extra hw to test since only the write() work now. The bug prevent me to do subsequent receiving since it failed at the begining.
here is the code
https://github.com/hathach/circuitpython/blob/nrf52_uart_io/ports/nrf/common-hal/busio/UART.c#L75
board.UART() will call the first nrfx_uart_rx() which will trigger error 4 (frame error) ---> nrfx will cancel transfer internally.
Just run u.read() : this will printf the previous error and call nrfx_uart_rx() again.
Then call...
Are you using UART or UARTE?
I asked for more info in that DevZone case.
UART since the rest of repo use it. UARTE is just having DMA to move data into buffer, not really needed for cpy I guess. Also the DMA demands data must be on the SRAM, flash address (i.e global const [] ) won't work. I am not sure if cpy use any of those.
What exactly is the error you are getting? Is this relevant? https://devzone.nordicsemi.com/f/nordic-q-a/37521/nrf52840-usb_cdc_acm-uart/145013#145013
I saw one DevZone case that recommended using UARTE over UART in nrf52832, but now I can't find it again.
error 4 (frame ) then error 8 (break). oh way, I think I found my own error lol, let's me test a bit more.
facepalm, I just assign the txd 2 time :( . That is high price to pay here ~.~ . Working late is not good at all lol
https://github.com/hathach/circuitpython/blob/nrf52_uart_io/ports/nrf/common-hal/busio/UART.c#L108
no problem, but time to sleep!
Do you prefer UARTE to UART, I could upgrade it to UARTE. Though, you must make sure all data is in SRAM not flash, and we must malloc buffer if needed. I think it is not really gain much benefit, since the uart is slow, cpu time for moving data is not much at all.
No, I don't prefer, just thought that UARTE might not have the problem, and now it's moot.
@indigo wedge The template nrfx_config.h files have a couple #defines for workarounds for Rev1/Rev2 nRF52832 and '840 errata. But they are not turned on, and they're not in our own nrfx_config.h. I'm adding them, but is there some reason not to?
// Turn on nrfx supported workarounds for errata in Rev1/Rev2 of nRF52832
#define NRFX_SPIS_NRF52_ANOMALY_109_WORKAROUND_ENABLED 1
// Turn on nrfx supported workarounds for errata in Rev1 of nRF52840
#define NRFX_SPIM3_NRF52840_ANOMALY_198_WORKAROUND_ENABLED 1
They look pretty serious: nRF52832 can have corrupted DMA transfers, and '840 can send bad data on SPIM3.
welcome to nrf prph errata ๐
I saw a reference elsewhere that they might be enabled in the SDK (but maybe not in nrfx).
@gentle bronze yeah, these are painful, especially the PDK USB bugs. SAMD51 has DFLL and DPLL bugs which make it not possible to lock it to the crystal oscillator
there is also i2c bug with nrf51 back then I remembered :D. Nordic doesn't use well tested prph IPs, which is why it is cheap ๐
TWIM0 and TWIM1 are the same peripherals as SPIM0 and SPIM1. The IRQ handlers for these peripherals are set up at compile time, using some #define logic. and renaming. So out of the box TWIM0/SPIM0 and TWIM1/SPIM1 cannot be shared between common-hal/busio/I2C.c and SPI.c.
We could write an interrupt handler that checks whether it's being used for SPI or I2C, nrfx uses weak references for the interrupt handlers, so it's possible to override them without modifying nrf. But for now two...
uart io should be done, I will hook an GPS wing to test tomorrow. Phew, too much time for the easy uart. Hopefully there is no more bugs :D
shouldn't the github bot be showing these updates in the github-feeds channel ?
I dont think that one shows issue comments
@feral aspen we post adafruit/circuitpython issues, comments and merges here, since they are directly relevant
I'm rethinking UARTE vs UART: Advantage of UARTE is that there are two instances on '840, so we can have more than one UART channel. I understand the issue of of EasyDMA not working from flash, though we can copy to RAM.
Also UART is deprecated, though I don't understand how significant that is. If there were a 58x0 after the 5840, maybe they'd drop UART?
Fixes #1163.
- Allows allocation of TWIM0 and TWIM1 on nRF52832.
- Allows allocation of SPIM2 on nRF52832.
- Allows allocation of SPIM3 on nRF52840. SPIM3 is allocated first because it's higher speed (32 MHz).
- We could conceivably allocate SPIM0 and SPIM1, but we have to fix the IRQ handlers, which are defined at compiled time, depending on whether SPIM0 or TWIM0 (or SPIM1 or TWIM1) i use.. So I didn't because two SPIs is probably enough. See https://github.com/adafruit/circuitpython/...
OK so I'm continuing to make progress on moving these across to a "shared-bindings" type of layout for CircuitPython. The good news is that this will bring networking to other CircuitPython ports as well, really anything which supports SPI should support the W5500 and if its got enough memory then LWIP too.
Progress is at another branch:
https://github.com/nickzoic/micropython/tree/circuitpython/nickzoic/703-wiznet-5500-samd-shared-bindings
No problems, I will make the switch. the flow is similar to what I am doing anyway. IRQ vs DMA only has diff that cpu must move the data manually. But I think I will test what I have first before switching. I will also update the serial.c as well. currently serial.c use polling method, so there should be no impact at all.
DMA can be a bit faster even when we poll because it runs even when the cpu
is handling an interrupt.
On Fri, Sep 21, 2018 at 7:13 AM hathach notifications@github.com wrote:
No problems, I will make the switch. the flow is similar to what I am
doing anyway. IRQ vs DMA only has diff that cpu must move the data
manually. But I think I will test what I have first before switching. I
will also update the serial.c as well. currently serial.c use polling
method, so there should be no ...
655f223 Clock the SAMD21 much faster so it can actually... - tannewt
af7a0ee Merge pull request #1202 from tannewt/wrong_pla... - dhalbert
e527495 Merge remote-tracking branch 'adafruit/3.x' int... - tannewt
a9d094a Fix translations - tannewt
839b791 Merge pull request #1204 from tannewt/merge_3x - kattni
@tannewt yeah, I am moving it to uarte now.
Hi Guys, this there a way to get the adafruit STMPE610 working with raspberry pi zero?
@reef plume It's been setup in PyPi, you can pip3 install the driver. However we haven't tested it yet or verified it.
Yeah should be
Ok great!
On Fri, Sep 21, 2018 at 6:03 PM hathach notifications@github.com wrote:
@tannewt https://github.com/tannewt yeah, I am moving it to uarte now.
โ
You are receiving this because you were mentioned.Reply to this email directly, view it on GitHub
https://github.com/adafruit/circuitpython/issues/1039#issuecomment-423623498,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AADNqUL0aV9z9JozlgoucG6T0-u5eUl8ks5udSntgaJpZM4VS-Px
.
I have a 16 neopixel ring and I found that if I connect it to the nrf52840 Dongle on Pin P0_31 or P1_15 it works fine, but on Pin P0_02 it does not. No error is thrown, bit the neopixels just don't light up.
From the data sheet P0_02 is also AIN0. Could that be relevant?
I am using VDD to power the ring.
I also tried a 7 neopixel "jewel" with the same result.
Is there something "special" about P0_02?
I tried the same test on feather nrf52840 DK PCA10056 with the neopixel ring connec...
@reef plume are you trying to use the I2C or SPI interface to the STMPE610 on the RPi?
@reef plume I just tried the I2C interface in an RPi and it works -- will try SPI next
@reef plume SPI works as well
is the Feather nRF52840 unreleased?
@pastel panther I have not seen one yet -- not sure if there are prototypes out there
Ok, I was just going by the docs for 4.x:
https://circuitpython.readthedocs.io/en/latest/ports/nrf/README.html#tested-hardware
I have a feather nRF52 Pro; is that the latest?
That is an nrf52832
right
the PCA10056 Dev Kit and nrf52840 Dongle from nordic are the only 52840s I have.
Are they the stand ins for testing a 52840 adafruit board or just generally planned to be supported? I'm just looking to help testing and I'm totally out of the loop
the notes say only the PCA10056 has been tested ... but some works has been done with teh Dongle baord.
I don't know if they will be supported down the line. I would not expect the DK to continue but it would be nice to support the Dongle.
The DK is kind of a beast -- fun to play with, but not something to build a project with.
yea, it looks.... substantial
nice - with the built-in JLink!
That's nice!
@idle owl FYI- I ran a quick test of the STMPE610 on a Raspberry Pi (3b+) via Blinka and it worked with both the SPI and I2C interfaces - yay! Blinka is a great tool!
Blinka is a tool now?
Not sure what to call it. Magic ๐
Blinka is a library. it allows CP libs to be used on SBCs like Pi:
https://learn.adafruit.com/circuitpython-on-raspberrypi-linux/overview
@pastel panther @solar whale nrf52840 feather is in the works, we have some draft designs but I haven't gotten a prototype myself yet
@solar whale Thank you!!
So I'm at a loss: How can I go about installing the Adafruit's NeoPixel library on Raspberry Pi? I know how to do it on an Adafruit board, such as the Playground Express, you just put the mpy file inside of the lib folder in the "CIRCUITPY" drive... But how would I go about doing that on a Raspberry Pi? I already installed and use CircuitPython on Raspberry Pi... I'm just not too sure on how to insall the NeoPixel library itself.
I've tried searching forums, Adafruit's learning pages, etc... Can't find any information on that.
@charred lake you install the library via pip3 pip3 install adafruit-circuitpython-neopixel. Also if I recall correctly, you will need to access the neopixels as root, that is, run your program to use the neopixels as sudo.
@solar whale Okay perfect, yeah I figured it may be with pip3, but I had no idea what the name of the package was... Thank you for the help; yeah I'm a seasoned Linux user and dev, but new to Python and CircuitPython ๐
Mostly used Perl, now moving to Python.
Thanks again!
Is there a way to see the package names such as "adafruit-circuitpython-neopixel" using pip3? Or is there a list somewhere? I was trying "pip3 install neopixel", and different names and got nothing. I couldn't find any information on that either.
pip3 search circuitpython
You're welcome. Good luck!
Thanks again!
Bringing this to the circuit python version too https://twitter.com/all_about_code/status/1043267512220012544?s=19
Hi i'm struggling to get circuitpython running on a "factory fresh" SAMD21 - can anyone help?
@lime trellis Do you have a bare chip or a dev board of some sort?
@pastel panther I have custom boards I've spun, but I'm just trying to flash an old feather M0 before I try my boards
tried using BOSSA, which hung as soon as I tried to write. Then I tried to erase and flash a new bootloader with Atmel studio 7 (which usually always gets me out of a bind)- but that fails as well
Do you have a jlink?
yep
You'll want to build the uf2-samd bootloader and use your jlink to load it
I believe it's bossa compatible as well
I tried flashing "adafruit-circuitpython-feather_m0_basic-3.0.1.bin" with no luck
Trying to find a url; I've been working from a checkout for the lat while
Where is the bin from ?
did you figure it out? I'm happy to help more; I've got CP on a number of my own custom boards
nope still no luck
the feather m0 USB is now connecting/disconnecting repeatedly (guess that means it sees it? haha)
what happens when you double tap the reset button?
nothing- doesn't seem to want to go into bootloader mode
Here's what I've done; I made a checkout of this repo:
https://github.com/adafruit/uf2-samdx1
and copied the trinket m0 board directory and updated the board_config.h to match the pinout for where I had my dotstar.
Then built it and flashed the .bin using my jlink and JLinkExe's loadbin
I should be able to flash the feather m0 with stock adafruit bootloader... right?
I don't know what 'the stock adafruit bootloader' means
let me dig up the exact link
the .bin I have came from here: https://github.com/adafruit/circuitpython/releases/tag/3.0.2
I'm not positive, but I don't think those are bootloaders
I see... haha!
hmm.. well I can't even talk to this feather m0 via jlink. didn't know it was possible to brick these!
It should be recoverable; Sometimes you need to remove/replace the jlink
Try this; I just built it
I would suggest using JLinkExe
getting "InitTarget(): PCode returned with error code -1"
Does the board have power?
yep for sure has power
I'll go solder up the SWD pins on another feather and try your bootloader.bin on that
did you give removing and replacing the jlink a try? maybe seems stupid but it's worked for me in the past
yeah tried that a couple times now- also tried restarting atmel (also seems to help sometimes)
fwiw it's meant for a feather m0 express because it's expecting there to be a neopixel on PA06 but that shouldn't matter; you should at least be able to get it into bootloader mode
maybe try closing atmel?
in case they're fighting over the jlink
yeah I figured it should at least take the bootloader
but thanks again for the help @pastel panther! I'll report back with how it goes ๐
๐
You'll get it working sooner than later; I got my bare chip working with almost no experience; it's not rocket surgery
๐ yep I'll get it!
@solar whale im trying the i2c interface on the RPI
hmm - I just hooked up my scope and there is no signal going out on P0_02. It looks like it is "floating" near 0V.
I tried just setting it manually high or low and no response. P0_31 responds as expected.
False alarm -- I hooked up another Dongle and it works on P0_02!! :-(
Its not a simple soldering problem on the board - I checked right at the pad, bit for some reason taht Dongle does not talk to P0_02.
Closing this since it appears to be a HW issue.
@lime trellis stock bins won't work without a bootloader since they aren't located at location 0
make sure you have a bootloader or make your own build that assumes there isn't one
I have had to recover a couple boards with an arduino zero's atmel ice which does some reset magick that jlink doesn't. if you turn off the swd pins in code things can get tricky. our circuitpython bins shouldn't do that though
does circuit python have the dict part of classes incorporated? I could not get it to work
I am making some a classes for python and I wanted to make my class where the user can add their own variable to it, this is done with the add method (using kwargs for many at a time). then try to update self.dict with the new keywords from kwargs but the serial output says my object does not have that attribute.
if not is there any way so when someone adds a new variable to the obje...
Even normal Python's classes don't need to have a __dict__ โ that is an internal detail which you shouldn't be relying on. Instead you should use getattr and setattr for getting and setting attributes that you have specified as strings.
does anyone know which file to flash the Feather M0 Bluefruit LE with? i cant find a specific bluefruit on on the github page
@real mauve use the feather m0 basic. There is no support for BLE with the M0.
ok, thanks
Still work in progress, sorry for not being able to do it faster.
- Carlos
did CircuitPython add time.sleep to micropython?
that might not be clear.
i'm trying to see why CircuitPython has it and some version of Micro doesn't
see the for/pass pause loop in this fpga project : https://twitter.com/cr1901/status/1043559312717766656
@teal bear I don't think pass has anything to do with the time module.