AVR (ATmega328P): UART/SPI HAL, drivers.zig, and nRF24L01+ driver (Emakefun RF-Nano V3.0)
Los mantenedores suelen responder en 1 día
@matpala ya está trabajando en esto.
Desde el 8/10/2026.
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):
- UART (#1070).
- SPI host HAL.
drivers.zigadapting the HAL toDatagramDevice,Digital_IOandClockDevice, like ch32v, plus a small Timer0-basedtime.zig.- An MCU-agnostic nRF24L01+ driver in
drivers/src/wireless, followingssd1306.zig, with unit tests. It polls STATUS, since IRQ isn't wired on this board. - 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:
DatagramDevicehas 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 atransceiveoperation (related to #637/#701)?ClockDeviceneeds a monotonicu64microsecond clock. I'd use the Timer0 overflow (4 µs ticks), with the HAL exporting theTIMER0_OVFhandler for the app to register. That takes over PWM on D5/D6. OK, or is there a preferred approach?- AVR GPIO uses
sbi/cbi, which need comptime operands, so theDigital_IOadapter 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
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de ZigEmbeddedGroup/microzig
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
ZigEmbeddedGroup/microzig#1086 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 69/100
ZigEmbeddedGroup/microzig#1085 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
ZigEmbeddedGroup/microzig#1061 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
ZigEmbeddedGroup/microzig#1059 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
regz: AVR peripherals generated at address 0 when the register-group name matches the module (ATDF)Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
ZigEmbeddedGroup/microzig#1072 ·
Los mantenedores suelen responder en 1 día
Todos los issues de ZigEmbeddedGroup/microzig
Issues similares
-
[BUG] OTA Requestor accepts reserved provider endpoint 0xFFFFPosiblemente ocupada @Chapoly1305 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
project-chip/connectedhomeip#74742 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 63/100
Xinyuan-LilyGO/T-Display-S3#352 · 3 comentarios ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 79/100
lsongdev/node-bluetooth#62 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
`espup update` fails with `File exists (os error 17)` when `~/.espup/esp-clang` is a dangling symlinkPosiblemente ocupada @SergioGasquez la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100