0

Is there a non-Express Feather nrf52840 board selection opti
Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.

Is there a non-Express Feather nrf52840 board selection opti

by gallaugher on Sat May 08, 2021 9:26 pm

Hi,
I've been able to run a simple sketch getting a soldered strip of neopixels to light in red. However, when I try to leverage Jiri Praus's code on a feather NRF52840 I get the following error: "Error compiling for board Adafruit Feather nRF52840 Express". The board I've selected for both compiles is Feather nrf52840 Express. I'm using the non-express Feather nrf52840, but the Adafruit nrf52 Boards submenu in the Arduino IDE doesn't offer a non-express version. The simple compile worked fine with this setting. Am I missing a simple install? Sorry if I'm missing something basic.

For reference, here's the very simple code I've used, selecting the "express" version, but which worked as expected:
https://gist.github.com/gallaugher/147a43162d72580e99754b216d2b880b
and here is Jiri Praus's more complex code. This is the first code where I've tried using the GY-MAX30100 Heart Rate Monitor that I've wired in (above code, which doesn't use the monitor, otherwise works fine w/monitor wiring).
https://gist.github.com/gallaugher/a5aab6a22a1f6bdc6dc2de3be3c295bd

For context, I'm building a Feather version of Jiri's Heart of Love wire frame pulsing heart project.
https://www.instructables.com/Beating-LED-Heart/
Everything is ready for final solder in, but don't want to do this 'til I get the code working. Hoping I can figure a way through this for Mother's Day. Thanks!

gallaugher
 
Posts: 196
Joined: Tue Aug 14, 2018 12:42 pm

Re: Is there a non-Express Feather nrf52840 board selection

by blnkjns on Sun May 09, 2021 1:48 am

The code from Jiri, was it written for a nRF52840 as well?
What errors do you get?

blnkjns
 
Posts: 615
Joined: Fri Oct 02, 2020 3:33 am

Re: Is there a non-Express Feather nrf52840 board selection

by jerryn on Sun May 09, 2021 7:18 am

What board are you using? Can you post a link? The Feather nRF52840 is an "express" board. https://www.adafruit.com/product/4062
I don't see a "non-express version".

jerryn
 
Posts: 1466
Joined: Sat Sep 14, 2013 9:05 am

Re: Is there a non-Express Feather nrf52840 board selection

by gallaugher on Sun May 09, 2021 9:31 am

Hi,
re: Feather nrf52840 - Oh, I see. I expected to see the word "Express" on the stencil, but I guess all Feather nrf52840s are Express.

re: code:
When I run the basic sketch I refer to above this is the output in red:
"Upgrading target on /dev/cu.usbmodem14401 with DFU package /private/var/folders/tc/g76c1n1n4pnfkrh895wmy_gm0000gn/T/arduino_build_984424/light_up_D12.ino.zip. Flow control is disabled, Single bank, Touch disabled
########################################
#######################################
Activating new firmware
Device programmed."

All 9 LEDs are lit as per photo.
Praus Heart-small.png
Praus Heart-small.png (965.47 KiB) Viewed 81 times


But when I run Jiri Praus's code (also linked above), written for the Arduino, this is what I get:
"Arduino: 1.8.13 (Mac OS X), Board: "Adafruit Feather nRF52840 Express, 0.3.2 SoftDevice s140 6.1.1, Level 0 (Release)"

In file included from /Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/NeoPixelBus.h:114,
from /Users/gallaugh/Desktop/heartRate/heartRate.ino:1:
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h: In static member function 'static void NeoArmOtherSpeedBase<T_SPEEDPROPS>::send_pixels(uint8_t*, size_t, uint8_t)':
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:765:9: error: 'Pio' was not declared in this scope
765 | Pio* port;
| ^~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:765:14: error: 'port' was not declared in this scope
765 | Pio* port;
| ^~~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:766:18: error: 'WoReg' does not name a type
766 | volatile WoReg* portSet;
| ^~~~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:767:18: error: 'WoReg' does not name a type
767 | volatile WoReg* portClear;
| ^~~~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:768:18: error: 'WoReg' does not name a type
768 | volatile WoReg* timeValue;
| ^~~~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:769:18: error: 'WoReg' does not name a type
769 | volatile WoReg* timeReset;
| ^~~~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:775:9: error: there are no arguments to 'pmc_set_writeprotect' that depend on a template parameter, so a declaration of 'pmc_set_writeprotect' must be available [-fpermissive]
775 | pmc_set_writeprotect(false);
| ^~~~~~~~~~~~~~~~~~~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:775:9: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:776:41: error: 'TC3_IRQn' was not declared in this scope; did you mean 'RTC2_IRQn'?
776 | pmc_enable_periph_clk((uint32_t)TC3_IRQn);
| ^~~~~~~~
| RTC2_IRQn
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:776:9: error: there are no arguments to 'pmc_enable_periph_clk' that depend on a template parameter, so a declaration of 'pmc_enable_periph_clk' must be available [-fpermissive]
776 | pmc_enable_periph_clk((uint32_t)TC3_IRQn);
| ^~~~~~~~~~~~~~~~~~~~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:778:22: error: 'TC1' was not declared in this scope
778 | TC_Configure(TC1, 0,
| ^~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:779:13: error: 'TC_CMR_WAVE' was not declared in this scope
779 | TC_CMR_WAVE | TC_CMR_WAVSEL_UP | TC_CMR_TCCLKS_TIMER_CLOCK1);
| ^~~~~~~~~~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:779:27: error: 'TC_CMR_WAVSEL_UP' was not declared in this scope
779 | TC_CMR_WAVE | TC_CMR_WAVSEL_UP | TC_CMR_TCCLKS_TIMER_CLOCK1);
| ^~~~~~~~~~~~~~~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:779:46: error: 'TC_CMR_TCCLKS_TIMER_CLOCK1' was not declared in this scope
779 | TC_CMR_WAVE | TC_CMR_WAVSEL_UP | TC_CMR_TCCLKS_TIMER_CLOCK1);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:778:9: error: there are no arguments to 'TC_Configure' that depend on a template parameter, so a declaration of 'TC_Configure' must be available [-fpermissive]
778 | TC_Configure(TC1, 0,
| ^~~~~~~~~~~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:780:9: error: there are no arguments to 'TC_Start' that depend on a template parameter, so a declaration of 'TC_Start' must be available [-fpermissive]
780 | TC_Start(TC1, 0);
| ^~~~~~~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:782:19: error: 'g_APinDescription' was not declared in this scope
782 | pinMask = g_APinDescription[pin].ulPin; // Don't 'optimize' these into
| ^~~~~~~~~~~~~~~~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:784:9: error: 'portSet' was not declared in this scope
784 | portSet = &(port->PIO_SODR); // burn a few cycles after
| ^~~~~~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:785:9: error: 'portClear' was not declared in this scope; did you mean 'bitClear'?
785 | portClear = &(port->PIO_CODR); // starting timer to minimize
| ^~~~~~~~~
| bitClear
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:786:9: error: 'timeValue' was not declared in this scope; did you mean 'timeval'?
786 | timeValue = &(TC1->TC_CHANNEL[0].TC_CV); // the initial 'while'.
| ^~~~~~~~~
| timeval
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:787:9: error: 'timeReset' was not declared in this scope; did you mean 'timerisset'?
787 | timeReset = &(TC1->TC_CHANNEL[0].TC_CCR);
| ^~~~~~~~~
| timerisset
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:808:26: error: 'TC_CCR_CLKEN' was not declared in this scope
808 | *timeReset = TC_CCR_CLKEN | TC_CCR_SWTRG;
| ^~~~~~~~~~~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:808:41: error: 'TC_CCR_SWTRG' was not declared in this scope
808 | *timeReset = TC_CCR_CLKEN | TC_CCR_SWTRG;
| ^~~~~~~~~~~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:828:9: error: there are no arguments to 'TC_Stop' that depend on a template parameter, so a declaration of 'TC_Stop' must be available [-fpermissive]
828 | TC_Stop(TC1, 0);
| ^~~~~~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h: In instantiation of 'static void NeoArmOtherSpeedBase<T_SPEEDPROPS>::send_pixels(uint8_t*, size_t, uint8_t) [with T_SPEEDPROPS = NeoArmOtherSpeedPropsWs2812x; uint8_t = unsigned char; size_t = unsigned int]':
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:86:29: required from 'void NeoArmMethodBase<T_SPEED>::Update(bool) [with T_SPEED = NeoArmOtherSpeedBase<NeoArmOtherSpeedPropsWs2812x>]'
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/NeoPixelBus.h:189:9: required from 'void NeoPixelBus<T_COLOR_FEATURE, T_METHOD>::Show(bool) [with T_COLOR_FEATURE = NeoGrbFeature; T_METHOD = NeoArmMethodBase<NeoArmOtherSpeedBase<NeoArmOtherSpeedPropsWs2812x> >]'
/Users/gallaugh/Desktop/heartRate/heartRate.ino:28:14: required from here
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:775:29: error: 'pmc_set_writeprotect' was not declared in this scope
775 | pmc_set_writeprotect(false);
| ~~~~~~~~~~~~~~~~~~~~^~~~~~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:776:49: error: 'pmc_enable_periph_clk' was not declared in this scope
776 | pmc_enable_periph_clk((uint32_t)TC3_IRQn);
| ^
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:779:72: error: 'TC_Configure' was not declared in this scope
779 | TC_CMR_WAVE | TC_CMR_WAVSEL_UP | TC_CMR_TCCLKS_TIMER_CLOCK1);
| ^
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:780:17: error: 'TC_Start' was not declared in this scope
780 | TC_Start(TC1, 0);
| ~~~~~~~~^~~~~~~~
/Users/gallaugh/Documents/Arduino/libraries/NeoPixelBus_by_Makuna/src/internal/NeoArmMethod.h:828:16: error: 'TC_Stop' was not declared in this scope
828 | TC_Stop(TC1, 0);
| ~~~~~~~^~~~~~~~
exit status 1
Error compiling for board Adafruit Feather nRF52840 Express.


This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
"

gallaugher
 
Posts: 196
Joined: Tue Aug 14, 2018 12:42 pm

Re: Is there a non-Express Feather nrf52840 board selection

by jerryn on Sun May 09, 2021 12:33 pm

Just a guess, but the Neopixelbus library may only work for the nrf52 BLE 33 Nano ---

Code: Select all | TOGGLE FULL SIZE
Supported Platforms

AVR 8 bit Arduino
Esp8266, Esp32, Nano 33 BLE in hardware
Most Arm based Arduinos.


from https://github.com/Makuna/NeoPixelBus/wiki#supported-platforms

jerryn
 
Posts: 1466
Joined: Sat Sep 14, 2013 9:05 am

Re: Is there a non-Express Feather nrf52840 board selection

by jerryn on Sun May 09, 2021 12:43 pm

FYI -- I get similar errors if I try to compile the NeopixelTest sketch from the NeiopixelBus library examples....
Your example code does compile ok for the Nano BLE 33 board.
Sorry to bring bad news.

jerryn
 
Posts: 1466
Joined: Sat Sep 14, 2013 9:05 am

Re: Is there a non-Express Feather nrf52840 board selection

by gallaugher on Sun May 09, 2021 1:30 pm

Oh - well thank you for testing & verifying that I can't run that library on my nrf52840.
I have a Feather Huzzah 32 and a Bluefruit LE feather.
According to the NeoPixel Bus Wiki: https://github.com/Makuna/NeoPixelBus/wiki
Supported Platforms
- AVR 8 bit Arduino
- Esp8266, Esp32, Nano 33 BLE in hardware
- Most Arm based Arduinos.

I've got a Feather Huzzah 32 - https://www.adafruit.com/product/3405
and a Feather M0 Bluefruit LE - https://www.adafruit.com/product/2995
- Huzzah uses an ESP32, correct?
- And Feather M0 Bluefruit usees an ATSAMD21G18 ARM Cortex M0 processor, which is an ARM-based Arduino, correct?

If so - do you think I could use either of these two boards? It'll be work, but I can unwire what I've got & wire in the new board. LMK what you think.

I suspect other two alternatives would be:
1 - try to implement using a simpler library like Adafruit Neopixel (I've not done this, but can try),
or write this in CircuitPython.
But looking at the adafruit learn posts, it seems the only heart rate stuff in python is for BLE. Doesn't look like there is a library for the basic max30100. correct?

Thanks,
John

gallaugher
 
Posts: 196
Joined: Tue Aug 14, 2018 12:42 pm

Re: Is there a non-Express Feather nrf52840 board selection

by jerryn on Sun May 09, 2021 1:44 pm

I did a test compile of your example for the both the Adafruit Feather ESP32 and the Adafruit Feather M0 (for the Feather M0 Bluefruit) and both compiled successfully. That is encouraging
note -- you need the Adafruit SAMD package in addition to the the Arduino SAMD package for the Adafruit Feather M0.
Edited to add: this code does not appear to use BLE at all.

jerryn
 
Posts: 1466
Joined: Sat Sep 14, 2013 9:05 am

Re: Is there a non-Express Feather nrf52840 board selection

by gallaugher on Sun May 09, 2021 1:54 pm

Very kind of you to check this. Thanks!
Yes - I didn't choose these boards for their BLE, rather because they were what I had on-hand that had pass-through charging. I think I'm going to first see if I can write similar .ino code with perhaps the Adafruit Neopixel or other library to see if I can get this replicated. If it appears too daunting, then I'll snip out what I've done & resolder to a new board.
Once again, thank you.

gallaugher
 
Posts: 196
Joined: Tue Aug 14, 2018 12:42 pm

Re: Is there a non-Express Feather nrf52840 board selection

by jerryn on Sun May 09, 2021 1:58 pm

You are very welcome -- Good luck!

jerryn
 
Posts: 1466
Joined: Sat Sep 14, 2013 9:05 am

Re: Is there a non-Express Feather nrf52840 board selection

by gallaugher on Sun May 09, 2021 9:12 pm

I might have discovered another error, but wanted to check before desoldering & moving connections.
I simply connected my my MAX30100 heart rate sensor to the same pins on my Feather M0 Express as Jiri used on his Arduino Nano, but now that I'm learning more, it seems A4 is SDA on the Nano and A5 is SCL. The Feather M0 has separate pins for these. Should I connect the SDA and SCL on the heart sensor to the SDA and SCL on the Feather? And if I do this, the code I'm using uses Wire.h. Do I need to do any special configuration to get this to recognize the right pinouts for SDA and SCL for the Feather M0, or is this something the libraries take care of on their own.
Thanks again for helping me learn as I muddle through this.

gallaugher
 
Posts: 196
Joined: Tue Aug 14, 2018 12:42 pm

Re: Is there a non-Express Feather nrf52840 board selection

by jerryn on Mon May 10, 2021 6:57 am

Yes, I think you want to use the SCL/SDA pins as designated for the Feather M0. The Boards Support Package should handle that correctly.

jerryn
 
Posts: 1466
Joined: Sat Sep 14, 2013 9:05 am

Re: Is there a non-Express Feather nrf52840 board selection

by gallaugher on Mon May 10, 2021 10:33 am

Thx Jerryn. Very basic question - so sorry. I'm currently importing these packages:
#include <NeoPixelBus.h>
#include <NeoPixelAnimator.h>
#include <Wire.h>
#include "MAX30105.h" //MAX3010x library
#include "heartRate.h"

The proper board is selected & code uploads & compiles. Do I need to include any other packages for the Feather M0 or should this straight Arduino code work?
Thanks!

gallaugher
 
Posts: 196
Joined: Tue Aug 14, 2018 12:42 pm

Re: Is there a non-Express Feather nrf52840 board selection

by jerryn on Mon May 10, 2021 11:29 am

Not that I am aware of.
I had to add the NeoPixelBus and MAX3010x libraries on my system to compile your example.
I have a lot of other libraries installed so if you get any compile errors it should be clear what additional libraries you need.
You do need the Adafruit SAMD Boards Support package in addition to the Arduino SAMD Board Support package.
I assume you have that or you would not be able to select the Adafruit Feather M0 as your board.

jerryn
 
Posts: 1466
Joined: Sat Sep 14, 2013 9:05 am

Re: Is there a non-Express Feather nrf52840 board selection

by gallaugher on Mon May 10, 2021 1:40 pm

Got a new MAX30102, wired it up - SDA to SDA, SCL to SCL, power & gnd. Jiri's code runs, but I get a constant IR value is: 0
There isn't a lot of additional code out there. I tried installing the Sparkfun Library for the MAX30102.
Example1_Basic_Readings didn't seem to work with Feather. When I uncommented line labeled:
#define debug SerialUSB //Uncomment this line if you're using a SAMD21
I get an error: "error: 'SerialUSB' was not declared in this scope; did you mean 'Serial'?"

Tried their Example2_Presence_Sensing & I get a "done uploading" message from the IDE, but nothing comes out of the Serial monitor & Arduino Outputs the following in Red, which I find unintelligible:
"Set binary mode
readWord(addr=0)=0x20002dd8
readWord(addr=0xe000ed00)=0x410cc601
readWord(addr=0x41002018)=0x10010305
version()=v1.1 [Arduino:XYZ] May 12 2018 18:17:10
chipId=0x10010005
Connected at 921600 baud
readWord(addr=0)=0x20002dd8
readWord(addr=0xe000ed00)=0x410cc601
readWord(addr=0x41002018)=0x10010305
Atmel SMART device 0x10010005 found
write(addr=0x20004000,size=0x34)
writeWord(addr=0x20004030,value=0x10)
writeWord(addr=0x20004020,value=0x20008000)
Device : ATSAMD21G18A
readWord(addr=0)=0x20002dd8
readWord(addr=0xe000ed00)=0x410cc601
readWord(addr=0x41002018)=0x10010305
Chip ID : 10010005
version()=v1.1 [Arduino:XYZ] May 12 2018 18:17:10
Version : v1.1 [Arduino:XYZ] May 12 2018 18:17:10
Address : 8192
Pages : 3968
Page Size : 64 bytes
Total Size : 248KB
Planes : 1
Lock Regions : 16
Locked : readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
none
readWord(addr=0x41004018)=0
Security : false
Boot Flash : true
readWord(addr=0x40000834)=0x7000a
BOD : true
readWord(addr=0x40000834)=0x7000a
BOR : true
Arduino : FAST_CHIP_ERASE
Arduino : FAST_MULTI_PAGE_WRITE
Arduino : CAN_CHECKSUM_MEMORY_BUFFER
Erase flash
chipErase(addr=0x2000)
done in 1.038 seconds

Write 23076 bytes to flash (361 pages)
write(addr=0x20005000,size=0x1000)
writeBuffer(scr_addr=0x20005000, dst_addr=0x2000, size=0x1000)
[===== ] 17% (64/361 pages)write(addr=0x20005000,size=0x1000)
writeBuffer(scr_addr=0x20005000, dst_addr=0x3000, size=0x1000)
[========== ] 35% (128/361 pages)write(addr=0x20005000,size=0x1000)
writeBuffer(scr_addr=0x20005000, dst_addr=0x4000, size=0x1000)
[=============== ] 53% (192/361 pages)write(addr=0x20005000,size=0x1000)
writeBuffer(scr_addr=0x20005000, dst_addr=0x5000, size=0x1000)
[===================== ] 70% (256/361 pages)write(addr=0x20005000,size=0x1000)
writeBuffer(scr_addr=0x20005000, dst_addr=0x6000, size=0x1000)
[========================== ] 88% (320/361 pages)write(addr=0x20005000,size=0xa40)
writeBuffer(scr_addr=0x20005000, dst_addr=0x7000, size=0xa40)
[==============================] 100% (361/361 pages)
done in 0.158 seconds

Verify 23076 bytes of flash with checksum.
checksumBuffer(start_addr=0x2000, size=0x1000) = ef78
checksumBuffer(start_addr=0x3000, size=0x1000) = c3e6
checksumBuffer(start_addr=0x4000, size=0x1000) = 5305
checksumBuffer(start_addr=0x5000, size=0x1000) = 7be0
checksumBuffer(start_addr=0x6000, size=0x1000) = 22f7
checksumBuffer(start_addr=0x7000, size=0xa24) = 380
Verify successful
done in 0.032 seconds
CPU reset.
readWord(addr=0)=0x20002dd8
readWord(addr=0xe000ed00)=0x410cc601
readWord(addr=0x41002018)=0x10010305
writeWord(addr=0xe000ed0c,value=0x5fa0004)"

Adafruit doesn't have a small heart sensor that would work with this project, but I see Pimoroni supports a python library for theirs:
https://shop.pimoroni.com/products/max3 ... oke-sensor
Repo at:
https://github.com/pimoroni/max30105-python

The git instructions show a pip install. If I try to switch to CircuitPython, would I be able to use a library like this? If not, I think I'm stuck with Arduino & need to figure out how to get this to work with a Feather m0, but there don't really seem to be any decent examples out there.
Google search for: Feather M0 and "MAX301"
gets the ever-so-rare response:
It looks like there aren't many great matches for your search.

I was able to find this example using an Adalogger on Instructables:
https://www.instructables.com/Pulse-Oxi ... Precision/

But when I load the "RD117_ARDUINO.ino" included on my Feather M0 (not an Adalogger), it seems to upload, but I get, again, unintelligible gnarly output that doesn't specifically mention ERROR:
"Set binary mode
readWord(addr=0)=0x20002dd8
readWord(addr=0xe000ed00)=0x410cc601
readWord(addr=0x41002018)=0x10010305
version()=v1.1 [Arduino:XYZ] May 12 2018 18:17:10
chipId=0x10010005
Connected at 921600 baud
readWord(addr=0)=0x20002dd8
readWord(addr=0xe000ed00)=0x410cc601
readWord(addr=0x41002018)=0x10010305
Atmel SMART device 0x10010005 found
write(addr=0x20004000,size=0x34)
writeWord(addr=0x20004030,value=0x10)
writeWord(addr=0x20004020,value=0x20008000)
Device : ATSAMD21G18A
readWord(addr=0)=0x20002dd8
readWord(addr=0xe000ed00)=0x410cc601
readWord(addr=0x41002018)=0x10010305
Chip ID : 10010005
version()=v1.1 [Arduino:XYZ] May 12 2018 18:17:10
Version : v1.1 [Arduino:XYZ] May 12 2018 18:17:10
Address : 8192
Pages : 3968
Page Size : 64 bytes
Total Size : 248KB
Planes : 1
Lock Regions : 16
Locked : readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
readWord(addr=0x41004020)=0xffff
none
readWord(addr=0x41004018)=0
Security : false
Boot Flash : true
readWord(addr=0x40000834)=0x7000a
BOD : true
readWord(addr=0x40000834)=0x7000a
BOR : true
Arduino : FAST_CHIP_ERASE
Arduino : FAST_MULTI_PAGE_WRITE
Arduino : CAN_CHECKSUM_MEMORY_BUFFER
Erase flash
chipErase(addr=0x2000)
done in 1.038 seconds

Write 42356 bytes to flash (662 pages)
write(addr=0x20005000,size=0x1000)
writeBuffer(scr_addr=0x20005000, dst_addr=0x2000, size=0x1000)
[== ] 9% (64/662 pages)write(addr=0x20005000,size=0x1000)
writeBuffer(scr_addr=0x20005000, dst_addr=0x3000, size=0x1000)
[===== ] 19% (128/662 pages)write(addr=0x20005000,size=0x1000)
writeBuffer(scr_addr=0x20005000, dst_addr=0x4000, size=0x1000)
[======== ] 29% (192/662 pages)write(addr=0x20005000,size=0x1000)
writeBuffer(scr_addr=0x20005000, dst_addr=0x5000, size=0x1000)
[=========== ] 38% (256/662 pages)write(addr=0x20005000,size=0x1000)
writeBuffer(scr_addr=0x20005000, dst_addr=0x6000, size=0x1000)
[============== ] 48% (320/662 pages)write(addr=0x20005000,size=0x1000)
writeBuffer(scr_addr=0x20005000, dst_addr=0x7000, size=0x1000)
[================= ] 58% (384/662 pages)write(addr=0x20005000,size=0x1000)
writeBuffer(scr_addr=0x20005000, dst_addr=0x8000, size=0x1000)
[==================== ] 67% (448/662 pages)write(addr=0x20005000,size=0x1000)
writeBuffer(scr_addr=0x20005000, dst_addr=0x9000, size=0x1000)
[======================= ] 77% (512/662 pages)write(addr=0x20005000,size=0x1000)
writeBuffer(scr_addr=0x20005000, dst_addr=0xa000, size=0x1000)
[========================== ] 87% (576/662 pages)write(addr=0x20005000,size=0x1000)
writeBuffer(scr_addr=0x20005000, dst_addr=0xb000, size=0x1000)
[============================= ] 96% (640/662 pages)write(addr=0x20005000,size=0x580)
writeBuffer(scr_addr=0x20005000, dst_addr=0xc000, size=0x580)
[==============================] 100% (662/662 pages)
done in 0.287 seconds

Verify 42356 bytes of flash with checksum.
checksumBuffer(start_addr=0x2000, size=0x1000) = 8a5a
checksumBuffer(start_addr=0x3000, size=0x1000) = 1535
checksumBuffer(start_addr=0x4000, size=0x1000) = 949c
checksumBuffer(start_addr=0x5000, size=0x1000) = be61
checksumBuffer(start_addr=0x6000, size=0x1000) = ad8f
checksumBuffer(start_addr=0x7000, size=0x1000) = 353b
checksumBuffer(start_addr=0x8000, size=0x1000) = 5551
checksumBuffer(start_addr=0x9000, size=0x1000) = 6e9a
checksumBuffer(start_addr=0xa000, size=0x1000) = d4b9
checksumBuffer(start_addr=0xb000, size=0x1000) = be46
checksumBuffer(start_addr=0xc000, size=0x574) = 6fbe
Verify successful
done in 0.057 seconds
CPU reset.
readWord(addr=0)=0x20002dd8
readWord(addr=0xe000ed00)=0x410cc601
readWord(addr=0x41002018)=0x10010305
writeWord(addr=0xe000ed0c,value=0x5fa0004)"

Again, so sorry for being such a n00b and trying to do something others seem to not have tried. I appreciate your patience & advice as I try to figure out a best path forward.
J

gallaugher
 
Posts: 196
Joined: Tue Aug 14, 2018 12:42 pm

Please be positive and constructive with your questions and comments.