21 votos

¿Cómo pasar de Arduino a utilizar directamente un microcontrolador?

He estado trabajando en un proyecto de Arduino. Después de conseguir que todo funcione utilizando el Arduino, me gustaría pasar a una solución que NO utilice el Arduino. Es decir, me gustaría utilizar un microcontrolador sin involucrar la placa Arduino. Esto permitirá una solución de una sola placa, sin escudo.

Sé que hay métodos para hacer mi propio Arduino en una protoboard, pero eso no es realmente lo que estoy tratando de hacer.

No estoy muy seguro de cómo hacer esto.

A menos que haya una opción mejor, me inclino por usar el ATmega328, que es el que usa el Arduino. Tengo entendido que las herramientas de desarrollo están disponibles de forma gratuita o, al menos, no son muy caras.

Para el propósito de esta pregunta, asume que puedo obtener +5V a mi circuito.

Mi primera pregunta es cómo programar la MCU. Creo que hay dos opciones:

  1. Comprar un programador, programar el MCU, y luego colocar el chip en mi circuito.
  2. Diseñar mi circuito para incluir soporte para la programación en circuito.

Estoy asumiendo que si voy con la opción #1, es tan simple como insertar un chip programado en mi circuito; no necesito nada más. Por supuesto que cambiar el software sería un inconveniente.

Pero para la opción 2, no estoy seguro de lo que necesito. Por lo poco que he leído, creo que necesito un cable de programación, y un conector en mi placa (¿de qué tipo?). Entonces supongo que (correctamente) cablear el conector a ciertos pines en el ATmega.

En cualquier caso, necesitaré el estudio Atmel.

En segundo lugar, aparte de la fuente de alimentación, ¿hay algo en el Arduino que sea absolutamente necesario? Supongo que tal vez un interruptor de reinicio?

4 votos

Puedes utilizar un Arduino para programar AVR. Personalmente me gusta usar herramientas de línea de comandos y un makefile, en lugar de un IDE.

1 votos

Esta pregunta podría ser más apropiada para el Arduino Stack Exchange. arduino.stackexchange.com Ya está en Beta Pública

7 votos

Pero mi objetivo es un diseño sin arduino.

15voto

fnkr Puntos 498

Bienvenido al maravilloso mundo de Atmel. Permíteme ofrecerte algunas respuestas a tus preguntas basadas en mi afición y experiencia profesional.

No se moleste con nada que no sea la programación en circuito. A menos que seas un codificador perfecto, quitar un chip cada vez que quieras programarlo es una pesadilla. Recomiendo el AVRISPmkII como una herramienta de programación de nivel de entrada. La desventaja es que no hay soporte de depuración de hardware. Una alternativa es el dragón pero no tengo experiencia con él. Puedo decir que el JTAGICEmk3 es una buena herramienta de depuración capaz.

Atmel studio es bueno para programar. De hecho, es mi entorno de desarrollo embebido favorito. Puedes usar herramientas CLI como AVRDUDE y AVR-GCC pero el IDE se encarga de eso por ti.

EN RESUMEN:

Comprar un AVRISP sólo para programar (más fácil, plug&play) o un DRAGON (no puedo aconsejar).

En tu placa, lleva los pines ICSP a un cabezal de 6 pines de doble fila de 0,100" -- las conexiones se describen en esta hoja de datos .

Los interruptores de reinicio no son necesarios.

1 votos

He tenido excelentes resultados con un EvUSBasp.

0 votos

Una vez que saque los pines ICSP en mi placa, ¿tengo que dedicarlos a la programación en circuito, o puedo seguir utilizándolos como pines GPIO de alguna manera?

2 votos

Puedes usarlos como GPIO ya que comparten las funciones con SPI. El programador pone el chip en reset y luego se comunica con él.

13voto

NickGPS Puntos 123

No tienes que "graduarte" de una vez. Así es como me convertí:

Para empezar, seguí usando un Arduino pero convertí las llamadas a la librería de Arduino en lecturas y escrituras de registros, una línea a la vez, viendo si mis programas seguían funcionando. De esta manera me acostumbré a usar los registros y vi que no eran radicalmente discontinuos con la forma de hacer las cosas de Arduino. Las funciones de Arduino como digitalWrite() simplemente manipulan los registros - eres libre de leer y escribir en ellos directamente en tus bocetos.

Mi siguiente paso fue poner un ATTiny 85 en una protoboard y programarlo con Arduino como ISP ( http://highlowtech.org/?p=1695 ). Si compras una fuente de alimentación para la protoboard y usas el oscilador interno del ATTiny, esto requiere muy poco cableado. Utilicé el IDE de Arduino para compilar, pero seguí utilizando los registros tanto como pude.

A continuación, instalé la cadena de herramientas de línea de comandos gratuita Crosspack y compilé un programa blinky. Después de algunas pruebas y errores más, logré programar el ATTiny sólo con avrdude, quedando completamente fuera del ecosistema Arudino.

Una vez que hayas conseguido blinky sólo con las herramientas de línea de comandos, estarás libre de Arduino. Explora los distintos periféricos y sus registros y pronto será totalmente natural.

Después de todo esto, a menudo me encuentro utilizando Arduino porque es más rápido. He descubierto que estudiar a fondo las descripciones de los registros es una mierda; no tiene sentido hacerlo si no es necesario. Sin embargo, es bueno saber cómo hacerlo.

8voto

saffsd Puntos 3141

Estoy de acuerdo con el comentario de HL-DSK. Yo me gastaría el dinero extra y conseguiría un programador con capacidad de depuración. Yo uso JTAGICE3, alrededor de $110 en digi-key.

Lea sobre la programación del ISP aquí . Le mostrará cómo sacar las conexiones SPI. Las conexiones SPI de tu chip estarán en la hoja de datos del ATmega. Busca en la página 2 los pines MISO/MOSI/SCK/RESET. El programador tiene que ser capaz de controlar la línea de reset. Recuerda utilizar una resistencia de pull-up en la línea de reset para que tu chip funcione después de desconectar el programador.

Consigue una cabecera de 2x3 aquí . O hacer el suyo propio utilizando cabeceras de ruptura.

3 votos

Apoyaré conseguir un programador con soporte de depuración. A principios de este mes fui lanzado en el extremo profundo en un proyecto PIC32 sin experiencia previa de bajo nivel. Incluso con otra persona escribiendo el nivel más bajo de bits golpeando funcionalidad, no quiero ni pensar en cuánto más difícil averiguar dónde estaban mis problemas si todo lo que tenía que ver en el interior era un solo LED rojo / verde.

0 votos

Esto, una vez que se dispone de herramientas profesionales, ya no hay vuelta atrás.

8voto

Passerby Puntos 28913

La diferencia entre un Arduino y un ATmega328 desnudo son sólo dos cosas. El Arduino Bootloader, y las bibliotecas Arduino. Puedes codificar un Arduino con C o C++ sin usar ninguna de las librerías. También puedes usar ensamblador en su lugar. El cargador de arranque le permite cargar nuevo código a través de serie sin pasar por la (ligeramente) más complicada programación en serie en el circuito (básicamente SPI).

Puede utilizar las bibliotecas de programación estándar y avr-gcc con casi cualquier ide. Al contrario de lo que otros puedan decir, codificar un Arduino es básicamente como codificar un microcontrolador desnudo, con algunas comodidades añadidas a costa de algo de rendimiento.

4 votos

Pero también puedes usar el gestor de arranque y las librerías de Arduino con un ATmega328 desnudo.

0 votos

@IgnacioVazquez-Abrams que lo convierte en un arduino bare-bones, natch.

5voto

Darren Newton Puntos 835

Compro Atmega328P precargado chips y programarlos in-circuito con un Cable FTDI y avrdude, de forma idéntica a como programaría el Arduino. Me gusta el IDE de Eclipse, pero puedes usar cualquier entorno que prefieras: Atmel Studio, el IDE de Arduino, emacs o barefoot en la línea de comandos.

Esta placa está en construcción en el punto en el que está lo suficientemente completa como para probarla con un programa Hello, utilizando el cable de programación, alimentación y terminal. Todavía necesitará su fuente de alimentación - LM2936 regulador de voltaje de corriente ultrabaja y un conector de batería, en mi caso - y cualquier otro componente a bordo y conexiones fuera de la placa que el proyecto necesite:

NotDuino

Ya que tienes un Arduino, podrías ahorrar un poco de dinero y utilizar chips sin programar, usando el Arduino para instalar el bootloader. El bonito azul pin-out Las etiquetas ayudan a mantener mi tasa de error baja. Yo uso un cristal de 16MHz pero si puedes usar el oscilador interno tu número de piezas se reduce en 3 (el xtal y 2 condensadores).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X