¿Cómo graduarse de Arduino para usar un microcontrolador directamente?

19

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

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

No estoy realmente seguro de cómo hacer esto.

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

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

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

  1. Compre un programador, programe el MCU y luego coloque el chip en mi circuito.
  2. Diseñar mi circuito para incluir soporte para programación en circuito.

Asumo que si voy con la opción # 1, es tan simple como insertar un chip programado en mi circuito; No necesito nada mas. Por supuesto, cambiar el software sería 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 (¿qué tipo?). Entonces supongo que (correctamente) cableo el conector a ciertos pines en el ATmega.

De cualquier manera, necesitaré el estudio Atmel.

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

Almiar
fuente
2
Puede usar un Arduino para programar AVR. Personalmente, me gusta usar herramientas de línea de comandos y un archivo MAKE, en lugar de un IDE.
jippie
1
Esta pregunta podría ser más apropiada para Arduino Stack Exchange. arduino.stackexchange.com Ahora está en Beta pública
akellyirl
44
Pero mi objetivo es un diseño sin arduino.
Rick
"¿Hay algo en el arduino que realmente necesito?" Creo que necesitará los pines UART (también conocido como el puerto serie), es útil para la depuración.
vvy
El estudio Atmel no es absolutamente necesario. Programo mis chips desde la línea de comandos (y un editor de texto). Aunque concedido para grandes proyectos, el estudio de Atmel definitivamente lo hará más fácil
Chris Laplante

Respuestas:

10

Bienvenido al maravilloso mundo de Atmel. Permítame ofrecerle algunas respuestas a sus preguntas basadas en mi afición y experiencia profesional.

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

Atmel studio es bueno para programar. En realidad, es mi entorno de desarrollo integrado favorito. Puede usar herramientas de CLI como AVRDUDE y AVR-GCC, pero el IDE se encarga de eso por usted.

EN RESUMEN:

Compre un AVRISP solo para programar (más fácil, plug & play) o un DRAGON (no puedo ofrecer consejos).

En su placa, saque los pines ICSP a un encabezado 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.

HL-SDK
fuente
1
He tenido excelentes resultados con un EvUSBasp.
Ignacio Vazquez-Abrams
Una vez que saque los pines ICSP en mi placa, ¿tengo que dedicarlos para la programación en circuito, o puedo usarlos como pines GPIO de alguna manera?
Ricardo
2
Puede usarlos como GPIO ya que comparten las funciones con SPI. El programador reinicia el chip y luego se comunica con él.
HL-SDK
1
Serie de tutoriales relacionados sobre el comienzo de la programación de microcontroladores . Usan el AVRMega y pasan por el proceso de cableado del ISP y el lujoso código C para parpadear un LED.
MDMoore313
1
@ HL-SDK tiene razón en que solo el pin RESET realmente debe estar dedicado para ICSP, pero también se necesita cierta precaución para los otros pines, es decir, probablemente deberían usarse como pines de salida en lugar de pines de entrada (por lo que las señales no ' No se moleste por los circuitos externos en modo ICSP), y todo lo que esté conectado a ellos debe estar diseñado para no reaccionar negativamente a cualquier combinación de señal aleatoria que el tráfico de programación les envíe.
microtherion
10

No tiene que "graduarse" de una vez. Así es como me convertí:

Para comenzar, seguí usando un Arduino pero convertí las llamadas a la biblioteca de Arduino en registros de lectura y escritura, una línea a la vez, para ver si mis programas aún funcionaban. De esta manera me acostumbré a usar 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: puede leerlos y escribirlos directamente en sus bocetos.

Mi siguiente paso fue poner un ATTiny 85 en una placa de pruebas y programarlo con Arduino como ISP ( http://highlowtech.org/?p=1695 ). Si compra una fuente de alimentación de placa y utiliza el oscilador interno de ATTiny, esto requiere un cableado ridículamente pequeño. Usé el IDE de Arduino para compilar, pero seguí usando registros tanto como pude.

Luego, instalé la cadena de herramientas de línea de comandos gratuita Crosspack y compilé un programa parpadeante. Después de más pruebas y errores, logré programar ATTiny solo con avrdude, permaneciendo completamente fuera del ecosistema Arudino.

Una vez que haya alcanzado el parpadeo solo con las herramientas de línea de comandos, estará libre de Arduino. Explore los diversos periféricos y sus registros y pronto será totalmente natural.

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

usuario24505
fuente
8

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

Lea sobre la programación de ISP aquí . Le mostrará cómo mostrar las conexiones SPI. Las conexiones SPI en su chip estarán en la hoja de datos de ATmega. Busque en la página 2 los pines MISO / MOSI / SCK / RESET. El programador necesita poder controlar la línea de reinicio. Recuerde usar una resistencia pull-up en la línea de reinicio para que su chip se ejecute después de desconectar el programador.

Obtenga un encabezado 2x3 aquí . O haga el suyo usando encabezados separatistas.

qce88
fuente
2
En segundo lugar, obtendré un programador con soporte de depuración. A principios de este mes, me vi inmerso en un proyecto PIC32 sin experiencia previa de bajo nivel. Incluso con alguien más escribiendo la funcionalidad de golpeteo de bits de nivel más bajo, ni siquiera quiero pensar en cuánto más difícil averiguar dónde estaban mis problemas si todo lo que tuviera que ver dentro fuera un solo LED rojo / verde.
Dan Neely
Esto, una vez que tenga herramientas profesionales, no hay vuelta atrás.
Matt Young
7

La diferencia entre un Arduino y un ATmega328 desnudo es solo dos cosas. El cargador de arranque Arduino y las bibliotecas Arduino. Puede codificar un Arduino con C o C ++ sin utilizar ninguna de las bibliotecas. También puede usar el ensamblaje en su lugar. El gestor de arranque le permite cargar un nuevo código a través de serie sin pasar por la programación (en serie) en circuito (ligeramente) más complicada (básicamente SPI).

Puede usar bibliotecas de programación estándar y avr-gcc con casi cualquier ide. Al contrario de lo que otros podrían decir, codificar un Arduino es básicamente como codificar un microcontrolador simple, con algunas comodidades adicionales a expensas de cierto rendimiento.

Transeúnte
fuente
44
Pero también puede usar el gestor de arranque Arduino y las bibliotecas con un ATmega328 simple.
Ignacio Vazquez-Abrams
@ IgnacioVazquez-Abrams, que lo convierte en un arduino deshuesado, natch.
Passerby
5

Compro ATmega328P pre-bootloaded chips y programa de ellas en circuito con un cable de FTDI y avrdude, idéntica a cómo iba a programar el Arduino. Me gusta el Eclipse IDE, pero puede usar cualquier entorno que prefiera: Atmel Studio, Arduino IDE, emacs o descalzo en la línea de comandos.

Esta placa está en construcción en el punto donde está lo suficientemente completa como para probar con un programa Hello, utilizando el cable para programación, alimentación y terminal. Todavía necesitará su fuente de alimentación ( en mi caso, un regulador de voltaje de corriente de reposo ultra bajo LM2936 y un conector de batería) y cualquier otro componente integrado y conexiones externas que el proyecto necesitará:

NotDuino

Como tiene un Arduino, puede ahorrar un poco de dinero y usar chips no programados, utilizando el Arduino para instalar el gestor de arranque. ¡Las bonitas etiquetas azules de pin-out ayudan a mantener baja mi tasa de tonterías! Utilizo un cristal de 16MHz, pero si puede ejecutar con el oscilador interno, su recuento de piezas se reduce en 3 (los condensadores xtal y 2).

JRobert
fuente
2

Para pasar de Arduino donde se proporciona el hardware y el software es una superposición de lenguaje C, me gustaría hacer algunas sugerencias. Veo que la gente ha publicado algunas respuestas útiles, pero he estado donde estás y haría las cosas un poco diferentes.

  1. Elige un depurador. Los depuradores le brindan la capacidad de programar el microcontrolador, así como la depuración que incluye el procesamiento 'paso a paso', los 'puntos de interrupción' que le permiten pausar el programa en una determinada línea de código para verificar qué está haciendo el código. ISP (Programación en circuito) es una interfaz en serie, utiliza 3 pines, lo cual es bueno pero no proporciona la funcionalidad completa que un principiante desearía. La interfaz JTAG usa 4 pines que le proporcionan básicamente una funcionalidad completa en términos de uso de puntos de interrupción y otras cosas. La gente generalmente se inclina más hacia ISP porque es 'relativamente' más fácil de configurar, pero si me preguntas JTAG no es difícil de configurar, pero también se reduce a preferencias personales. Y ahí está Debug Wire interfaz que me gustaría omitir en esta discusión porque prefieres usar ISP que depurar el cable.
  2. Compre un depurador que tenga la funcionalidad de ISP y JTAG. Creo que compra una vez pero compra bien, lo que le ayudará en el futuro si desea cambiar su diseño. Recomiendo AVR Dragon o JTAGICE. Ambos se conectan a la PC a través de USB y ambos proporcionan ISP y JTAG. JTAGICE es un poco más costoso que AVR Dragon pero definitivamente recomiendo AVR Dragon.
  3. Encontrará que la mayoría de los microcontroladores Atmel tienen funcionalidad ISP pero no muchos tienen JTAG. Los microcontroladores pequeños como la serie AT90S2313 o ATTINY usan la serie ISP, ya que son de tamaño pequeño. Pero si está buscando no solo parpadear algunos LED sino que desea interactuar con una pantalla LCD o un teclado o lo que tenga, le recomiendo que busque un microcontrolador un poco más grande. Si está utilizando un suministro de 5V, le recomiendo ATMega8 o incluso ATMega16 o ATMega128 (mi favorito). ATMega16 y ATMega128 tienen interfaz ISP y JTAG.
  4. En lo que respecta a IDE, solía usar Code Vision y AVR Studio, pero recomiendo usar Atmel Studio 6.0 o superior, que satisface todas sus necesidades.

Tengo algunas ideas esquemáticas que aprendí por mi cuenta para que tengas una interfaz limpia y fluida con tu micro. Déjame saber si necesitas ayuda.

David Norman
fuente
1

Consejos honestos

Arduino es para principiantes, hay dos maneras de ir desde aquí

Forma 1: Comprender cómo funciona un micro controlador / procesador (enfoque preferible)

Atmel 8051

Con eso quiero decir aprender arquitecturas y código de ensamblaje (o metal desnudo) para el micro p / c. Si necesita un punto de partida para esto, sugeriría Atmel 8051, que es un microcontrolador de 8 bits con el conjunto de instrucciones de arquitectura y ensamblaje más simple. Cualquier otro procesador moderno de 32 bits o 64 bits tiene una forma de arquitectura derivada de él. Este microcontrolador todavía se está utilizando como parte de mis cursos de posgrado porque es un buen punto de partida y hay mucha literatura disponible.

Ah, y los kits para crear su placa ISP se venden (kits completamente ensamblados con processo, componentes de soldadura a kits de placa y puede construir la placa de desarrollo usted mismo, requiere solo un par de cables y enchufes IC-RS-232)

Como es de baja tecnología, todos los componentes serán baratos.

Camino 2: saltar a un enfoque de hardware y software (menos preferible)

Raspberry Pi Hueso Beagle Negro

Este es el enfoque para los holgazanes que se han sumergido en un poco de ensamblaje y "aprovechado" O las personas que quieren cambiar a más software que hardware. Sugeriría mudarse a otro tablero de aficionados como Raspberry Pi o BeagleBoneBlack con procesadores ARM y comenzar a hacer proyectos en su creatividad.

Dexobox
fuente
0

Puede usar la placa Arduino, sin usar las bibliotecas de sandbox y el entorno, puede programar todo usted mismo directamente. Si desea utilizar su gestor de arranque a través de serial / uart para programar, eso funciona bien. Pero la mayoría / todas las partes avr también se pueden programar de otra manera, con la parte retenida en el reinicio, lo que significa que no es bloqueable. es bastante fácil explotar spi de un arduino u otro microcontrolador o con un brote de sabor fuera de lo común. sparkfun tiene tableros arduino y no arduino (el 32u por ejemplo) que el encabezado spi es obvio. y tableros de arranque ftdi que puede bitbang fácilmente usando la biblioteca de ftdi o la biblioteca de ftdi que viene con linux.

La documentación de cada parte muestra las opciones de arranque y las opciones de programación flash. Sí, no es difícil comprar algunas piezas también y hacer su propio tablero de arranque. No haría eso hasta que haya utilizado una ruptura existente o una tabla de evaluación simple y luego la clone si es necesario. Idealmente, comience con una parte con un oscilador rc interno, básicamente pines de alimentación, tierra y programación ...

viejo contador de tiempo
fuente