diff --git a/.github/workflows/firmware.yml b/.github/workflows/firmware.yml index ea325229..0ef133cf 100644 --- a/.github/workflows/firmware.yml +++ b/.github/workflows/firmware.yml @@ -36,6 +36,7 @@ jobs: - run: cargo make --cwd c1minimal - run: cargo make --cwd ledmatrix build-release - run: cargo make --cwd ledmatrix build-release-10k + - run: cargo make --cwd ledmatrix build-release-evt - run: cargo make --cwd b1display build-release - run: cargo make --cwd c1minimal build-release @@ -46,6 +47,7 @@ jobs: cargo make --cwd b1display uf2 cargo make --cwd c1minimal uf2 cargo make --cwd ledmatrix build-release-10k-uf2 + cargo make --cwd ledmatrix build-release-evt-uf2 cargo make --cwd ledmatrix uf2 - name: Convert to bin format @@ -64,6 +66,7 @@ jobs: ledmatrix.bin ledmatrix.uf2 ledmatrix_10k.uf2 + ledmatrix_evt.uf2 - name: Upload b1display files uses: actions/upload-artifact@v3 @@ -93,6 +96,7 @@ jobs: - run: cargo install cargo-make - run: | + sudo apt-get update sudo apt-get install -y libudev-dev cargo make clippy --cwd b1display cargo make clippy --cwd c1minimal diff --git a/.github/workflows/traditional-cargo.yml b/.github/workflows/traditional-cargo.yml index f2893ba9..67b28cb9 100644 --- a/.github/workflows/traditional-cargo.yml +++ b/.github/workflows/traditional-cargo.yml @@ -32,7 +32,8 @@ jobs: - run: cargo install flip-link - run: cargo build -p ledmatrix - - run: cargo build -p ledmatrix --features 10k + - run: cargo build -p ledmatrix --features 10k,evt + - run: cargo build -p ledmatrix --features evt - run: cargo build -p b1display - run: cargo build -p c1minimal diff --git a/Cargo.lock b/Cargo.lock index 358464b1..fe4a9219 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1022,7 +1022,6 @@ dependencies = [ [[package]] name = "is31fl3741" version = "0.2.1" -source = "git+https://github.com/FrameworkComputer/is31fl3741-rs?branch=sw-enablement#fb88ad1baf28aa2a61bc85ff5db83c6e2b661ed5" dependencies = [ "embedded-graphics-core", "embedded-hal", diff --git a/Cargo.toml b/Cargo.toml index e86f3e3b..8d0c6c00 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,7 +36,8 @@ usbd-serial = "0.1.1" usbd-hid = "0.6.1" fugit = "0.3.7" # LED Matrix -is31fl3741 = { git = "https://github.com/FrameworkComputer/is31fl3741-rs", branch = "sw-enablement" } +#is31fl3741 = { git = "https://github.com/FrameworkComputer/is31fl3741-rs", branch = "sw-enablement" } +is31fl3741 = { path = "/home/zoid/clone/rp2040/ledmatrix/is31fl3741" } # B1 Display st7306 = { git = "https://github.com/FrameworkComputer/st7306-rs", branch = "update-deps" } embedded-graphics = "0.8" diff --git a/ledmatrix/Cargo.toml b/ledmatrix/Cargo.toml index 54f86928..c5ce2a5e 100644 --- a/ledmatrix/Cargo.toml +++ b/ledmatrix/Cargo.toml @@ -5,6 +5,7 @@ version = "0.1.7-pre" [features] 10k = [] +evt = [] [dependencies] cortex-m.workspace = true diff --git a/ledmatrix/Makefile.toml b/ledmatrix/Makefile.toml index 47ec7225..49d34cd9 100644 --- a/ledmatrix/Makefile.toml +++ b/ledmatrix/Makefile.toml @@ -1,22 +1,57 @@ extend = "../Makefile.toml" +[tasks.build-release-evt] +command = "cargo" +args = [ + "build", + "--target=thumbv6m-none-eabi", + "--release", + "--features", + "evt", +] + +[tasks.build-release-evt-uf2] +command = "elf2uf2-rs" +args = [ + "../target/thumbv6m-none-eabi/release/ledmatrix", + "../target/thumbv6m-none-eabi/release/ledmatrix_evt.uf2", +] +dependencies = ["build-release-evt"] +install_crate = "elf2uf2-rs" + [tasks.build-release-10k] command = "cargo" -args = ["build", "--target=thumbv6m-none-eabi", "--release", "--features", "10k"] +args = [ + "build", + "--target=thumbv6m-none-eabi", + "--release", + "--features", + "10k,evt", +] [tasks.build-release-10k-uf2] command = "elf2uf2-rs" -args = ["../target/thumbv6m-none-eabi/release/ledmatrix", "../target/thumbv6m-none-eabi/release/ledmatrix_10k.uf2"] +args = [ + "../target/thumbv6m-none-eabi/release/ledmatrix", + "../target/thumbv6m-none-eabi/release/ledmatrix_10k.uf2", +] dependencies = ["build-release-10k"] install_crate = "elf2uf2-rs" [tasks.uf2] command = "elf2uf2-rs" -args = ["../target/thumbv6m-none-eabi/release/ledmatrix", "../target/thumbv6m-none-eabi/release/ledmatrix.uf2"] +args = [ + "../target/thumbv6m-none-eabi/release/ledmatrix", + "../target/thumbv6m-none-eabi/release/ledmatrix.uf2", +] dependencies = ["build-release"] install_crate = "elf2uf2-rs" [tasks.bin] command = "llvm-objcopy" -args = ["-Obinary", "../target/thumbv6m-none-eabi/release/ledmatrix", "../target/thumbv6m-none-eabi/release/ledmatrix.bin"] +args = [ + "-Obinary", + "../target/thumbv6m-none-eabi/release/ledmatrix", + "../target/thumbv6m-none-eabi/release/ledmatrix.bin", +] dependencies = ["build-release"] diff --git a/ledmatrix/src/main.rs b/ledmatrix/src/main.rs index be0edd21..7be8983c 100644 --- a/ledmatrix/src/main.rs +++ b/ledmatrix/src/main.rs @@ -8,6 +8,7 @@ use cortex_m::delay::Delay; use defmt_rtt as _; use embedded_hal::digital::v2::{InputPin, OutputPin}; +use is31fl3741::addresses; use rp2040_hal::{ gpio::bank0::Gpio29, rosc::{Enabled, RingOscillator}, @@ -106,7 +107,11 @@ const MAX_BRIGHTNESS: u8 = 255; // Provide an alias for our BSP so we can switch targets quickly. // Uncomment the BSP you included in Cargo.toml, the rest of the code does not need to change. use bsp::entry; -use fl16_inputmodules::{fl16::DVT2_CALC_PIXEL, games::game_of_life, led_hal as bsp}; +#[cfg(not(feature = "evt"))] +use fl16_inputmodules::fl16::DVT2_CALC_PIXEL; +#[cfg(feature = "evt")] +use fl16_inputmodules::fl16::EVT_CALC_PIXEL; +use fl16_inputmodules::{games::game_of_life, led_hal as bsp}; //use rp_pico as bsp; // use sparkfun_pro_micro_rp2040 as bsp; @@ -238,18 +243,22 @@ fn main() -> ! { state.grid = every_nth_col(2); }; - //let mut matrix = LedMatrix::new(i2c, EVT_CALC_PIXEL); + #[cfg(feature = "evt")] + let mut matrix = LedMatrix::new(i2c, EVT_CALC_PIXEL); + #[cfg(not(feature = "evt"))] let mut matrix = LedMatrix::new(i2c, DVT2_CALC_PIXEL); matrix .setup(&mut delay) .expect("failed to setup RGB controller"); // EVT - // matrix - // .device - // .sw_enablement(is31fl3741::SwSetting::Sw1Sw9) - // .unwrap(); + #[cfg(feature = "evt")] + matrix + .device + .sw_enablement(is31fl3741::SwSetting::Sw1Sw9) + .unwrap(); // DVT + #[cfg(not(feature = "evt"))] matrix .device .sw_enablement(is31fl3741::SwSetting::Sw1Sw8) @@ -406,6 +415,50 @@ fn main() -> ! { // Do nothing } Ok(count) => { + let id = matrix + .device + .read_u8(is31fl3741::addresses::ID_REGISTER) + .unwrap(); + let reg = matrix + .device + .read_register( + is31fl3741::Page::Config, + is31fl3741::addresses::CONFIG_REGISTER, + ) + .unwrap(); + let open1 = matrix.device.check_open(&mut delay, 0x03, true).unwrap(); + let open2 = matrix.device.check_open(&mut delay, 0x07, true).unwrap(); + let open3 = matrix.device.check_open(&mut delay, 0x08, true).unwrap(); + let open4 = matrix.device.check_open(&mut delay, 0x0C, true).unwrap(); + + let short1 = matrix.device.check_open(&mut delay, 0x03, false).unwrap(); + let short2 = matrix.device.check_open(&mut delay, 0x07, false).unwrap(); + let short2 = matrix.device.check_open(&mut delay, 0x07, false).unwrap(); + let short3 = matrix.device.check_open(&mut delay, 0x08, false).unwrap(); + let short4 = matrix.device.check_open(&mut delay, 0x0C, false).unwrap(); + + let mut text: String<128> = String::new(); + write!(&mut text, "ID: {:02X}, Conf: {:02X}\r\n", id, reg).unwrap(); + let _ = serial.write(text.as_bytes()); + + let mut text: String<128> = String::new(); + write!( + &mut text, + "Open0x03: {:02X}, Open0x07: {:02X}, Open0x08: {:02X}, Open0x0C: {:02X}\r\n", + open1, open2, open3, open4 + ) + .unwrap(); + let _ = serial.write(text.as_bytes()); + + let mut text: String<128> = String::new(); + write!( + &mut text, + "Short0x03: {:02X}, Short0x07: {:02X}, Short0x08: {:02X}, Short0x0C: {:02X}\r\n", + short1, short2, short3, short4 + ) + .unwrap(); + let _ = serial.write(text.as_bytes()); + let random = get_random_byte(&rosc); match (parse_command(count, &buf), &state.sleeping) { // Handle bootloader command without any delay