From 18de4dd329b31e6399a9a708325a8eff3819f757 Mon Sep 17 00:00:00 2001 From: matpala Date: Fri, 2 Oct 2026 18:16:40 -0300 Subject: [PATCH 1/2] atmega: add Emakefun RF-Nano V3.0 board --- examples/microchip/atmega/build.zig | 1 + port/microchip/atmega/build.zig | 12 ++++ .../atmega/src/boards/rf_nano_v3.zig | 55 +++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 port/microchip/atmega/src/boards/rf_nano_v3.zig diff --git a/examples/microchip/atmega/build.zig b/examples/microchip/atmega/build.zig index a6f85d132..154f991c9 100644 --- a/examples/microchip/atmega/build.zig +++ b/examples/microchip/atmega/build.zig @@ -15,6 +15,7 @@ pub fn build(b: *std.Build) void { const available_examples = [_]Example{ .{ .target = mb.ports.atmega.boards.arduino.nano, .name = "arduino-nano_blinky", .file = "src/blinky.zig" }, .{ .target = mb.ports.atmega.boards.arduino.uno_rev3, .name = "arduino-uno_blinky", .file = "src/blinky.zig" }, + .{ .target = mb.ports.atmega.boards.emakefun.rf_nano_v3, .name = "rf-nano-v3_blinky", .file = "src/blinky.zig" }, }; for (available_examples) |example| { diff --git a/port/microchip/atmega/build.zig b/port/microchip/atmega/build.zig index 9cce5eeb6..7bcd65be4 100644 --- a/port/microchip/atmega/build.zig +++ b/port/microchip/atmega/build.zig @@ -16,6 +16,9 @@ boards: struct { adafruit: struct { itsybitsy_32u4: *const microzig.Target, }, + emakefun: struct { + rf_nano_v3: *const microzig.Target, + }, }, pub fn init(dep: *std.Build.Dependency) ?Self { @@ -99,6 +102,15 @@ pub fn init(dep: *std.Build.Dependency) ?Self { }, }), }, + .emakefun = .{ + .rf_nano_v3 = chip_atmega328p.derive(.{ + .board = .{ + .name = "Emakefun RF-Nano V3.0", + .url = "https://github.com/emakefun/rf-nano", + .root_source_file = b.path("src/boards/rf_nano_v3.zig"), + }, + }), + }, }, }; } diff --git a/port/microchip/atmega/src/boards/rf_nano_v3.zig b/port/microchip/atmega/src/boards/rf_nano_v3.zig new file mode 100644 index 000000000..3ed0e2af7 --- /dev/null +++ b/port/microchip/atmega/src/boards/rf_nano_v3.zig @@ -0,0 +1,55 @@ +//! Emakefun RF-Nano V3.0: Arduino Nano V3.0 compatible board with an onboard +//! nRF24L01+ (or Si24R1) wired to the hardware SPI bus. +//! +//! - Radio: CE = D7 (PD7), CS = D8 (PB0), SCK = D13 (PB5), HODI = D11 (PB3), HIDO = D12 (PB4). +//! - The radio IRQ pin is not connected; poll the STATUS register instead. +//! - The onboard LED shares D13 (PB5) with SCK, so it flickers with SPI traffic. +//! - D7, D8, D11, D12 and D13 are used by the radio. +//! +//! Schematic: https://github.com/emakefun/rf-nano/blob/master/schematic/rf-nano_sch_v3.0.pdf + +pub const chip = @import("chip"); + +pub const clock_frequencies = .{ + .cpu = 16_000_000, +}; + +pub const pin_map = .{ + // Port D + .D0 = "PD0", + .D1 = "PD1", + .D2 = "PD2", + .D3 = "PD3", + .D4 = "PD4", + .D5 = "PD5", + .D6 = "PD6", + .D7 = "PD7", + + // Port B + .D8 = "PB0", + .D9 = "PB1", + .D10 = "PB2", + .D11 = "PB3", + .D12 = "PB4", + .D13 = "PB5", + + // Port C (Analog) + .A0 = "PC0", + .A1 = "PC1", + .A2 = "PC2", + .A3 = "PC3", + .A4 = "PC4", + .A5 = "PC5", + .A6 = "ADC6", + .A7 = "ADC7", + + // Onboard LED + .LED = "PB5", + + // nRF24L01+ radio + .NRF_CE = "PD7", + .NRF_CS = "PB0", + .SCK = "PB5", + .HODI = "PB3", + .HIDO = "PB4", +}; From f4a18dc32d0614ce559b59e48adf2242859896a6 Mon Sep 17 00:00:00 2001 From: matpala Date: Sun, 4 Oct 2026 12:43:16 -0300 Subject: [PATCH 2/2] atmega: add I2C pin aliases to RF-Nano V3.0 board --- port/microchip/atmega/src/boards/rf_nano_v3.zig | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/port/microchip/atmega/src/boards/rf_nano_v3.zig b/port/microchip/atmega/src/boards/rf_nano_v3.zig index 3ed0e2af7..327ae5eab 100644 --- a/port/microchip/atmega/src/boards/rf_nano_v3.zig +++ b/port/microchip/atmega/src/boards/rf_nano_v3.zig @@ -52,4 +52,8 @@ pub const pin_map = .{ .SCK = "PB5", .HODI = "PB3", .HIDO = "PB4", + + // I2C (TWI) + .SDA = "PC4", + .SCL = "PC5", };