Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

AVR (ATmega328P): UART/SPI HAL, drivers.zig, and nRF24L01+ driver (Emakefun RF-Nano V3.0)

Abierto
#1,069 3 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@matpala ya está trabajando en esto.

Desde el 8/10/2026.

  • #1077 de @matpala — abierto
  • #1083 de @matpala — abierto
  • #1087 de @matpala — abierto

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
zig
Área
embedded-iot

Línea de trabajo

Start with the referenced ATtiny port (#947), the related issues #637 and #701, and the existing work listed in the body, especially draft #1070. The plan spans an ATmega328P HAL, adapters, timing, an nRF24L01+ driver with unit tests, and examples; first get maintainer feedback on the open API and hardware questions. Done means the proposed steps are accepted and implemented, including tested send/receive examples.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

I'd like to add support for the Emakefun RF-Nano V3.0 (repo): an Arduino Nano clone (ATmega328P @ 16 MHz) with an onboard nRF24L01+ on the hardware SPI bus. I have the boards and test everything on hardware.

Already up: #1063 (blinky delay), #1064 (board), #1068 (.rodata in RAM, fixes #679), #1071 (GPIO read() fix) and #1070 (UART HAL, draft).

Plan, one PR per step, with HAL files under hals/atmega328p/ like the ATtiny port (#947):

  1. UART (#1070).
  2. SPI host HAL.
  3. drivers.zig adapting the HAL to DatagramDevice, Digital_IO and ClockDevice, like ch32v, plus a small Timer0-based time.zig.
  4. An MCU-agnostic nRF24L01+ driver in drivers/src/wireless, following ssd1306.zig, with unit tests. It polls STATUS, since IRQ isn't wired on this board.
  5. Send/receive examples between two boards.

Note: on AVR, Zig 0.17.0 fails to compile some error unions with a payload (ziglang/zig#37099, fix pending). So for now there's no std.Io for the UART, and drivers can't use DatagramDevice.read.

Questions:

  1. DatagramDevice has no full-duplex transfer, so the STATUS byte the nRF24 sends back with every command is lost, and the driver needs an extra transaction to read it. Is that fine, or would you rather add a transceive operation (related to #637/#701)?
  2. ClockDevice needs a monotonic u64 microsecond clock. I'd use the Timer0 overflow (4 µs ticks), with the HAL exporting the TIMER0_OVF handler for the app to register. That takes over PWM on D5/D6. OK, or is there a preferred approach?
  3. AVR GPIO uses sbi/cbi, which need comptime operands, so the Digital_IO adapter would be one type per comptime pin (e.g. GPIO_Device(.d, 7)). OK?

Is the nRF24 driver welcome in drivers/? Any feedback is appreciated!

Lenguaje dominante
Zig
Estrellas
2.3k
Forks
198
Merge medio
1 d 8 h
PR fusionados (30 d)
37

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de ZigEmbeddedGroup/microzig

Todos los issues de ZigEmbeddedGroup/microzig

Issues similares

Más issues de Embedded & IoT

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.