Tabla de contenido:

AVR / Arduino parpadeando con Raspberry Pi: 3 pasos (con imágenes)
AVR / Arduino parpadeando con Raspberry Pi: 3 pasos (con imágenes)

Video: AVR / Arduino parpadeando con Raspberry Pi: 3 pasos (con imágenes)

Video: AVR / Arduino parpadeando con Raspberry Pi: 3 pasos (con imágenes)
Video: 🤫 Arduino o Raspberry Pi ¿Cuál es MEJOR? 2024, Mes de julio
Anonim
AVR / Arduino parpadeando con Raspberry Pi
AVR / Arduino parpadeando con Raspberry Pi

Un programador en el sistema (ISP) es un dispositivo que puede usar para programar muchos microcontroladores, por ejemplo, el ATMega328p que es el cerebro de un Arduino Uno. Puede comprar algo como un USBtinyISP, o incluso puede usar un Arduino. Este instructivo le mostrará cómo usar una Raspberry Pi como ISP.

El programa avrdude, que es lo que usa el IDE de Arduino debajo del capó para flashear chips, se puede usar con muchos programadores. Una de sus opciones es usar los pines SPI en el puerto de expansión de Pi. Explicaré cómo hacer las conexiones apropiadas, armar un circuito simple en perfboard para que no tengas que rehacer el cableado cada vez que quieras flashear un chip, y cómo instalar y usar avrdude. También le mostraré cómo compilar programas usando el IDE de Arduino en un chip AVR como un ATmega o ATtiny usando este método.

Cosas necesarias:

  • Raspberry Pi con la última Raspbian instalada
  • Enchufe de cabezal macho de 40 pines (o 26 pines si tiene un Pi más antiguo)
  • Cable IDE para conectar a tu Pi
  • Resonador de cristal de 16 MHz
  • Condensadores de 22 pF (2)
  • LED (1) para indicar el estado del programador
  • Zócalos IC de 8, 14 y / o 28 pines, según la forma de chips que desee flashear
  • Algunos perfboard, cables, soldadura

Paso 1: Construcción del accesorio de zapatero

Accesorio de zapatero de construcción
Accesorio de zapatero de construcción
Accesorio de zapatero de construcción
Accesorio de zapatero de construcción
Accesorio de zapatero de construcción
Accesorio de zapatero de construcción

La interfaz periférica serial (SPI), también llamada serial de cuatro cables, es una forma de comunicación entre un solo dispositivo maestro y uno o más dispositivos esclavos. Usaremos esto para flashear chips, con el Pi como maestro y el chip como esclavo. Realizará las siguientes conexiones entre el Pi y su chip (consulte los pines de arriba para ver varios AVR y puertos de expansión Pi para saber qué pines son cuáles):

  • Conecte los pines MOSI (master-out-slave-in) juntos
  • Conecte los pines SCLK (reloj compartido) juntos
  • Conecte los pines MISO (master-in-slave-out) junto con una resistencia de 220 Ohm, para proteger el Pi de cualquier voltaje inesperadamente alto del chip
  • Conecte GPIO 25 en el Pi directamente al pin RESET en el chip. El Pi baja este pin cuando está programando, por lo que usamos una resistencia de 10K para mantenerlo alto cuando no está programando, y un LED con una resistencia de protección de 1K funcionando a voltaje positivo para darnos una buena retroalimentación visual cuando está programando.

Conectamos pines de tierra y alimentación (3.3V) entre el Pi y los chips que queremos programar. En caso de que aún no lo sepas, los pines de la Raspberry Pi no son tolerantes a 5V; se dañarán si aparecen más de 3.3V en ellos. Si los chips que se están programando necesitan una potencia de 5V por alguna razón, podríamos usar un chip de cambio de nivel para proteger los pines de Pi, pero no he tenido ningún problema al usar 3.3V, por lo que recomiendo ir a lo seguro y ahorrar en componentes.

Por último, conectamos un oscilador de cristal de 16MHz a través de los pines XTAL del chip, que también conectamos a tierra a través de un par de condensadores de 22pF. Los chips AVR se pueden configurar para que funcionen a diferentes frecuencias, y también se pueden configurar para usar una fuente interna o externa para determinar esa frecuencia. Si su chip está configurado para usar un cristal externo como fuente de frecuencia, no podrá reprogramar sin él. De lo contrario, no importa si está ahí.

Puede usar el esquema del circuito en la última imagen como una guía para ensamblar su accesorio de zapatero en perfboard. Puede tener tantas o pocas formas diferentes de enchufes IC como desee, simplemente conecte los pines apropiados en paralelo con el Pi y el cristal. nótese bien Si usa la imagen de mi prototipo como guía, tenga en cuenta que agregué algunos pines y enchufes de encabezado adicionales para poder acceder a los pines del Pi por razones no relacionadas.

Paso 2: Instalación y uso de Avrdude

Instalación y uso de Avrdude
Instalación y uso de Avrdude
Instalación y uso de Avrdude
Instalación y uso de Avrdude
Instalación y uso de Avrdude
Instalación y uso de Avrdude
Instalación y uso de Avrdude
Instalación y uso de Avrdude

Para instalar avrdude en su Pi, simplemente escriba

sudo apt-get install avrdude

Luego deberá habilitar la interfaz SPI, si aún no se ha encendido. Hay una forma de línea de comandos para hacer esto, pero es mucho más fácil usar la herramienta de configuración Raspberry Pi. Escribe

sudo raspi-config

y vaya a Opciones de interfaz para activar SPI.

Para flashear su chip, conecte el cable plano de su Pi en el conector en el circuito perfboard e inserte el chip en el zócalo IC apropiado (asegúrese de que esté orientado en la dirección correcta).

Al flashear un programa, también debe asegurarse de colocar los fusibles en el chip correctamente. En realidad, estos son solo bits en el chip que configura para indicarle a qué velocidad de reloj ejecutar, si debe borrar la EEPROM al escribir el chip, etc. Puede leer la especificación AVR completa para averiguar cómo configurar cada bit, pero es mucho más fácil usar la calculadora de fusibles que se proporciona en engbedded.com/fusecalc. Seleccione el nombre de la pieza del AVR que está utilizando y elija las opciones que desee en el área "Selección de funciones". Por lo general, solo me aseguro de que la configuración del reloj sea correcta y dejo el resto de cosas por defecto. Casi siempre querrá dejar "Programación en serie habilitada" MARCADA y "Restablecer desactivado" SIN MARCAR; de lo contrario, no podrá reprogramar el chip. Cuando tenga la configuración correcta, puede desplazarse hacia abajo en el área "Configuración actual" y copiar los argumentos AVRDUDE como se muestra en la imagen.

Para configurar los fusibles, ingrese el comando

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p

donde partname corresponde al chip que está utilizando. Puede encontrar la lista de nombres de piezas ingresando sudo ardude -c linuxspi -p? Type. Para actualizar su programa, asegúrese de que esté en su directorio actual e ingrese

sudo avrdude -c linuxspi -P /dev/spidev0.0 -p -U flash: w:: i

Después de ambos comandos, el LED se iluminará mientras se modifica el chip.

Paso 3: Poner los programas de Arduino en los AVR

Obtener programas de Arduino en AVR
Obtener programas de Arduino en AVR
Obtener programas de Arduino en AVR
Obtener programas de Arduino en AVR
Obtener programas de Arduino en AVR
Obtener programas de Arduino en AVR

El enfoque principal de este instructable es flashear programas ya compilados en chips, no cómo escribirlos o compilarlos. Sin embargo, quería explicar cómo se pueden compilar binarios usando el IDE de Arduino y ponerlos en chips AVR desnudos usando este método, ya que Arduino es relativamente fácil de aprender y hay muchos tutoriales y ejemplos.

Primero, necesitará agregar información sobre los chips AVR que estará flasheando para que el IDE sepa cómo compilarlos. James Sleeman ha reunido de manera muy útil algunos archivos de configuración, que están disponibles en github. Para usarlos, abra el menú "Preferencias" en el IDE de Arduino y haga clic en el cuadro junto al campo "URL adicionales del administrador de tableros". Copie y pegue las siguientes URL en el cuadro de diálogo que aparece:

Luego, vaya al menú "Herramientas" y busque la opción "Administrador de tableros …" en el submenú "Tablero". Desplácese hasta la parte inferior de la lista en el cuadro de diálogo Administrador de tableros e instale los tableros DIY ATmega y DIY ATtiny.

Para compilar sus programas, primero asegúrese de haber seleccionado el chip correcto en el menú "Procesador", así como la velocidad del procesador correcta. Seleccione la opción "Use Bootloader: No", ya que cargaremos directamente con el Pi y así podremos usar el espacio extra que normalmente ocuparía el bootloader Arduino. Ahora, haga clic en el botón "Verificar" (la marca de verificación). Esto compilará su programa sin intentar cargarlo (ya que usted mismo está haciendo ese paso).

Suponiendo que todo vaya bien, ahora necesita obtener el programa compilado en su Pi. El IDE los oculta en una ubicación temporal, ya que está diseñado para cargar programas por sí mismo. En Windows, está en AppData / Local / Temp en su directorio de usuario, en una carpeta que comienza con 'arduino_build'. Busque el archivo.hex, ¡ese es su programa! Envíelo a su Pi a través de FTP o con una memoria USB, y ya está en el negocio.

Hacer esto requiere que tenga una PC con Windows o Mac para compilar sus programas, que luego envía al Pi. Sería realmente hábil poder hacer esto en la propia Pi, pero desafortunadamente la versión oficial del IDE de Arduino disponible en el repositorio de Raspbian es bastante antigua y no tiene el Administrador de la Junta. Sin esto, agregar la configuración adecuada para compilar AVR desnudos es un poco más complicado. Hay tutoriales para compilar una versión más reciente de Arduino en tu Pi; si eso es lo que quieres hacer, ¡búscalos! También creo que debería ser posible hacer que el IDE use el programador linuxspi para flashear un chip desde el propio IDE (es decir, usando el botón "descargar"), pero esto está más allá de mi paciencia y nivel de habilidad, si sabes de de alguna manera, publícalo en los comentarios! Por último, puede escribir programas directamente en AVR-C y compilarlos en Pi con avr-gcc, lo que le brinda una plataforma de desarrollo AVR completa en Raspberry Pi. He hecho un poquito de eso, y si quieres ir por ese camino, te saludo. ¡Ponte a parpadear!

Recomendado: