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

19

He estado trabajando en un proyecto Arduino. Después de hacer que todo funcione con el 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 son muy caras.

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

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

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

Supongo 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 (apropiadamente) conecto el conector a ciertos pines en el ATmega.

De cualquier manera, necesitaré el estudio Atmel.

Segundo, aparte de la fuente de alimentación, ¿hay algo en el Arduino que absolutamente necesito? Supongo que tal vez un interruptor de reinicio?

    
pregunta Rick

8 respuestas

10

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

No se moleste con nada, PERO la programación en el circuito. A menos que seas un programador perfecto, eliminar una ficha 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 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 la programación. En realidad, es mi entorno de desarrollo integrado favorito. Puede usar herramientas CLI como AVRDUDE y AVR-GCC, pero el IDE se encarga de eso por usted.

EN RESUMEN:

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

En su tablero, lleve los pines ICSP a un encabezado de 0.100 "de doble fila de 6 pines", las conexiones se describen en esta hoja de datos .

Los interruptores de reinicio no son necesarios.

    
respondido por el HL-SDK
10

No tienes que "graduarte" 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 que se leen y escriben, una línea a la vez, para ver si mis programas aún funcionan. De esta manera me acostumbré a usar registros y vi que no eran radicalmente discontinuos con la forma en que Arduino hacía las cosas. Las funciones de Arduino como digitalWrite () simplemente manipulan los registros, puedes leerlos y escribirlos directamente en tus bocetos.

Mi siguiente paso fue colocar un ATTiny 85 en una placa de pruebas y programarlo con Arduino como ISP ( enlace ). Si compra una fuente de alimentación eléctrica 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 los registros tanto como pude.

Luego, instalé la cadena de herramientas de línea de comandos Crosspack gratuita y compilé un programa de blinky. Después de un poco más de prueba y error, logré programar ATTiny solo con avrdude, quedándome completamente fuera del ecosistema de Arudino.

Una vez que haya alcanzado el parpadeo solo con las herramientas de la 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 encontrado que estudiando minuciosamente las descripciones de los registros es un poco horrible; No tiene sentido hacerlo si no es necesario. Aunque es bueno saber cómo hacerlo.

    
respondido por el user24505
8

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

Lea sobre la programación del ISP aquí . Le mostrará cómo llevar a cabo las conexiones SPI. Las conexiones SPI en su chip estarán en la hoja de datos de ATmega. Mire 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 de pull-up en la línea de reinicio para que su chip se ejecute después de que se desconecte el programador.

Consiga un encabezado de 2x3 aquí . O haga su propio uso de encabezados disidentes.

    
respondido por el qce88
7

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

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

    
respondido por el Passerby
5

Compro chips Atmega328P pre-bootloaded y los programo en el circuito con un FTDI cable y avrdude, de manera idéntica a como programaría el Arduino. Me gusta el IDE de Eclipse, pero puede utilizar cualquier entorno que prefiera: Atmel Studio, el IDE de Arduino, 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 probarla con un programa Hello, usando el cable para programación, alimentación y terminal. Todavía necesitará su fuente de alimentación: LM2936 regulador de voltaje de corriente extremadamente bajo y un conector de batería , en mi caso, y cualquier otro componente a bordo y conexiones externas que necesite el proyecto:

YaquetienesunArduino,puedesahorrarunpocodedineroyusarchipsnoprogramados,usandoArduinoparainstalarelcargadordearranque.¡Lasbonitasetiquetas pin-out azul ayudan a mantener mi tasa de tonterías baja! Utilizo un cristal de 16 MHz, pero si puedes correr con el oscilador interno, el número de piezas se reduce en 3 (el xtal y los 2 condensadores).

    
respondido por el JRobert
2

Para pasar de Arduino donde se proporciona el hardware y el software es una superposición en 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 cosas un poco diferentes.

  1. Elija 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 en qué se basa el código. ISP (Programación en circuito) es una interfaz en serie, utiliza 3 pines, lo que es bueno pero no proporciona la funcionalidad completa que un principiante desearía. La interfaz JTAG utiliza 4 pines, lo que le proporciona una funcionalidad básicamente completa en cuanto al uso de puntos de interrupción y otras cosas. La gente suele inclinarse más hacia el ISP porque es "relativamente" más fácil de configurar, pero si me pregunta, no es difícil configurar JTAG, pero también se reduce a las preferencias personales. Y hay una interfaz Debug Wire que me gustaría omitir en esta discusión porque prefieres usar ISP en lugar de depurar.
  2. Compre un depurador que tenga funcionalidad ISP y JTAG. Creo que compra una vez, pero compra una buena 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 de Atmel tienen funcionalidad ISP pero no muchos tienen JTAG. Los microcontroladores pequeños como las series AT90S2313 o ATTINY usan series ISP, ya que son pequeñas en tamaño. Pero si está buscando no solo parpadear unos pocos LEDs, sino que también 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 5 V, 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 una versión más reciente que satisfaga todas sus necesidades.

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

    
respondido por el David Norman
1

Consejo honesto

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

Modo 1: comprender cómo funciona un microcontrolador / procesador (enfoque preferible)

Poresomerefieroalasarquitecturasdeaprendizajeyelcódigodeensamblaje(osimple)paraelmicrop/c.Sinecesitaunpuntodepartidaparaesto,lesugeriríaAtmel8051,queesunmicrocontroladorde8bitsconelconjuntodeinstruccionesdeensamblajeyarquitecturamássimple.Cualquierotroprocesadormodernode32bitso64bitstieneunaformadearquitecturaderivadadeél.Estemicrocontroladortodavíaseestáutilizandocomopartedemitrabajodeposgradoporqueesunbuenpuntodepartidayhaymuchaliteraturadisponible.

Ah,yloskitsparacrearsuISPsevenden(loskitsseensamblancompletamenteconelproceso,sueldanloscomponentesaunkitdeplacayustedpuedeconstruirlaplacadedesarrolloustedsolonecesitaunpardecables/zócalosICyRS-232)

Comoesdebajatecnología,todosloscomponentesseránbaratos.

Modo2:saltaraunenfoquedehardware-software(menospreferible)

Esteeselenfoqueparalosvagosquesehansumergidoenunpocodeensamblajeyhan"aprovechado" O a las personas que quieren cambiar a más software que hardware. Yo sugeriría pasar a otro panel de aficionados como Raspberry Pi o BeagleBoneBlack con procesadores ARM y comenzar a hacer proyectos y su creatividad.

    
respondido por el Dexobox
0

Puede usar la placa Arduino, sin usar las bibliotecas y el entorno de sandbox, puede programar todo usted mismo directamente. Si desea utilizar su gestor de arranque a través de serial / uart para programar, funciona bien. Pero la mayoría / todas las partes de avr también se pueden programar de otra manera, con la parte mantenida en reinicio, lo que significa que no es bloqueable. es bastante fácil de bang spi spi de un arduino u otro microcontrolador o con una ftdi de algún sabor. sparkfun tiene tableros arduino y no arduino (el 32u por ejemplo) que el encabezado spi es obvio. y tableros de ruptura ftdi con los que puede hacer bitbang fácilmente usando la biblioteca de ftdi o la biblioteca 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 partes y hacer tu propia tabla de ruptura. No lo haría hasta que haya utilizado una tabla de evaluación de ruptura simple o simple y luego clone eso si es necesario. Lo ideal es comenzar con una parte con un oscilador rc interno, básicamente pines de potencia, tierra y programación ...

    
respondido por el old_timer

Lea otras preguntas en las etiquetas