Compare commits

..
7 Commits
Author SHA1 Message Date
Earle F. Philhower, III f87ccacdb1 Upgrade to GCC 10.3. Fix OpenOCD packaging (#194)
GCC 10.2 has a bug which causes Windows to rebuild every library on every
compile, instead of caching the first results.

Upgrade to GCC 10.3 which has this fixed.

Add proper OpenOCD executables for non-Linux x86_64 archs.
2021-06-06 22:43:26 -07:00
Limor "Ladyada" Friedandhathach d2a2fcb89d Add a new board - the Adafruit Macropad w/RP2040 (#191)
* add two variant files

* add trinkey and stemma friend

* add fast SPI transfer using pico-sdk blocks

* update makeboards.py for new variants

- STEMMA Friend RP2040
- Trinkey RP2040 QT

* run astyle on SPI library

* fix auto -> ssize type

* astyled

* woops ssizet != sizet!

* a nice day for a new board definition! this is a macropad with 12 keys, oled and rotary encoder

Co-authored-by: hathach <thach@tinyusb.org>
2021-06-06 12:53:06 -07:00
Earle F. Philhower, III c65c4bfb4e Allow continuous tone frequency changes (#186)
Fixes #121
Supersedes #185

Redo the PIO program to allow the tone generator on a pin to be updated
without interruption, at waveform boundaries.  This allows for things like
sirens or slurs to be implemented simply.

Use an alarm, not the PIO hardware, to manage time-limited tones().

Add a simple siren example.
2021-06-04 02:45:13 -07:00
Ha Thach 6431b8157b Add tone music example (#185) 2021-06-04 02:39:04 -07:00
per1234 7d1e83b416 Use optimal bundled library names (#183)
When multiple libraries contain files matching an #include directive in the program, the Arduino build system must pick
one to use for compilation. Multiple factors are used in order to make an intelligent determination of which library is
best.

In order to enhance this determination, the closeness of match between the library.properties name value and the
filename in the #include directive is being added as one of those factors. This new factor is referred to as
"Library Name Priority".

Unfortunately, this change can result in platform bundled libraries which had previously been correctly correctly chosen
no longer being given priority over their equivalent standalone libraries, which may be incompatible or not optimized
for the platform's boards.

This priority inversion only occurs when all the following conditions are true:

- There is a standalone library installed which provides a header filename collision.
- The platform bundled library is architecture optimized (e.g., architectures=esp32).
- The standalone library is architecture compatible (architectures=*).
- The standalone library has equal "Folder Name Priority".
- The standalone library has better "Library Name Priority" (e.g., name=SD vs name=SD(ESP32) for a library with primary
  header file SD.h.

The fix is to simply give the platform bundled library a perfect "Library Name Priority".

Some platform bundled libraries were given a modified name as a workaround to a bug in the Arduino IDE's Library Manager
which caused Library Manager to always show the library as updatable under specific circumstances. That bug was fixed in
Arduino IDE 1.8.6, ~3 years ago.
2021-05-31 07:32:20 -07:00
Earle F. Philhower, III fd685aac82 PANIC on attempting an invalid setXXX pin (#182)
Fixes #169

Trying to change pinout while running, or to an illegal configuration,
will now immediately panic() with an error message.  Such an attempt
is a pretty big problem since pinouts are hardware related/static.

Prior code would fail silently and return false, but nobody checked
the setXXX return values, anyway.
2021-05-29 10:50:13 -07:00
Earle F. Philhower, III 79539d7d8d Re-add pico-sdk/extra submodules to release ZIP (#181) 2021-05-28 19:55:09 -07:00
16 changed files with 834 additions and 285 deletions
@@ -28,6 +28,8 @@ jobs:
BUILD_TYPE: package
CI_GITHUB_API_KEY: ${{ secrets.GITHUB_TOKEN }}
run: |
(cd pico-sdk && git submodule update --init)
(cd pico-extras && git submodule update --init)
(cd ./package && bash ./build_boards_manager_package.sh)
pip3 install PyGithub
# Create a draft release and upload the ZIP and JSON files.
+292
View File
@@ -1686,6 +1686,298 @@ adafruit_trinkeyrp2040qtpicoprobe.menu.usbstack.picosdk.build.usbstack_flags=
adafruit_trinkeyrp2040qtpicoprobe.menu.usbstack.tinyusb=Adafruit TinyUSB
adafruit_trinkeyrp2040qtpicoprobe.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino"
# -----------------------------------
# Adafruit MacroPad RP2040
# -----------------------------------
adafruit_macropad2040.name=Adafruit MacroPad RP2040
adafruit_macropad2040.vid.0=0x239a
adafruit_macropad2040.pid.0=0x8107
adafruit_macropad2040.build.usbpid=-DSERIALUSB_PID=0x8107
adafruit_macropad2040.build.board=ADAFRUIT_MACROPAD_RP2040
adafruit_macropad2040.build.mcu=cortex-m0plus
adafruit_macropad2040.build.variant=adafruit_macropad2040
adafruit_macropad2040.upload.tool=uf2conv
adafruit_macropad2040.upload.maximum_size=8388608
adafruit_macropad2040.upload.maximum_data_size=262144
adafruit_macropad2040.upload.wait_for_upload_port=true
adafruit_macropad2040.upload.erase_cmd=
adafruit_macropad2040.serial.disableDTR=false
adafruit_macropad2040.serial.disableRTS=false
adafruit_macropad2040.build.f_cpu=125000000
adafruit_macropad2040.build.led=
adafruit_macropad2040.build.core=rp2040
adafruit_macropad2040.build.mcu=rp2040
adafruit_macropad2040.build.ldscript=memmap_default.ld
adafruit_macropad2040.build.boot2=boot2_w25q080_2_padded_checksum
adafruit_macropad2040.build.vid=0x239a
adafruit_macropad2040.build.pid=0x8107
adafruit_macropad2040.build.usb_manufacturer="Adafruit"
adafruit_macropad2040.build.usb_product="MacroPad RP2040"
adafruit_macropad2040.menu.flash.8388608_0=8MB (no FS)
adafruit_macropad2040.menu.flash.8388608_0.upload.maximum_size=8384512
adafruit_macropad2040.menu.flash.8388608_0.build.flash_length=8384512
adafruit_macropad2040.menu.flash.8388608_0.build.eeprom_start=276819968
adafruit_macropad2040.menu.flash.8388608_0.build.fs_start=276819968
adafruit_macropad2040.menu.flash.8388608_0.build.fs_end=276819968
adafruit_macropad2040.menu.flash.8388608_65536=8MB (Sketch: 8128KB, FS: 64KB)
adafruit_macropad2040.menu.flash.8388608_65536.upload.maximum_size=8318976
adafruit_macropad2040.menu.flash.8388608_65536.build.flash_length=8318976
adafruit_macropad2040.menu.flash.8388608_65536.build.eeprom_start=276819968
adafruit_macropad2040.menu.flash.8388608_65536.build.fs_start=276754432
adafruit_macropad2040.menu.flash.8388608_65536.build.fs_end=276819968
adafruit_macropad2040.menu.flash.8388608_131072=8MB (Sketch: 8064KB, FS: 128KB)
adafruit_macropad2040.menu.flash.8388608_131072.upload.maximum_size=8253440
adafruit_macropad2040.menu.flash.8388608_131072.build.flash_length=8253440
adafruit_macropad2040.menu.flash.8388608_131072.build.eeprom_start=276819968
adafruit_macropad2040.menu.flash.8388608_131072.build.fs_start=276688896
adafruit_macropad2040.menu.flash.8388608_131072.build.fs_end=276819968
adafruit_macropad2040.menu.flash.8388608_262144=8MB (Sketch: 7936KB, FS: 256KB)
adafruit_macropad2040.menu.flash.8388608_262144.upload.maximum_size=8122368
adafruit_macropad2040.menu.flash.8388608_262144.build.flash_length=8122368
adafruit_macropad2040.menu.flash.8388608_262144.build.eeprom_start=276819968
adafruit_macropad2040.menu.flash.8388608_262144.build.fs_start=276557824
adafruit_macropad2040.menu.flash.8388608_262144.build.fs_end=276819968
adafruit_macropad2040.menu.flash.8388608_524288=8MB (Sketch: 7680KB, FS: 512KB)
adafruit_macropad2040.menu.flash.8388608_524288.upload.maximum_size=7860224
adafruit_macropad2040.menu.flash.8388608_524288.build.flash_length=7860224
adafruit_macropad2040.menu.flash.8388608_524288.build.eeprom_start=276819968
adafruit_macropad2040.menu.flash.8388608_524288.build.fs_start=276295680
adafruit_macropad2040.menu.flash.8388608_524288.build.fs_end=276819968
adafruit_macropad2040.menu.flash.8388608_1048576=8MB (Sketch: 7MB, FS: 1MB)
adafruit_macropad2040.menu.flash.8388608_1048576.upload.maximum_size=7335936
adafruit_macropad2040.menu.flash.8388608_1048576.build.flash_length=7335936
adafruit_macropad2040.menu.flash.8388608_1048576.build.eeprom_start=276819968
adafruit_macropad2040.menu.flash.8388608_1048576.build.fs_start=275771392
adafruit_macropad2040.menu.flash.8388608_1048576.build.fs_end=276819968
adafruit_macropad2040.menu.flash.8388608_2097152=8MB (Sketch: 6MB, FS: 2MB)
adafruit_macropad2040.menu.flash.8388608_2097152.upload.maximum_size=6287360
adafruit_macropad2040.menu.flash.8388608_2097152.build.flash_length=6287360
adafruit_macropad2040.menu.flash.8388608_2097152.build.eeprom_start=276819968
adafruit_macropad2040.menu.flash.8388608_2097152.build.fs_start=274722816
adafruit_macropad2040.menu.flash.8388608_2097152.build.fs_end=276819968
adafruit_macropad2040.menu.flash.8388608_3145728=8MB (Sketch: 5MB, FS: 3MB)
adafruit_macropad2040.menu.flash.8388608_3145728.upload.maximum_size=5238784
adafruit_macropad2040.menu.flash.8388608_3145728.build.flash_length=5238784
adafruit_macropad2040.menu.flash.8388608_3145728.build.eeprom_start=276819968
adafruit_macropad2040.menu.flash.8388608_3145728.build.fs_start=273674240
adafruit_macropad2040.menu.flash.8388608_3145728.build.fs_end=276819968
adafruit_macropad2040.menu.flash.8388608_4194304=8MB (Sketch: 4MB, FS: 4MB)
adafruit_macropad2040.menu.flash.8388608_4194304.upload.maximum_size=4190208
adafruit_macropad2040.menu.flash.8388608_4194304.build.flash_length=4190208
adafruit_macropad2040.menu.flash.8388608_4194304.build.eeprom_start=276819968
adafruit_macropad2040.menu.flash.8388608_4194304.build.fs_start=272625664
adafruit_macropad2040.menu.flash.8388608_4194304.build.fs_end=276819968
adafruit_macropad2040.menu.flash.8388608_5242880=8MB (Sketch: 3MB, FS: 5MB)
adafruit_macropad2040.menu.flash.8388608_5242880.upload.maximum_size=3141632
adafruit_macropad2040.menu.flash.8388608_5242880.build.flash_length=3141632
adafruit_macropad2040.menu.flash.8388608_5242880.build.eeprom_start=276819968
adafruit_macropad2040.menu.flash.8388608_5242880.build.fs_start=271577088
adafruit_macropad2040.menu.flash.8388608_5242880.build.fs_end=276819968
adafruit_macropad2040.menu.flash.8388608_6291456=8MB (Sketch: 2MB, FS: 6MB)
adafruit_macropad2040.menu.flash.8388608_6291456.upload.maximum_size=2093056
adafruit_macropad2040.menu.flash.8388608_6291456.build.flash_length=2093056
adafruit_macropad2040.menu.flash.8388608_6291456.build.eeprom_start=276819968
adafruit_macropad2040.menu.flash.8388608_6291456.build.fs_start=270528512
adafruit_macropad2040.menu.flash.8388608_6291456.build.fs_end=276819968
adafruit_macropad2040.menu.flash.8388608_7340032=8MB (Sketch: 1MB, FS: 7MB)
adafruit_macropad2040.menu.flash.8388608_7340032.upload.maximum_size=1044480
adafruit_macropad2040.menu.flash.8388608_7340032.build.flash_length=1044480
adafruit_macropad2040.menu.flash.8388608_7340032.build.eeprom_start=276819968
adafruit_macropad2040.menu.flash.8388608_7340032.build.fs_start=269479936
adafruit_macropad2040.menu.flash.8388608_7340032.build.fs_end=276819968
adafruit_macropad2040.menu.freq.125=125 MHz
adafruit_macropad2040.menu.freq.125.build.f_cpu=125000000L
adafruit_macropad2040.menu.freq.50=50 MHz
adafruit_macropad2040.menu.freq.50.build.f_cpu=50000000L
adafruit_macropad2040.menu.freq.100=100 MHz
adafruit_macropad2040.menu.freq.100.build.f_cpu=100000000L
adafruit_macropad2040.menu.freq.133=133 MHz
adafruit_macropad2040.menu.freq.133.build.f_cpu=133000000L
adafruit_macropad2040.menu.freq.150=150 MHz (Overclock)
adafruit_macropad2040.menu.freq.150.build.f_cpu=150000000L
adafruit_macropad2040.menu.freq.175=175 MHz (Overclock)
adafruit_macropad2040.menu.freq.175.build.f_cpu=175000000L
adafruit_macropad2040.menu.freq.200=200 MHz (Overclock)
adafruit_macropad2040.menu.freq.200.build.f_cpu=200000000L
adafruit_macropad2040.menu.freq.225=225 MHz (Overclock)
adafruit_macropad2040.menu.freq.225.build.f_cpu=225000000L
adafruit_macropad2040.menu.freq.250=250 MHz (Overclock)
adafruit_macropad2040.menu.freq.250.build.f_cpu=250000000L
adafruit_macropad2040.menu.freq.275=275 MHz (Overclock)
adafruit_macropad2040.menu.freq.275.build.f_cpu=275000000L
adafruit_macropad2040.menu.freq.300=300 MHz (Overclock)
adafruit_macropad2040.menu.freq.300.build.f_cpu=300000000L
adafruit_macropad2040.menu.dbgport.Disabled=Disabled
adafruit_macropad2040.menu.dbgport.Disabled.build.debug_port=
adafruit_macropad2040.menu.dbgport.Serial=Serial
adafruit_macropad2040.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial
adafruit_macropad2040.menu.dbgport.Serial1=Serial1
adafruit_macropad2040.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1
adafruit_macropad2040.menu.dbgport.Serial2=Serial2
adafruit_macropad2040.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2
adafruit_macropad2040.menu.dbglvl.None=None
adafruit_macropad2040.menu.dbglvl.None.build.debug_level=
adafruit_macropad2040.menu.dbglvl.Core=Core
adafruit_macropad2040.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE
adafruit_macropad2040.menu.dbglvl.SPI=SPI
adafruit_macropad2040.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI
adafruit_macropad2040.menu.dbglvl.Wire=Wire
adafruit_macropad2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE
adafruit_macropad2040.menu.dbglvl.All=All
adafruit_macropad2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE
adafruit_macropad2040.menu.dbglvl.NDEBUG=NDEBUG
adafruit_macropad2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG
adafruit_macropad2040.menu.usbstack.picosdk=Pico SDK
adafruit_macropad2040.menu.usbstack.picosdk.build.usbstack_flags=
adafruit_macropad2040.menu.usbstack.tinyusb=Adafruit TinyUSB
adafruit_macropad2040.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino"
# -----------------------------------
# Adafruit MacroPad RP2040 (Picoprobe)
# -----------------------------------
adafruit_macropad2040picoprobe.name=Adafruit MacroPad RP2040 (Picoprobe)
adafruit_macropad2040picoprobe.vid.0=0x239a
adafruit_macropad2040picoprobe.pid.0=0x0004
adafruit_macropad2040picoprobe.build.usbpid=-DSERIALUSB_PID=0x8107
adafruit_macropad2040picoprobe.build.board=ADAFRUIT_MACROPAD_RP2040
adafruit_macropad2040picoprobe.build.mcu=cortex-m0plus
adafruit_macropad2040picoprobe.build.variant=adafruit_macropad2040
adafruit_macropad2040picoprobe.upload.tool=picoprobe
adafruit_macropad2040picoprobe.upload.maximum_size=8388608
adafruit_macropad2040picoprobe.upload.maximum_data_size=262144
adafruit_macropad2040picoprobe.upload.wait_for_upload_port=true
adafruit_macropad2040picoprobe.upload.erase_cmd=
adafruit_macropad2040picoprobe.serial.disableDTR=false
adafruit_macropad2040picoprobe.serial.disableRTS=false
adafruit_macropad2040picoprobe.build.f_cpu=125000000
adafruit_macropad2040picoprobe.build.led=
adafruit_macropad2040picoprobe.build.core=rp2040
adafruit_macropad2040picoprobe.build.mcu=rp2040
adafruit_macropad2040picoprobe.build.ldscript=memmap_default.ld
adafruit_macropad2040picoprobe.build.boot2=boot2_w25q080_2_padded_checksum
adafruit_macropad2040picoprobe.build.vid=0x239a
adafruit_macropad2040picoprobe.build.pid=0x8107
adafruit_macropad2040picoprobe.build.usb_manufacturer="Adafruit"
adafruit_macropad2040picoprobe.build.usb_product="MacroPad RP2040 (Picoprobe)"
adafruit_macropad2040picoprobe.menu.flash.8388608_0=8MB (no FS)
adafruit_macropad2040picoprobe.menu.flash.8388608_0.upload.maximum_size=8384512
adafruit_macropad2040picoprobe.menu.flash.8388608_0.build.flash_length=8384512
adafruit_macropad2040picoprobe.menu.flash.8388608_0.build.eeprom_start=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_0.build.fs_start=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_0.build.fs_end=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_65536=8MB (Sketch: 8128KB, FS: 64KB)
adafruit_macropad2040picoprobe.menu.flash.8388608_65536.upload.maximum_size=8318976
adafruit_macropad2040picoprobe.menu.flash.8388608_65536.build.flash_length=8318976
adafruit_macropad2040picoprobe.menu.flash.8388608_65536.build.eeprom_start=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_65536.build.fs_start=276754432
adafruit_macropad2040picoprobe.menu.flash.8388608_65536.build.fs_end=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_131072=8MB (Sketch: 8064KB, FS: 128KB)
adafruit_macropad2040picoprobe.menu.flash.8388608_131072.upload.maximum_size=8253440
adafruit_macropad2040picoprobe.menu.flash.8388608_131072.build.flash_length=8253440
adafruit_macropad2040picoprobe.menu.flash.8388608_131072.build.eeprom_start=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_131072.build.fs_start=276688896
adafruit_macropad2040picoprobe.menu.flash.8388608_131072.build.fs_end=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_262144=8MB (Sketch: 7936KB, FS: 256KB)
adafruit_macropad2040picoprobe.menu.flash.8388608_262144.upload.maximum_size=8122368
adafruit_macropad2040picoprobe.menu.flash.8388608_262144.build.flash_length=8122368
adafruit_macropad2040picoprobe.menu.flash.8388608_262144.build.eeprom_start=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_262144.build.fs_start=276557824
adafruit_macropad2040picoprobe.menu.flash.8388608_262144.build.fs_end=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_524288=8MB (Sketch: 7680KB, FS: 512KB)
adafruit_macropad2040picoprobe.menu.flash.8388608_524288.upload.maximum_size=7860224
adafruit_macropad2040picoprobe.menu.flash.8388608_524288.build.flash_length=7860224
adafruit_macropad2040picoprobe.menu.flash.8388608_524288.build.eeprom_start=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_524288.build.fs_start=276295680
adafruit_macropad2040picoprobe.menu.flash.8388608_524288.build.fs_end=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_1048576=8MB (Sketch: 7MB, FS: 1MB)
adafruit_macropad2040picoprobe.menu.flash.8388608_1048576.upload.maximum_size=7335936
adafruit_macropad2040picoprobe.menu.flash.8388608_1048576.build.flash_length=7335936
adafruit_macropad2040picoprobe.menu.flash.8388608_1048576.build.eeprom_start=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_1048576.build.fs_start=275771392
adafruit_macropad2040picoprobe.menu.flash.8388608_1048576.build.fs_end=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_2097152=8MB (Sketch: 6MB, FS: 2MB)
adafruit_macropad2040picoprobe.menu.flash.8388608_2097152.upload.maximum_size=6287360
adafruit_macropad2040picoprobe.menu.flash.8388608_2097152.build.flash_length=6287360
adafruit_macropad2040picoprobe.menu.flash.8388608_2097152.build.eeprom_start=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_2097152.build.fs_start=274722816
adafruit_macropad2040picoprobe.menu.flash.8388608_2097152.build.fs_end=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_3145728=8MB (Sketch: 5MB, FS: 3MB)
adafruit_macropad2040picoprobe.menu.flash.8388608_3145728.upload.maximum_size=5238784
adafruit_macropad2040picoprobe.menu.flash.8388608_3145728.build.flash_length=5238784
adafruit_macropad2040picoprobe.menu.flash.8388608_3145728.build.eeprom_start=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_3145728.build.fs_start=273674240
adafruit_macropad2040picoprobe.menu.flash.8388608_3145728.build.fs_end=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_4194304=8MB (Sketch: 4MB, FS: 4MB)
adafruit_macropad2040picoprobe.menu.flash.8388608_4194304.upload.maximum_size=4190208
adafruit_macropad2040picoprobe.menu.flash.8388608_4194304.build.flash_length=4190208
adafruit_macropad2040picoprobe.menu.flash.8388608_4194304.build.eeprom_start=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_4194304.build.fs_start=272625664
adafruit_macropad2040picoprobe.menu.flash.8388608_4194304.build.fs_end=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_5242880=8MB (Sketch: 3MB, FS: 5MB)
adafruit_macropad2040picoprobe.menu.flash.8388608_5242880.upload.maximum_size=3141632
adafruit_macropad2040picoprobe.menu.flash.8388608_5242880.build.flash_length=3141632
adafruit_macropad2040picoprobe.menu.flash.8388608_5242880.build.eeprom_start=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_5242880.build.fs_start=271577088
adafruit_macropad2040picoprobe.menu.flash.8388608_5242880.build.fs_end=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_6291456=8MB (Sketch: 2MB, FS: 6MB)
adafruit_macropad2040picoprobe.menu.flash.8388608_6291456.upload.maximum_size=2093056
adafruit_macropad2040picoprobe.menu.flash.8388608_6291456.build.flash_length=2093056
adafruit_macropad2040picoprobe.menu.flash.8388608_6291456.build.eeprom_start=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_6291456.build.fs_start=270528512
adafruit_macropad2040picoprobe.menu.flash.8388608_6291456.build.fs_end=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_7340032=8MB (Sketch: 1MB, FS: 7MB)
adafruit_macropad2040picoprobe.menu.flash.8388608_7340032.upload.maximum_size=1044480
adafruit_macropad2040picoprobe.menu.flash.8388608_7340032.build.flash_length=1044480
adafruit_macropad2040picoprobe.menu.flash.8388608_7340032.build.eeprom_start=276819968
adafruit_macropad2040picoprobe.menu.flash.8388608_7340032.build.fs_start=269479936
adafruit_macropad2040picoprobe.menu.flash.8388608_7340032.build.fs_end=276819968
adafruit_macropad2040picoprobe.menu.freq.125=125 MHz
adafruit_macropad2040picoprobe.menu.freq.125.build.f_cpu=125000000L
adafruit_macropad2040picoprobe.menu.freq.50=50 MHz
adafruit_macropad2040picoprobe.menu.freq.50.build.f_cpu=50000000L
adafruit_macropad2040picoprobe.menu.freq.100=100 MHz
adafruit_macropad2040picoprobe.menu.freq.100.build.f_cpu=100000000L
adafruit_macropad2040picoprobe.menu.freq.133=133 MHz
adafruit_macropad2040picoprobe.menu.freq.133.build.f_cpu=133000000L
adafruit_macropad2040picoprobe.menu.freq.150=150 MHz (Overclock)
adafruit_macropad2040picoprobe.menu.freq.150.build.f_cpu=150000000L
adafruit_macropad2040picoprobe.menu.freq.175=175 MHz (Overclock)
adafruit_macropad2040picoprobe.menu.freq.175.build.f_cpu=175000000L
adafruit_macropad2040picoprobe.menu.freq.200=200 MHz (Overclock)
adafruit_macropad2040picoprobe.menu.freq.200.build.f_cpu=200000000L
adafruit_macropad2040picoprobe.menu.freq.225=225 MHz (Overclock)
adafruit_macropad2040picoprobe.menu.freq.225.build.f_cpu=225000000L
adafruit_macropad2040picoprobe.menu.freq.250=250 MHz (Overclock)
adafruit_macropad2040picoprobe.menu.freq.250.build.f_cpu=250000000L
adafruit_macropad2040picoprobe.menu.freq.275=275 MHz (Overclock)
adafruit_macropad2040picoprobe.menu.freq.275.build.f_cpu=275000000L
adafruit_macropad2040picoprobe.menu.freq.300=300 MHz (Overclock)
adafruit_macropad2040picoprobe.menu.freq.300.build.f_cpu=300000000L
adafruit_macropad2040picoprobe.menu.dbgport.Disabled=Disabled
adafruit_macropad2040picoprobe.menu.dbgport.Disabled.build.debug_port=
adafruit_macropad2040picoprobe.menu.dbgport.Serial=Serial
adafruit_macropad2040picoprobe.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial
adafruit_macropad2040picoprobe.menu.dbgport.Serial1=Serial1
adafruit_macropad2040picoprobe.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1
adafruit_macropad2040picoprobe.menu.dbgport.Serial2=Serial2
adafruit_macropad2040picoprobe.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2
adafruit_macropad2040picoprobe.menu.dbglvl.None=None
adafruit_macropad2040picoprobe.menu.dbglvl.None.build.debug_level=
adafruit_macropad2040picoprobe.menu.dbglvl.Core=Core
adafruit_macropad2040picoprobe.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE
adafruit_macropad2040picoprobe.menu.dbglvl.SPI=SPI
adafruit_macropad2040picoprobe.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI
adafruit_macropad2040picoprobe.menu.dbglvl.Wire=Wire
adafruit_macropad2040picoprobe.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE
adafruit_macropad2040picoprobe.menu.dbglvl.All=All
adafruit_macropad2040picoprobe.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE
adafruit_macropad2040picoprobe.menu.dbglvl.NDEBUG=NDEBUG
adafruit_macropad2040picoprobe.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG
adafruit_macropad2040picoprobe.menu.usbstack.picosdk=Pico SDK
adafruit_macropad2040picoprobe.menu.usbstack.picosdk.build.usbstack_flags=
adafruit_macropad2040picoprobe.menu.usbstack.tinyusb=Adafruit TinyUSB
adafruit_macropad2040picoprobe.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{build.core.path}/TinyUSB" "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino"
# -----------------------------------
# Generic RP2040
# -----------------------------------
+20 -18
View File
@@ -31,36 +31,38 @@
extern void serialEvent1() __attribute__((weak));
extern void serialEvent2() __attribute__((weak));
bool SerialUART::setRX(pin_size_t rx) {
bool SerialUART::setRX(pin_size_t pin) {
constexpr uint32_t valid[2] = { __bitset({1, 13, 17, 29}) /* UART0 */,
__bitset({5, 9, 21, 25}) /* UART1 */
};
if (_running) {
DEBUGCORE("ERROR: SerialUART setRX while running\n");
return false;
} else if ((1 << rx) & valid[uart_get_index(_uart)]) {
_rx = rx;
if ((!_running) && ((1 << pin) & valid[uart_get_index(_uart)])) {
_rx = pin;
return true;
} else {
DEBUGCORE("ERROR: SerialUART setRX illegal pin (%d)\n", rx);
return false;
}
if (_running) {
panic("FATAL: Attempting to set Serial%d.RX while running", uart_get_index(_uart) + 1);
} else {
panic("FATAL: Attempting to set Serial%d.RX to illegal pin %d", uart_get_index(_uart) + 1, pin);
}
return false;
}
bool SerialUART::setTX(pin_size_t tx) {
bool SerialUART::setTX(pin_size_t pin) {
constexpr uint32_t valid[2] = { __bitset({0, 12, 16, 28}) /* UART0 */,
__bitset({4, 8, 20, 24}) /* UART1 */
};
if (_running) {
DEBUGCORE("ERROR: SerialUART setTX while running\n");
return false;
} else if ((1 << tx) & valid[uart_get_index(_uart)]) {
_tx = tx;
if ((!_running) && ((1 << pin) & valid[uart_get_index(_uart)])) {
_tx = pin;
return true;
} else {
DEBUGCORE("ERROR: SerialUART setTX illegal pin (%d)\n", tx);
return false;
}
if (_running) {
panic("FATAL: Attempting to set Serial%d.TX while running", uart_get_index(_uart) + 1);
} else {
panic("FATAL: Attempting to set Serial%d.TX to illegal pin %d", uart_get_index(_uart) + 1, pin);
}
return false;
}
SerialUART::SerialUART(uart_inst_t *uart, pin_size_t tx, pin_size_t rx) {
+45 -23
View File
@@ -28,16 +28,24 @@ typedef struct {
pin_size_t pin;
PIO pio;
int sm;
alarm_id_t alarm;
} Tone;
// Keep std::map safe for multicore use
auto_init_mutex(_toneMutex);
#include "tone.pio.h"
static PIOProgram _tonePgm(&tone_program);
#include "tone2.pio.h"
static PIOProgram _tone2Pgm(&tone2_program);
static std::map<pin_size_t, Tone *> _toneMap;
int64_t _stopTonePIO(alarm_id_t id, void *user_data) {
(void) id;
Tone *tone = (Tone *)user_data;
tone->alarm = 0;
pio_sm_set_enabled(tone->pio, tone->sm, false);
return 0;
}
void tone(uint8_t pin, unsigned int frequency, unsigned long duration) {
if (pin > 29) {
DEBUGCORE("ERROR: Illegal pin in tone (%d)\n", pin);
@@ -58,32 +66,42 @@ void tone(uint8_t pin, unsigned int frequency, unsigned long duration) {
if (us < 5) {
us = 5;
}
// Even phases run forever, odd phases end after count...so ensure its odd
int phases = duration ? (duration * 1000 / us) | 1 : 2;
auto entry = _toneMap.find(pin);
if (entry != _toneMap.end()) {
noTone(pin);
Tone *newTone;
if (entry == _toneMap.end()) {
newTone = new Tone();
newTone->pin = pin;
pinMode(pin, OUTPUT);
int off;
if (!_tone2Pgm.prepare(&newTone->pio, &newTone->sm, &off)) {
DEBUGCORE("ERROR: tone unable to start, out of PIO resources\n");
// ERROR, no free slots
delete newTone;
return;
}
tone2_program_init(newTone->pio, newTone->sm, off, pin);
newTone->alarm = 0;
} else {
newTone = entry->second;
if (newTone->alarm) {
cancel_alarm(newTone->alarm);
newTone->alarm = 0;
}
}
auto newTone = new Tone();
newTone->pin = pin;
pinMode(pin, OUTPUT);
int off;
if (!_tonePgm.prepare(&newTone->pio, &newTone->sm, &off)) {
DEBUGCORE("ERROR: tone unable to start, out of PIO resources\n");
// ERROR, no free slots
delete newTone;
return;
}
tone_program_init(newTone->pio, newTone->sm, off, pin);
pio_sm_set_enabled(newTone->pio, newTone->sm, false);
pio_sm_put_blocking(newTone->pio, newTone->sm, RP2040::usToPIOCycles(us));
pio_sm_exec(newTone->pio, newTone->sm, pio_encode_pull(false, false));
pio_sm_exec(newTone->pio, newTone->sm, pio_encode_out(pio_isr, 32));
pio_sm_set_enabled(newTone->pio, newTone->sm, true);
pio_sm_put_blocking(newTone->pio, newTone->sm, phases);
_toneMap.insert({pin, newTone});
if (duration) {
auto ret = add_alarm_in_ms(duration, _stopTonePIO, (void *)newTone, true);
if (ret > 0) {
newTone->alarm = ret;
} else {
DEBUGCORE("ERROR: Unable to allocate timer for tone(%d, %d, %d)\n",
pin, frequency, duration);
}
}
}
void noTone(uint8_t pin) {
@@ -95,6 +113,10 @@ void noTone(uint8_t pin) {
}
auto entry = _toneMap.find(pin);
if (entry != _toneMap.end()) {
if (entry->second->alarm) {
cancel_alarm(entry->second->alarm);
entry->second->alarm = 0;
}
pio_sm_set_enabled(entry->second->pio, entry->second->sm, false);
pio_sm_unclaim(entry->second->pio, entry->second->sm);
delete entry->second;
-52
View File
@@ -1,52 +0,0 @@
// -------------------------------------------------- //
// This file is autogenerated by pioasm; do not edit! //
// -------------------------------------------------- //
#if !PICO_NO_HARDWARE
#include "hardware/pio.h"
#endif
// ---- //
// tone //
// ---- //
#define tone_wrap_target 0
#define tone_wrap 7
static const uint16_t tone_program_instructions[] = {
// .wrap_target
0x80a0, // 0: pull block
0xa027, // 1: mov x, osr
0xb846, // 2: mov y, isr side 1
0x0083, // 3: jmp y--, 3
0x0045, // 4: jmp x--, 5
0xb046, // 5: mov y, isr side 0
0x0086, // 6: jmp y--, 6
0x0042, // 7: jmp x--, 2
// .wrap
};
#if !PICO_NO_HARDWARE
static const struct pio_program tone_program = {
.instructions = tone_program_instructions,
.length = 8,
.origin = -1,
};
static inline pio_sm_config tone_program_get_default_config(uint offset) {
pio_sm_config c = pio_get_default_sm_config();
sm_config_set_wrap(&c, offset + tone_wrap_target, offset + tone_wrap);
sm_config_set_sideset(&c, 2, true, false);
return c;
}
static inline void tone_program_init(PIO pio, uint sm, uint offset, uint pin) {
pio_gpio_init(pio, pin);
pio_sm_set_consecutive_pindirs(pio, sm, pin, 1, true);
pio_sm_config c = tone_program_get_default_config(offset);
sm_config_set_sideset_pins(&c, pin);
pio_sm_init(pio, sm, offset, &c);
}
#endif
@@ -1,4 +1,4 @@
; Tone for the Raspberry Pi Pico RP2040
; Tone2 for the Raspberry Pi Pico RP2040
;
; Copyright (c) 2021 Earle F. Philhower, III <earlephilhower@yahoo.com>
;
@@ -18,32 +18,35 @@
; Side-set pin 0 is used for Tone output
.program tone
; OSR == Halfcycle count
.program tone2
.side_set 1 opt
pull
mov x, osr
pull ; TXFIFO -> OSR, or X -> OSR if no new period
mov x, osr ; OSR -> X
high:
mov y, isr side 1
pull noblock ; Potentially grab new HALFCYCLECOUNT, OTW copy from backup in X
mov x, osr ; OSR -> X
mov y, osr side 1 ; HALFCYCLECOUNT -> Y
highloop:
jmp y-- highloop
jmp x-- low
jmp y-- highloop ; while (y--) { /* noop delay */ }
low:
mov y, isr side 0
mov y, osr side 0 ; HALFCYCLECOUNT -> Y
lowloop:
jmp y-- lowloop
jmp y-- lowloop ; while (y--) { /* noop delay */ }
jmp x-- high
jmp high ; GOTO high
% c-sdk {
static inline void tone_program_init(PIO pio, uint sm, uint offset, uint pin) {
static inline void tone2_program_init(PIO pio, uint sm, uint offset, uint pin) {
pio_gpio_init(pio, pin);
pio_sm_set_consecutive_pindirs(pio, sm, pin, 1, true);
pio_sm_config c = tone_program_get_default_config(offset);
pio_sm_config c = tone2_program_get_default_config(offset);
sm_config_set_sideset_pins(&c, pin);
pio_sm_init(pio, sm, offset, &c);
}
%}
+53
View File
@@ -0,0 +1,53 @@
// -------------------------------------------------- //
// This file is autogenerated by pioasm; do not edit! //
// -------------------------------------------------- //
#if !PICO_NO_HARDWARE
#include "hardware/pio.h"
#endif
// ----- //
// tone2 //
// ----- //
#define tone2_wrap_target 0
#define tone2_wrap 8
static const uint16_t tone2_program_instructions[] = {
// .wrap_target
0x80a0, // 0: pull block
0xa027, // 1: mov x, osr
0x8080, // 2: pull noblock
0xa027, // 3: mov x, osr
0xb847, // 4: mov y, osr side 1
0x0085, // 5: jmp y--, 5
0xb047, // 6: mov y, osr side 0
0x0087, // 7: jmp y--, 7
0x0002, // 8: jmp 2
// .wrap
};
#if !PICO_NO_HARDWARE
static const struct pio_program tone2_program = {
.instructions = tone2_program_instructions,
.length = 9,
.origin = -1,
};
static inline pio_sm_config tone2_program_get_default_config(uint offset) {
pio_sm_config c = pio_get_default_sm_config();
sm_config_set_wrap(&c, offset + tone2_wrap_target, offset + tone2_wrap);
sm_config_set_sideset(&c, 2, true, false);
return c;
}
static inline void tone2_program_init(PIO pio, uint sm, uint offset, uint pin) {
pio_gpio_init(pio, pin);
pio_sm_set_consecutive_pindirs(pio, sm, pin, 1, true);
pio_sm_config c = tone2_program_get_default_config(offset);
sm_config_set_sideset_pins(&c, pin);
pio_sm_init(pio, sm, offset, &c);
}
#endif
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -1,4 +1,4 @@
name=SD(rp2040)
name=SD
version=2.0.0
author=Earle F. Philhower, III <earlephilhower@yahoo.com>
maintainer=Earle F. Philhower, III <earlephilhower@yahoo.com>
+32 -20
View File
@@ -202,56 +202,68 @@ bool SPIClassRP2040::setRX(pin_size_t pin) {
constexpr uint32_t valid[2] = { __bitset({0, 4, 16, 20}) /* SPI0 */,
__bitset({8, 12, 24, 28}) /* SPI1 */
};
if (_running) {
return false;
} else if ((1 << pin) & valid[spi_get_index(_spi)]) {
if ((!_running) && ((1 << pin) & valid[spi_get_index(_spi)])) {
_RX = pin;
return true;
} else {
return false;
}
if (_running) {
panic("FATAL: Attempting to set SPI%s.RX while running", spi_get_index(_spi) ? "1" : "");
} else {
panic("FATAL: Attempting to set SPI%s.RX to illegal pin %d", spi_get_index(_spi) ? "1" : "", pin);
}
return false;
}
bool SPIClassRP2040::setCS(pin_size_t pin) {
constexpr uint32_t valid[2] = { __bitset({1, 5, 17, 21}) /* SPI0 */,
__bitset({9, 13, 25, 29}) /* SPI1 */
};
if (_running) {
return false;
} else if ((1 << pin) & valid[spi_get_index(_spi)]) {
if ((!_running) && ((1 << pin) & valid[spi_get_index(_spi)])) {
_CS = pin;
return true;
} else {
return false;
}
if (_running) {
panic("FATAL: Attempting to set SPI%s.CS while running", spi_get_index(_spi) ? "1" : "");
} else {
panic("FATAL: Attempting to set SPI%s.CS to illegal pin %d", spi_get_index(_spi) ? "1" : "", pin);
}
return false;
}
bool SPIClassRP2040::setSCK(pin_size_t pin) {
constexpr uint32_t valid[2] = { __bitset({2, 6, 18, 22}) /* SPI0 */,
__bitset({10, 14, 26}) /* SPI1 */
};
if (_running) {
return false;
} else if ((1 << pin) & valid[spi_get_index(_spi)]) {
if ((!_running) && ((1 << pin) & valid[spi_get_index(_spi)])) {
_SCK = pin;
return true;
} else {
return false;
}
if (_running) {
panic("FATAL: Attempting to set SPI%s.SCK while running", spi_get_index(_spi) ? "1" : "");
} else {
panic("FATAL: Attempting to set SPI%s.SCK to illegal pin %d", spi_get_index(_spi) ? "1" : "", pin);
}
return false;
}
bool SPIClassRP2040::setTX(pin_size_t pin) {
constexpr uint32_t valid[2] = { __bitset({3, 7, 19, 23}) /* SPI0 */,
__bitset({11, 15, 27}) /* SPI1 */
};
if (_running) {
return false;
} else if ((1 << pin) & valid[spi_get_index(_spi)]) {
if ((!_running) && ((1 << pin) & valid[spi_get_index(_spi)])) {
_TX = pin;
return true;
} else {
return false;
}
if (_running) {
panic("FATAL: Attempting to set SPI%s.TX while running", spi_get_index(_spi) ? "1" : "");
} else {
panic("FATAL: Attempting to set SPI%s.TX to illegal pin %d", spi_get_index(_spi) ? "1" : "", pin);
}
return false;
}
void SPIClassRP2040::begin(bool hwCS) {
+16 -10
View File
@@ -51,28 +51,34 @@ bool TwoWire::setSDA(pin_size_t pin) {
constexpr uint32_t valid[2] = { __bitset({0, 4, 8, 12, 16, 20, 24, 28}) /* I2C0 */,
__bitset({2, 6, 10, 14, 18, 22, 26}) /* I2C1 */
};
if (_running) {
return false;
} else if ((1 << pin) & valid[i2c_hw_index(_i2c)]) {
if ((!_running) && ((1 << pin) & valid[i2c_hw_index(_i2c)])) {
_sda = pin;
return true;
} else {
return false;
}
if (_running) {
panic("FATAL: Attempting to set Wire%s.SDA while running", i2c_hw_index(_i2c) ? "1" : "");
} else {
panic("FATAL: Attempting to set Wire%s.SDA to illegal pin %d", i2c_hw_index(_i2c) ? "1" : "", pin);
}
return false;
}
bool TwoWire::setSCL(pin_size_t pin) {
constexpr uint32_t valid[2] = { __bitset({1, 5, 9, 13, 17, 21, 25, 29}) /* I2C0 */,
__bitset({3, 7, 11, 15, 19, 23, 27}) /* I2C1 */
};
if (_running) {
return false;
} else if ((1 << pin) & valid[i2c_hw_index(_i2c)]) {
if ((!_running) && ((1 << pin) & valid[i2c_hw_index(_i2c)])) {
_scl = pin;
return true;
} else {
return false;
}
if (_running) {
panic("FATAL: Attempting to set Wire%s.SCL while running", i2c_hw_index(_i2c) ? "1" : "");
} else {
panic("FATAL: Attempting to set Wire%s.SCL to illegal pin %d", i2c_hw_index(_i2c) ? "1" : "", pin);
}
return false;
}
void TwoWire::setClock(uint32_t hz) {
+13
View File
@@ -0,0 +1,13 @@
/* Simple annoying siren example using tone() */
/* Released to the public domain by Earle F. Philhower, III */
#define TONEPIN 7
void setup() {
}
void loop() {
for (int i = 100; i < 10000; i += 5) {
tone(TONEPIN, i);
}
}
@@ -0,0 +1,143 @@
// The speaker will play the tune to Happy Birthday continuously
// Author: Tony DiCola
// License: MIT (https://opensource.org/licenses/MIT)
#include <Arduino.h>
#ifdef USE_TINYUSB
// For Serial when selecting TinyUSB. Can't include in the core because Arduino IDE
// will not link in libraries called from the core. Instead, add the header to all
// the standard libraries in the hope it will still catch some user cases where they
// use these libraries.
// See https://github.com/earlephilhower/arduino-pico/issues/167#issuecomment-848622174
#include <Adafruit_TinyUSB.h>
#endif
// pin_buzzer should be defined by the supported variant e.g CPlay Bluefruit or CLUE.
// Otherwise please define the pin you would like to use for tone output
#ifndef PIN_BUZZER
#define PIN_BUZZER A0
#endif
uint8_t const pin_buzzer = PIN_BUZZER;
// A few music note frequencies as defined in this tone example:
// https://www.arduino.cc/en/Tutorial/toneMelody
#define NOTE_C4 262
#define NOTE_CS4 277
#define NOTE_D4 294
#define NOTE_DS4 311
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_FS4 370
#define NOTE_G4 392
#define NOTE_GS4 415
#define NOTE_A4 440
#define NOTE_AS4 466
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_CS5 554
#define NOTE_D5 587
#define NOTE_DS5 622
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_FS5 740
#define NOTE_G5 784
#define NOTE_GS5 831
#define NOTE_A5 880
#define NOTE_AS5 932
#define NOTE_B5 988
// Define note durations. You only need to adjust the whole note
// time and other notes will be subdivided from it directly.
#define WHOLE 2200 // Length of time in milliseconds of a whole note (i.e. a full bar).
#define HALF WHOLE/2
#define QUARTER HALF/2
#define EIGHTH QUARTER/2
#define EIGHTH_TRIPLE QUARTER/3
#define SIXTEENTH EIGHTH/2
// Play a note of the specified frequency and for the specified duration.
// Hold is an optional bool that specifies if this note should be held a
// little longer, i.e. for eighth notes that are tied together.
// While waiting for a note to play the waitBreath delay function is used
// so breath detection and pixel animation continues to run. No tones
// will play if the slide switch is in the -/off position or all the
// candles have been blown out.
void playNote(int frequency, int duration, bool hold = false, bool measure = true) {
(void) measure;
if (hold) {
// For a note that's held play it a little longer than the specified duration
// so it blends into the next tone (but there's still a small delay to
// hear the next note).
tone(pin_buzzer, frequency, duration + duration / 32);
} else {
// For a note that isn't held just play it for the specified duration.
tone(pin_buzzer, frequency, duration);
}
delay(duration + duration / 16);
}
// Song to play when the candles are blown out.
void celebrateSong() {
// Play a little charge melody, from:
// https://en.wikipedia.org/wiki/Charge_(fanfare)
// Note the explicit boolean parameters in particular the measure=false
// at the end. This means the notes will play without any breath measurement
// logic. Without this false value playNote will try to keep waiting for candles
// to blow out during the celebration song!
playNote(NOTE_G4, EIGHTH_TRIPLE, true, false);
playNote(NOTE_C5, EIGHTH_TRIPLE, true, false);
playNote(NOTE_E5, EIGHTH_TRIPLE, false, false);
playNote(NOTE_G5, EIGHTH, true, false);
playNote(NOTE_E5, SIXTEENTH, false);
playNote(NOTE_G5, HALF, false);
}
void setup() {
// Initialize serial output and Circuit Playground library.
Serial.begin(115200);
pinMode(pin_buzzer, OUTPUT);
digitalWrite(pin_buzzer, LOW);
}
void loop() {
// Play happy birthday tune, from:
// http://www.irish-folk-songs.com/happy-birthday-tin-whistle-sheet-music.html#.WXFJMtPytBw
// Inside each playNote call it will play a note and drive the NeoPixel animation
// and check for a breath against the sound sensor. Once all the candles are blown out
// the playNote calls will stop playing music.
playNote(NOTE_D4, EIGHTH, true);
playNote(NOTE_D4, EIGHTH);
playNote(NOTE_E4, QUARTER); // Bar 1
playNote(NOTE_D4, QUARTER);
playNote(NOTE_G4, QUARTER);
playNote(NOTE_FS4, HALF); // Bar 2
playNote(NOTE_D4, EIGHTH, true);
playNote(NOTE_D4, EIGHTH);
playNote(NOTE_E4, QUARTER); // Bar 3
playNote(NOTE_D4, QUARTER);
playNote(NOTE_A4, QUARTER);
playNote(NOTE_G4, HALF); // Bar 4
playNote(NOTE_D4, EIGHTH, true);
playNote(NOTE_D4, EIGHTH);
playNote(NOTE_D5, QUARTER); // Bar 5
playNote(NOTE_B4, QUARTER);
playNote(NOTE_G4, QUARTER);
playNote(NOTE_FS4, QUARTER); // Bar 6
playNote(NOTE_E4, QUARTER);
playNote(NOTE_C5, EIGHTH, true);
playNote(NOTE_C5, EIGHTH);
playNote(NOTE_B4, QUARTER); // Bar 7
playNote(NOTE_G4, QUARTER);
playNote(NOTE_A4, QUARTER);
playNote(NOTE_G4, HALF); // Bar 8
celebrateSong();
// One second pause before repeating the loop and playing
delay(1000);
}
+148 -148
View File
@@ -30,22 +30,22 @@
"toolsDependencies": [
{
"packager": "rp2040",
"version": "1.1.0-a-81a1771",
"version": "1.2.0-a-407f016",
"name": "pqt-gcc"
},
{
"packager": "rp2040",
"version": "1.1.0-a-81a1771",
"version": "1.2.0-a-407f016",
"name": "pqt-mklittlefs"
},
{
"packager": "rp2040",
"version": "1.1.0-a-81a1771",
"version": "1.2.0-a-407f016",
"name": "pqt-elf2uf2"
},
{
"packager": "rp2040",
"version": "1.1.0-a-81a1771",
"version": "1.2.0-a-407f016",
"name": "pqt-pioasm"
},
{
@@ -55,7 +55,7 @@
},
{
"packager": "rp2040",
"version": "1.1.0-a-81a1771",
"version": "1.2.0-a-407f016",
"name": "pqt-openocd"
}
],
@@ -66,57 +66,57 @@
],
"tools": [
{
"version": "1.1.0-a-81a1771",
"version": "1.2.0-a-407f016",
"name": "pqt-openocd",
"systems": [
{
"host": "aarch64-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/aarch64-linux-gnu.openocd-d58c2ef5e.210328.tar.gz",
"archiveFileName": "aarch64-linux-gnu.openocd-d58c2ef5e.210328.tar.gz",
"checksum": "SHA-256:5064727a074c8bc8dff988e82bc2460c5f5610a04ec0a61ba233bdabe0499a24",
"size": "6075189"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/aarch64-linux-gnu.openocd-d58c2ef5e.210607.tar.gz",
"archiveFileName": "aarch64-linux-gnu.openocd-d58c2ef5e.210607.tar.gz",
"checksum": "SHA-256:a85f1df05614ac0bba3742df0aa36b0a87b9bbef0fbadd4d0ccfa1938801ae98",
"size": "6144933"
},
{
"host": "arm-linux-gnueabihf",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/arm-linux-gnueabihf.openocd-d58c2ef5e.210328.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.openocd-d58c2ef5e.210328.tar.gz",
"checksum": "SHA-256:12e61ebe727cb188fab25af174f0696ef86d629701f03f189965a725bd51275b",
"size": "6076094"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/arm-linux-gnueabihf.openocd-d58c2ef5e.210607.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.openocd-d58c2ef5e.210607.tar.gz",
"checksum": "SHA-256:f79ffe70110512ce41c61477910e33fa5ef986fbc142aedfd89f7009f132b237",
"size": "5849262"
},
{
"host": "i686-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/i686-linux-gnu.openocd-d58c2ef5e.210328.tar.gz",
"archiveFileName": "i686-linux-gnu.openocd-d58c2ef5e.210328.tar.gz",
"checksum": "SHA-256:eaa89ac30556aaed5cd09fff4f46435f5a79c58d2060069db7606f9ecc9529ef",
"size": "6076262"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/i686-linux-gnu.openocd-d58c2ef5e.210607.tar.gz",
"archiveFileName": "i686-linux-gnu.openocd-d58c2ef5e.210607.tar.gz",
"checksum": "SHA-256:b4a8af73539ae2e2a653f8fbe029a5b52db80580c942f0399cafb7d3829498c0",
"size": "5651754"
},
{
"host": "i686-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/i686-w64-mingw32.openocd-d58c2ef5e.210328.zip",
"archiveFileName": "i686-w64-mingw32.openocd-d58c2ef5e.210328.zip",
"checksum": "SHA-256:65b8c96b94f1cc3ff13eb853138efb3a465150fb02d07c792f8b235d43b05061",
"size": "6378934"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/i686-w64-mingw32.openocd-d58c2ef5e.210607.zip",
"archiveFileName": "i686-w64-mingw32.openocd-d58c2ef5e.210607.zip",
"checksum": "SHA-256:7156af6e650df6fc4bfc8541f2f1fd05bfe136b3547b4a0aef91668af88f8b6d",
"size": "8330281"
},
{
"host": "x86_64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/x86_64-apple-darwin14.openocd-d58c2ef5e.210328.tar.gz",
"archiveFileName": "x86_64-apple-darwin14.openocd-d58c2ef5e.210328.tar.gz",
"checksum": "SHA-256:b8a759d7ac20643641285b0b05473b853e50739dd254b2294f5d1802ff0e15ca",
"size": "6076324"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/x86_64-apple-darwin14.openocd-d58c2ef5e.210607.tar.gz",
"archiveFileName": "x86_64-apple-darwin14.openocd-d58c2ef5e.210607.tar.gz",
"checksum": "SHA-256:965e35faf4a93396c4f4a22a504fd6b4f639752922996447d5c1e0e65d7329de",
"size": "1981786"
},
{
"host": "x86_64-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/x86_64-linux-gnu.openocd-d58c2ef5e.210328.tar.gz",
"archiveFileName": "x86_64-linux-gnu.openocd-d58c2ef5e.210328.tar.gz",
"checksum": "SHA-256:9ff31fc92d6f86503d1750d009fec7e7c8c185c7956b140c4b78ee029d31c19c",
"size": "6076342"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/x86_64-linux-gnu.openocd-d58c2ef5e.210607.tar.gz",
"archiveFileName": "x86_64-linux-gnu.openocd-d58c2ef5e.210607.tar.gz",
"checksum": "SHA-256:c54390c9464bcf2a32265ecbafaec6d68cdd41471fa14ba4afabe43fe0a11645",
"size": "6076479"
},
{
"host": "x86_64-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/x86_64-w64-mingw32.openocd-d58c2ef5e.210328.zip",
"archiveFileName": "x86_64-w64-mingw32.openocd-d58c2ef5e.210328.zip",
"checksum": "SHA-256:8f1ddd64b0a6f83f94437d509bb28cdd45ad481bb161c170d57a6736f75087ec",
"size": "6378956"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/x86_64-w64-mingw32.openocd-d58c2ef5e.210607.zip",
"archiveFileName": "x86_64-w64-mingw32.openocd-d58c2ef5e.210607.zip",
"checksum": "SHA-256:4b481449371b39b4e0e87bd5e5a247f99c025b97ccd186c3b1ca58ff2cb44875",
"size": "8719676"
}
]
},
@@ -183,221 +183,221 @@
]
},
{
"version": "1.1.0-a-81a1771",
"version": "1.2.0-a-407f016",
"name": "pqt-gcc",
"systems": [
{
"host": "aarch64-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/aarch64-linux-gnu.arm-none-eabi-81a1771.210328.tar.gz",
"archiveFileName": "aarch64-linux-gnu.arm-none-eabi-81a1771.210328.tar.gz",
"checksum": "SHA-256:04eaa4a1c0596b1a47252150323af0a4def791cb9da20634872becbdbdfef979",
"size": "101469960"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/aarch64-linux-gnu.arm-none-eabi-407f016.210607.tar.gz",
"archiveFileName": "aarch64-linux-gnu.arm-none-eabi-407f016.210607.tar.gz",
"checksum": "SHA-256:fc30b07b98fe965db814178b71f368895790f6789d503d71c8af70ff92451d5c",
"size": "103186508"
},
{
"host": "arm-linux-gnueabihf",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/arm-linux-gnueabihf.arm-none-eabi-81a1771.210328.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.arm-none-eabi-81a1771.210328.tar.gz",
"checksum": "SHA-256:43e739a2219ef9e9d16d1c81d4252c22a7392315325046d450542a3df6b35b96",
"size": "94164344"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/arm-linux-gnueabihf.arm-none-eabi-407f016.210607.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.arm-none-eabi-407f016.210607.tar.gz",
"checksum": "SHA-256:4a6ecfaf485ab428e233cc06e853b91dc272146ca0200fbbcdcb87f1930239b8",
"size": "95858053"
},
{
"host": "i686-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/i686-linux-gnu.arm-none-eabi-81a1771.210328.tar.gz",
"archiveFileName": "i686-linux-gnu.arm-none-eabi-81a1771.210328.tar.gz",
"checksum": "SHA-256:b5961edde0d58b7dbc5c7b1c8fbf9d461fe2a7204f5282f6b5336a5d435efd3b",
"size": "104228428"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/i686-linux-gnu.arm-none-eabi-407f016.210607.tar.gz",
"archiveFileName": "i686-linux-gnu.arm-none-eabi-407f016.210607.tar.gz",
"checksum": "SHA-256:8f97c67d20077c551b13344c1a96a9f51dd3a91b178a4731cd9dcc27a19217e6",
"size": "105954517"
},
{
"host": "i686-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/i686-w64-mingw32.arm-none-eabi-81a1771.210328.zip",
"archiveFileName": "i686-w64-mingw32.arm-none-eabi-81a1771.210328.zip",
"checksum": "SHA-256:347fdc73b9f99e529c70598f9bf2ebc85adad098a24206cf89f8297a40e44d60",
"size": "103803990"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/i686-w64-mingw32.arm-none-eabi-407f016.210607.zip",
"archiveFileName": "i686-w64-mingw32.arm-none-eabi-407f016.210607.zip",
"checksum": "SHA-256:c30e8b67d16ae6f29bcca84c166ecc3fced209d73b1b8925d5dd0e79b850f923",
"size": "105487629"
},
{
"host": "x86_64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/x86_64-apple-darwin14.arm-none-eabi-81a1771.210328.tar.gz",
"archiveFileName": "x86_64-apple-darwin14.arm-none-eabi-81a1771.210328.tar.gz",
"checksum": "SHA-256:c035b48e0a42b90c9a356b43813671597a6c0f1cab4fb97a0dfcb2bbc7eb5390",
"size": "105653466"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/x86_64-apple-darwin14.arm-none-eabi-407f016.210607.tar.gz",
"archiveFileName": "x86_64-apple-darwin14.arm-none-eabi-407f016.210607.tar.gz",
"checksum": "SHA-256:5c617ffcf86518a6451701bd5756e28f9b7587acc0cb2cd503b6c600b8cf417d",
"size": "107365915"
},
{
"host": "x86_64-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/x86_64-linux-gnu.arm-none-eabi-81a1771.210328.tar.gz",
"archiveFileName": "x86_64-linux-gnu.arm-none-eabi-81a1771.210328.tar.gz",
"checksum": "SHA-256:b13ea47f3c62b65eda3acd40f43a392e8799696d821bc5c114e60950ab125bc0",
"size": "106132177"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/x86_64-linux-gnu.arm-none-eabi-407f016.210607.tar.gz",
"archiveFileName": "x86_64-linux-gnu.arm-none-eabi-407f016.210607.tar.gz",
"checksum": "SHA-256:0a2b7d03f79f723d62255595f9af862807feee601456bb0e2477ce188a4a975f",
"size": "107847587"
},
{
"host": "x86_64-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/x86_64-w64-mingw32.arm-none-eabi-81a1771.210328.zip",
"archiveFileName": "x86_64-w64-mingw32.arm-none-eabi-81a1771.210328.zip",
"checksum": "SHA-256:06b19d7f9e9e2c1c3fc87d85af144b02591e3c5643c67521ff9807cdb5f6ecc7",
"size": "108657552"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/x86_64-w64-mingw32.arm-none-eabi-407f016.210607.zip",
"archiveFileName": "x86_64-w64-mingw32.arm-none-eabi-407f016.210607.zip",
"checksum": "SHA-256:675ee78477afc5f2daf1e25f3c0560a3adbaa7f2d73d99059e549835b4022bf8",
"size": "110334002"
}
]
},
{
"version": "1.1.0-a-81a1771",
"version": "1.2.0-a-407f016",
"name": "pqt-elf2uf2",
"systems": [
{
"host": "aarch64-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/aarch64-linux-gnu.elf2uf2-0f3b795.210328.tar.gz",
"archiveFileName": "aarch64-linux-gnu.elf2uf2-0f3b795.210328.tar.gz",
"checksum": "SHA-256:5df8c7c132bc0f469c6610162d3c9836530acf4ace9bf4c3a849c80218f1855d",
"size": "104572"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/aarch64-linux-gnu.elf2uf2-fc10a97.210607.tar.gz",
"archiveFileName": "aarch64-linux-gnu.elf2uf2-fc10a97.210607.tar.gz",
"checksum": "SHA-256:59f6c2f08f1809987bf40df51808f848146a00c626dff06d3cabafb726db8830",
"size": "79850"
},
{
"host": "arm-linux-gnueabihf",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/arm-linux-gnueabihf.elf2uf2-0f3b795.210328.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.elf2uf2-0f3b795.210328.tar.gz",
"checksum": "SHA-256:dc311e18fac1e474804c044d194224267a729a16b34940c2e1ff23ab03207d98",
"size": "80513"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/arm-linux-gnueabihf.elf2uf2-fc10a97.210607.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.elf2uf2-fc10a97.210607.tar.gz",
"checksum": "SHA-256:fb6d4270aaa017b5fa60937f82674e5e55cf12da392fd23cc5d1f6de279bcd04",
"size": "54220"
},
{
"host": "i686-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/i686-linux-gnu.elf2uf2-0f3b795.210328.tar.gz",
"archiveFileName": "i686-linux-gnu.elf2uf2-0f3b795.210328.tar.gz",
"checksum": "SHA-256:c39f24206e69230166fa15154b76d9553e732815cea59ee00b822b5acf2257db",
"size": "110686"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/i686-linux-gnu.elf2uf2-fc10a97.210607.tar.gz",
"archiveFileName": "i686-linux-gnu.elf2uf2-fc10a97.210607.tar.gz",
"checksum": "SHA-256:b55b823e59b7fa4d1ea130621c6144d84a96f3cb9571109f878472fecbcda7f8",
"size": "87882"
},
{
"host": "i686-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/i686-w64-mingw32.elf2uf2-0f3b795.210328.zip",
"archiveFileName": "i686-w64-mingw32.elf2uf2-0f3b795.210328.zip",
"checksum": "SHA-256:d239f7b5d7d71e646bb7cd3c59ddef593b3e564968e262b9290353a0d8102d7d",
"size": "247162"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/i686-w64-mingw32.elf2uf2-fc10a97.210607.zip",
"archiveFileName": "i686-w64-mingw32.elf2uf2-fc10a97.210607.zip",
"checksum": "SHA-256:e66f3959fcdc2874dd4074d6e5205715235551062d5283da22906e369dc24bf0",
"size": "70429"
},
{
"host": "x86_64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/x86_64-apple-darwin14.elf2uf2-0f3b795.210328.tar.gz",
"archiveFileName": "x86_64-apple-darwin14.elf2uf2-0f3b795.210328.tar.gz",
"checksum": "SHA-256:3c776891300a3626ab4704808c61a15b653d58ff4f02398b492c12aed268f6aa",
"size": "106610"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/x86_64-apple-darwin14.elf2uf2-fc10a97.210607.tar.gz",
"archiveFileName": "x86_64-apple-darwin14.elf2uf2-fc10a97.210607.tar.gz",
"checksum": "SHA-256:f85403c39741498547448f40fa6ae323519452af7ab0118c4cf7408340c20e07",
"size": "81920"
},
{
"host": "x86_64-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/x86_64-linux-gnu.elf2uf2-0f3b795.210328.tar.gz",
"archiveFileName": "x86_64-linux-gnu.elf2uf2-0f3b795.210328.tar.gz",
"checksum": "SHA-256:90c57b7cc68323e84e4cdc7d6da44c0aeb11a1c102c51d03fb42179d6162d3f3",
"size": "101265"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/x86_64-linux-gnu.elf2uf2-fc10a97.210607.tar.gz",
"archiveFileName": "x86_64-linux-gnu.elf2uf2-fc10a97.210607.tar.gz",
"checksum": "SHA-256:5e9155cea5639b3716f5149e5a98fa864fe3abd9281f53f1dec65fdbe24d8f28",
"size": "79515"
},
{
"host": "x86_64-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/x86_64-w64-mingw32.elf2uf2-0f3b795.210328.zip",
"archiveFileName": "x86_64-w64-mingw32.elf2uf2-0f3b795.210328.zip",
"checksum": "SHA-256:a9afa2f04eb5510c8f39ea91d90b63a0dfe0b8037c6bca4d65de8905ca87175f",
"size": "275914"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/x86_64-w64-mingw32.elf2uf2-fc10a97.210607.zip",
"archiveFileName": "x86_64-w64-mingw32.elf2uf2-fc10a97.210607.zip",
"checksum": "SHA-256:e48b9e8d1c238f29e078056f6fedce715b773b042e52bf63df3759822fa66e64",
"size": "78298"
}
]
},
{
"version": "1.1.0-a-81a1771",
"version": "1.2.0-a-407f016",
"name": "pqt-pioasm",
"systems": [
{
"host": "aarch64-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/aarch64-linux-gnu.pioasm-0f3b795.210328.tar.gz",
"archiveFileName": "aarch64-linux-gnu.pioasm-0f3b795.210328.tar.gz",
"checksum": "SHA-256:28cd0813a46d81becb6b743ca6c7a53da0ed15f4da61ccee422f66eeb427912b",
"size": "619033"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/aarch64-linux-gnu.pioasm-fc10a97.210607.tar.gz",
"archiveFileName": "aarch64-linux-gnu.pioasm-fc10a97.210607.tar.gz",
"checksum": "SHA-256:6076ec3624c40cb59c456b501450621c57097bd83af4ebcbd03e3b46333fa745",
"size": "453301"
},
{
"host": "arm-linux-gnueabihf",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/arm-linux-gnueabihf.pioasm-0f3b795.210328.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.pioasm-0f3b795.210328.tar.gz",
"checksum": "SHA-256:d1c8f3b208aa00e801dad594c9d0425c9615b1531fb3f86adb95a6188868462c",
"size": "536769"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/arm-linux-gnueabihf.pioasm-fc10a97.210607.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.pioasm-fc10a97.210607.tar.gz",
"checksum": "SHA-256:a6fe07241fb913e846c74855165e038b327705d75d2ca576dd714b42e17749c4",
"size": "360370"
},
{
"host": "i686-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/i686-linux-gnu.pioasm-0f3b795.210328.tar.gz",
"archiveFileName": "i686-linux-gnu.pioasm-0f3b795.210328.tar.gz",
"checksum": "SHA-256:d09a70558acabf343ae04c783eac622e9bd1a6cfb74f42ebee03c0cfde5093c7",
"size": "658587"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/i686-linux-gnu.pioasm-fc10a97.210607.tar.gz",
"archiveFileName": "i686-linux-gnu.pioasm-fc10a97.210607.tar.gz",
"checksum": "SHA-256:47808419d4a6019e527a0aec8c13b5a8bad7d838547fbb97abcddca866f3fc6b",
"size": "511410"
},
{
"host": "i686-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/i686-w64-mingw32.pioasm-0f3b795.210328.zip",
"archiveFileName": "i686-w64-mingw32.pioasm-0f3b795.210328.zip",
"checksum": "SHA-256:c2ab0c8f3d54886838abb0c40910113e2e1e891068b205ec23944eecd0ce8037",
"size": "756780"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/i686-w64-mingw32.pioasm-fc10a97.210607.zip",
"archiveFileName": "i686-w64-mingw32.pioasm-fc10a97.210607.zip",
"checksum": "SHA-256:c815d6845d374133c346e3ae3e40746217be3a6313190a9b4cdc43a4cd2e2bea",
"size": "385662"
},
{
"host": "x86_64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/x86_64-apple-darwin14.pioasm-0f3b795.210328.tar.gz",
"archiveFileName": "x86_64-apple-darwin14.pioasm-0f3b795.210328.tar.gz",
"checksum": "SHA-256:f48d729582eda8d95c16d2f5fd76ba452a6dd2ae3a47ea9dace01a130e4fb897",
"size": "609240"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/x86_64-apple-darwin14.pioasm-fc10a97.210607.tar.gz",
"archiveFileName": "x86_64-apple-darwin14.pioasm-fc10a97.210607.tar.gz",
"checksum": "SHA-256:cd19c8ff52ebed430e039b18fd5bf5bfa33f60727a51ca1c81ad3bbcbb6ec763",
"size": "480403"
},
{
"host": "x86_64-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/x86_64-linux-gnu.pioasm-0f3b795.210328.tar.gz",
"archiveFileName": "x86_64-linux-gnu.pioasm-0f3b795.210328.tar.gz",
"checksum": "SHA-256:ca089e67effb47dec2a9acdf1490052d096335a8b8ffa46eaa33c205eec87b7b",
"size": "605194"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/x86_64-linux-gnu.pioasm-fc10a97.210607.tar.gz",
"archiveFileName": "x86_64-linux-gnu.pioasm-fc10a97.210607.tar.gz",
"checksum": "SHA-256:9b8d778a2b3dd5b6bc110dac86e4f9a8321e0bd43f8149bd2722b992b3684515",
"size": "458642"
},
{
"host": "x86_64-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/x86_64-w64-mingw32.pioasm-0f3b795.210328.zip",
"archiveFileName": "x86_64-w64-mingw32.pioasm-0f3b795.210328.zip",
"checksum": "SHA-256:f02509d1a75b68f14a3c3089029a0f16d185b07af598a4786b3bb6b357b88fa1",
"size": "886179"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/x86_64-w64-mingw32.pioasm-fc10a97.210607.zip",
"archiveFileName": "x86_64-w64-mingw32.pioasm-fc10a97.210607.zip",
"checksum": "SHA-256:87b5f6cd9c760e5091d1d6e6383028a4255c07d054e6eab0583590dbdc05de69",
"size": "408341"
}
]
},
{
"version": "1.1.0-a-81a1771",
"version": "1.2.0-a-407f016",
"name": "pqt-mklittlefs",
"systems": [
{
"host": "aarch64-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/aarch64-linux-gnu.mklittlefs-6b5c62d.210328.tar.gz",
"archiveFileName": "aarch64-linux-gnu.mklittlefs-6b5c62d.210328.tar.gz",
"checksum": "SHA-256:e8a77602a78ff51ed1588e0aef23c75f54dc3b8415a489ae700c90306da81701",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/aarch64-linux-gnu.mklittlefs-6b5c62d.210607.tar.gz",
"archiveFileName": "aarch64-linux-gnu.mklittlefs-6b5c62d.210607.tar.gz",
"checksum": "SHA-256:6475b7cb24ba165fa97e5ae9e66e56901e3609b57b0edb359b75c810b8267d73",
"size": "44791"
},
{
"host": "arm-linux-gnueabihf",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/arm-linux-gnueabihf.mklittlefs-6b5c62d.210328.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.mklittlefs-6b5c62d.210328.tar.gz",
"checksum": "SHA-256:6faa9ec2dfc9c6ef58df2e0fd0a990be923ce87a1f36f3e0766af2168b095d50",
"size": "38250"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/arm-linux-gnueabihf.mklittlefs-6b5c62d.210607.tar.gz",
"archiveFileName": "arm-linux-gnueabihf.mklittlefs-6b5c62d.210607.tar.gz",
"checksum": "SHA-256:39bfd76f25b5da89244f708de856a5e9548db37eec7c5a88e4832dc5c3d0ee1f",
"size": "38247"
},
{
"host": "i686-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/i686-linux-gnu.mklittlefs-6b5c62d.210328.tar.gz",
"archiveFileName": "i686-linux-gnu.mklittlefs-6b5c62d.210328.tar.gz",
"checksum": "SHA-256:6aa70b5953e76cc9561b77a8092b14a33c9850c42dd9b306a052fc2d056a89a8",
"size": "48237"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/i686-linux-gnu.mklittlefs-6b5c62d.210607.tar.gz",
"archiveFileName": "i686-linux-gnu.mklittlefs-6b5c62d.210607.tar.gz",
"checksum": "SHA-256:9b6841d1c5070fb1f2b4a5b6c6850395740ac997aa3fbf888f8cd6e7628200e8",
"size": "48240"
},
{
"host": "i686-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/i686-w64-mingw32.mklittlefs-6b5c62d.210328.zip",
"archiveFileName": "i686-w64-mingw32.mklittlefs-6b5c62d.210328.zip",
"checksum": "SHA-256:34e0a84d0f562e6f9bfd91090f9064164062f7c68b4dbd65d7f154987f7940e3",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/i686-w64-mingw32.mklittlefs-6b5c62d.210607.zip",
"archiveFileName": "i686-w64-mingw32.mklittlefs-6b5c62d.210607.zip",
"checksum": "SHA-256:9b6d7ab130c1f07d63a045e987f69496bfc5e3bb4bf6edc9bf4cd04d363c2ac4",
"size": "332804"
},
{
"host": "x86_64-apple-darwin",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/x86_64-apple-darwin14.mklittlefs-6b5c62d.210328.tar.gz",
"archiveFileName": "x86_64-apple-darwin14.mklittlefs-6b5c62d.210328.tar.gz",
"checksum": "SHA-256:5289f7cde14a5b65a572ddb3b2b0e24f2ea692365787438586f60929750dc395",
"size": "362804"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/x86_64-apple-darwin14.mklittlefs-6b5c62d.210607.tar.gz",
"archiveFileName": "x86_64-apple-darwin14.mklittlefs-6b5c62d.210607.tar.gz",
"checksum": "SHA-256:538c30d2a072845873d2e3552ac725dcef022f9ac9a873925c218d5564615321",
"size": "362807"
},
{
"host": "x86_64-pc-linux-gnu",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/x86_64-linux-gnu.mklittlefs-6b5c62d.210328.tar.gz",
"archiveFileName": "x86_64-linux-gnu.mklittlefs-6b5c62d.210328.tar.gz",
"checksum": "SHA-256:07331f6a171010790986bbd6e98cef028dd9f95733226ebab68096e28b3ef8ef",
"size": "46917"
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/x86_64-linux-gnu.mklittlefs-6b5c62d.210607.tar.gz",
"archiveFileName": "x86_64-linux-gnu.mklittlefs-6b5c62d.210607.tar.gz",
"checksum": "SHA-256:f2b4d849a2146e54fec52abdfc4391894addfbf1e904094424fb5a2a22873e58",
"size": "46918"
},
{
"host": "x86_64-mingw32",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.1.0-a/x86_64-w64-mingw32.mklittlefs-6b5c62d.210328.zip",
"archiveFileName": "x86_64-w64-mingw32.mklittlefs-6b5c62d.210328.zip",
"checksum": "SHA-256:17889e9ab6d199baed2c1532926c8508310524f9ba6b1db0816be5ee5d39a2f6",
"url": "https://github.com/earlephilhower/pico-quick-toolchain/releases/download/1.2.0-a/x86_64-w64-mingw32.mklittlefs-6b5c62d.210607.zip",
"archiveFileName": "x86_64-w64-mingw32.mklittlefs-6b5c62d.210607.zip",
"checksum": "SHA-256:c1105383c2c694978aee521dc1d921fb2e2c3452015c5456f323ffad09595725",
"size": "345250"
}
]
@@ -405,4 +405,4 @@
]
}
]
}
}
+1
View File
@@ -125,5 +125,6 @@ MakeBoard("adafruit_itsybitsy", "Adafruit", "ItsyBitsy RP2040", "0x239a", "0x80f
MakeBoard("adafruit_qtpy", "Adafruit", "QT Py RP2040", "0x239a", "0x80f7", "ADAFRUIT_QTPY_RP2040", 8, "boot2_generic_03h_4_padded_checksum")
MakeBoard("adafruit_stemmafriend", "Adafruit", "STEMMA Friend RP2040", "0x239a", "0x80e3", "ADAFRUIT_STEMMAFRIEND_RP2040", 8, "boot2_w25q080_2_padded_checksum")
MakeBoard("adafruit_trinkeyrp2040qt", "Adafruit", "Trinkey RP2040 QT", "0x239a", "0x8109", "ADAFRUIT_TRINKEYQT_RP2040", 8, "boot2_w25q080_2_padded_checksum")
MakeBoard("adafruit_macropad2040", "Adafruit", "MacroPad RP2040", "0x239a", "0x8107", "ADAFRUIT_MACROPAD_RP2040", 8, "boot2_w25q080_2_padded_checksum")
MakeBoard("generic", "Generic", "RP2040", "0x2e8a", "0xf00a", "GENERIC_RP2040", 16, "boot2_generic_03h_4_padded_checksum")
@@ -0,0 +1,52 @@
#pragma once
// LEDs
#define PIN_LED (13u)
// Extra hardware!
#define PIN_SWITCH 0
#define PIN_SPEAKER_ENABLE 14
#define PIN_SPEAKER 16
#define PIN_ROTB 17
#define PIN_ROTA 18
#define OLED_CS 22
#define OLED_RST 23
#define OLED_DC 24
#define PIN_NEOPIXEL 19
#define NUM_NEOPIXEL 12
// Not pinned out
#define PIN_SERIAL1_TX (31u)
#define PIN_SERIAL1_RX (31u)
// Not pinned out
#define PIN_SERIAL2_TX (31u)
#define PIN_SERIAL2_RX (31u)
// SPI
#define PIN_SPI1_MISO (28u)
#define PIN_SPI1_MOSI (27u)
#define PIN_SPI1_SCK (26u)
#define PIN_SPI1_SS (31u) // not pinned out
// Not pinned out
#define PIN_SPI0_MISO (31u)
#define PIN_SPI0_MOSI (31u)
#define PIN_SPI0_SCK (31u)
#define PIN_SPI0_SS (31u)
// Wire
#define PIN_WIRE0_SDA (20u)
#define PIN_WIRE0_SCL (21u)
// Not pinned out
#define PIN_WIRE1_SDA (31u)
#define PIN_WIRE1_SCL (31u)
#define SERIAL_HOWMANY (1u)
#define SPI_HOWMANY (1u)
#define WIRE_HOWMANY (1u)
#include "../generic/common.h"