🛠 Porting an AVR Uno sketch to the Renesas core

Arduino UNO R4 Minima · avance · Schéma : IMG-uno-r4-minima-avance-3-porter-un-sketch-avr.svg — UNO R4 Minima à côté d'une UNO R3, flèche de migration au-dessus, icônes barrées avr/interrupt.h et registres AVR, badges 8 mA, analogWriteResolution et int 32 bits.

Objetivo

Trasladar un sketch funcional de AVR Uno a la R4 Minima. El núcleo es ArduinoCore-renesas, una arquitectura completamente diferente, por lo que cualquier elemento específico de AVR debe eliminarse.

Lista de comprobación para la portabilidad

  1. Registros y cabeceras de AVR: avr/interrupt.h, avr/pgmspace.h, escrituras directas en SFR (DDRB, TCNT1...) no compilan; reemplázalos por las APIs de Arduino o por el HAL de RA.
  2. Ancho de los enteros: int tiene 32 bits en Cortex-M4 frente a 16 en AVR; las operaciones matemáticas con bits empaquetados y las suposiciones sobre desbordamiento cambian el comportamiento.
  3. Semántica de analogWrite: con un DAC real de 12 bits presente, las resoluciones difieren del PWM de 8 bits del AVR; llama explícitamente a analogWriteResolution en cada ruta de analogWrite/analogRead.
  4. Capacidad de corriente: los GPIO están limitados a 8 mA (frente a los 20 mA del AVR Uno); los relés, las matrices de LED y los zumbadores piezoeléctricos potentes necesitan un transistor o un driver.
  5. Bibliotecas: prefiere aquellas actualizadas para el núcleo Renesas; una biblioteca que accede directamente a los registros necesita una portabilidad, no solo una actualización de versión.

Resultado esperado

La mayoría de los sketches que usan puramente la API de Arduino compilan sin cambios; los fallos se concentran exactamente en los cinco puntos anteriores.

Puntos críticos

> NO VERIFICADO: las resoluciones predeterminadas exactas de analogWrite por tipo de pin (DAC frente a PWM de temporizador) no están confirmadas en las páginas consultadas; consulta el manual de usuario de la placa.

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales