From adaf489a823fcd5dbf0466c569e5188087b062ac Mon Sep 17 00:00:00 2001 From: cecio Date: Wed, 2 Aug 2023 17:20:27 +0200 Subject: [PATCH] bump to release 0.12.2 --- README.md | 2 +- USBvalve/USBvalve.ino | 2 +- ...e-0.12.1-32.uf2 => USBvalve-0.12.2-32.uf2} | Bin 545280 -> 545280 bytes ...e-0.12.1-64.uf2 => USBvalve-0.12.2-64.uf2} | Bin 545280 -> 545280 bytes 4 files changed, 2 insertions(+), 2 deletions(-) rename firmware/{USBvalve-0.12.1-32.uf2 => USBvalve-0.12.2-32.uf2} (95%) rename firmware/{USBvalve-0.12.1-64.uf2 => USBvalve-0.12.2-64.uf2} (95%) diff --git a/README.md b/README.md index 3cffe27..21bc974 100644 --- a/README.md +++ b/README.md @@ -165,7 +165,7 @@ Obviously you can also build your own firmware. To build the *standard* one I us - Arduino IDE 2.1.1 - ~~as board I used `Raspberry Pi Pico - Arduino MBED OS RP2040` version `4.0.2`~~ - ~~`Adafruit TinyUSB Library` version `1.14.4`. Newer versions are not working because the RPI SDK of the board is stick to an older version. May be migrate the entire project directly on Raspberry Pi Pico SDK is the solution here.~~ -- `Adafruit TinyUSB Library` version `2.2.2` and Board `Raspberry Pi RP2040 (3.3.0)` setting clock at 240MHz (overclock) +- `Adafruit TinyUSB Library` version `2.2.2` and Board `Raspberry Pi RP2040 (3.3.1)` setting clock at 240MHz (overclock) - `ssd1306` OLED library version `1.8.3` If you want to re-create a new fake filesystem, you may want to have a look to the `utils` folder, where I placed some utilities to build a new one. diff --git a/USBvalve/USBvalve.ino b/USBvalve/USBvalve.ino index c60a076..f31b6eb 100644 --- a/USBvalve/USBvalve.ino +++ b/USBvalve/USBvalve.ino @@ -74,7 +74,7 @@ bool activeState = false; // // USBvalve globals // -#define VERSION "USBvalve - 0.12.1" +#define VERSION "USBvalve - 0.12.2" boolean readme = false; boolean autorun = false; boolean written = false; diff --git a/firmware/USBvalve-0.12.1-32.uf2 b/firmware/USBvalve-0.12.2-32.uf2 similarity index 95% rename from firmware/USBvalve-0.12.1-32.uf2 rename to firmware/USBvalve-0.12.2-32.uf2 index b6e5abfaefd8d0f21f44199748ea619bac79d3b9..5eb466f79523cc24af67bf010d43992c22f56ad1 100644 GIT binary patch delta 4211 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 UraswZ%UvT>BLx&^$)AG%58qJRsQ>@~ delta 4232 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 diff --git a/firmware/USBvalve-0.12.1-64.uf2 b/firmware/USBvalve-0.12.2-64.uf2 similarity index 95% rename from firmware/USBvalve-0.12.1-64.uf2 rename to firmware/USBvalve-0.12.2-64.uf2 index 7d9d3bca5ecab9e68fa6fcaf83109de93d24d06a..bcb481db60acf5f2b19b446231aad534519bda72 100644 GIT binary patch delta 4211 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 UraswZ%UvT>BLx&^$)AG%58qJRsQ>@~ delta 4232 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