Programe un ATMega328P y úselo sin la placa Arduino

13

Me gustaría usar un ATMega328P para mi proyecto, espero hacerlo sin la placa Arduino.

Sé que con el IDE Arduino y una placa Arduino puedo programar el microcontrolador. Sin embargo, ¿sería posible una vez que haya programado y depurado el programa con la placa Arduino IDE + Arduino, quitar el microcontrolador de la placa Arduino y usar el ATMega328P por separado, sin la placa?

En caso afirmativo, ¿qué configuraciones adicionales debería hacer el ATMega328P para que funcione correctamente en el tablero?

Jorge
fuente
Use ATMEGA328 P-PU con Arduino UNO bootloader ... puede encontrarlo en tiendas de hobby y en línea y cosas ☺
Arthur
Usar el chip desnudo es absolutamente factible y no hay ningún problema.
dannyf
Esta no es la misma pregunta que su pero puede obtener algunos bits de información. arduino.stackexchange.com/questions/32970/…
Code Gorilla
Puede seguir las respuestas de esta pregunta
Rashedul Islam Emon

Respuestas:

7

Puede quitar un ATMEGA de un Arduino y usarlo en su propia placa, sin embargo, cuando se usa en una placa Arduino típica, el chip se fusionará para un cristal externo como fuente de reloj, en lugar del reloj interno (más simple pero menos preciso).

No puede cambiar la fuente del reloj a través de ISP a menos que la fuente del reloj que el chip espera actualmente esté operativa, por lo que si desea cambiar la selección del reloj, deberá hacerlo antes de quitar el chip del Arduino.

Sin embargo, también puede proporcionar un cristal de reloj y sus dos condensadores (o un resonador sustituto que a menudo tiene esto incorporado) en su placa externa.

Por lo general, los chips (incluso los que se presentaron previamente con un gestor de arranque como conveniencia) son más baratos que las placas, por lo que no está claro por qué querría mover el mismo chip del Arduino en lugar de usar otro. De todos modos, querrá un adaptador serie de nivel lógico USB, y una vez que tenga eso, puede hacer el desarrollo en el chip desnudo de su placa, incluso si realiza las pruebas iniciales en el Arduino. En caso de que no tenga el convertidor USB, puede extraer el chip de una placa Arduino y pasar los cables desde su D1 y D0, o mantener el chip incorporado en el reinicio para permitirle tomar prestadas esas líneas serie sin interferencia.

Chris Stratton
fuente
1
Mi idea es usar solo un microcontrolador sin una placa. Como es fácil programar un Arduino, pensé que podría elegir un ATMega. Entonces, tengo un Arduino uno, mi idea es comprar solo un ATMega y programarlo y depurarlo usando la placa uno. Sin embargo, acabo de volver a clasificar que si separo el ATMega del Arduino, necesitaría agregar componentes (cristal, pull up resitances ...). ¿Puedes explicar a qué te refieres en el último párrafo de tu publicación? ¿Hay una manera simple de programar directamente un ATMega (o cualquier otro microcontrolador) sin usar el IDE de Arduino? Gracias.
George
Si bien puede omitir el IDE, usarlo o no es esencialmente irrelevante para la complejidad de su circuito, ya que puede usar el IDE o no con un circuito que tenga o no un reloj externo y que use un USB- serial en su placa de destino, en un cable o mediante la programación de su boceto con un programador ISP. Sacar un chip de una placa no le da nada en comparación con solo comprar un chip, ya sea con un gestor de arranque o sin él, y cargar uno usted mismo, potencialmente utilizando su Arduino intacto como programador ISP, o utilizando ISP para cargar directamente su boceto sin un gestor de arranque.
Chris Stratton
7

Sí, puedes usar ATMega328Psin placa arduino. Siempre uso el IC sin arduino. Hay dos formas de hacerlo.

  1. Puede usar la placa arduino con el IC. Programe el CI y luego sáquelo y úselo en su circuito. Tendrás que usar 16MHZ Oscillatorcon condensadores.
  2. Si no tiene una placa Arduino, puede usar otros programadores como USBasppara programar su Atmega328p. En este caso, no use el botón de carga directa, en su lugar use la carga usando las opciones del programador del menú archivo. No olvide seleccionar el tablero como Arduino Pro or Pro Mini (5v, 16mhz) With ATmega328y el programador como USBasp.

NOTA : Consulte la asignación de pines Atmega328p y programe su dispositivo en consecuencia. ¡Disfrutar!

Aeronave
fuente
2

Busque "Build an Arduino" : encontrará toneladas de artículos sobre cómo hacerlo. Necesitaría poder soldar conexiones en una placa de circuito impreso (y ni siquiera eso si quisiera usar una placa de prueba sin soldadura), pero es realmente sencillo. Incluso puede construirlo primero y programar la MCU en la PCB utilizando un cable FTDI. Utilizo una placa Arduino y una placa sin soldadura para experimentar con piezas desconocidas, pero generalmente voy de inmediato a una placa construida a mano una vez que estoy familiarizado con todos los componentes que usaré.

La creación de prototipos con la placa Arduino le permite juntar un montón de partes y hacer que algo funcione rápidamente, y si el Arduino es más capaz que su objetivo final, f / ex, un Mega 2650, puede ignorar temporalmente la memoria y las restricciones de E / S del dispositivo más pequeño.

JRobert
fuente
0

Es bastante fácil usar un chip Arduino independiente. Lo único complicado del chip utilizado para las placas oficiales es que están fusionadas para usar el oscilador externo más rápido (y más preciso) que está montado en la placa. Esto se aplica incluso cuando compra los chips sueltos, ya que la mayoría se revenden con la intención de instalarse en una placa Arduino para reemplazar una quemada, con la excepción de quizás las de Digikey.

Advertencias: El Arduino está diseñado como una placa de creación de prototipos, y pocas cosas funcionan mejor que en esta tarea. Es posible que desee dejar el chip en la placa Arduino hasta que termine de diseñar y probar su circuito. Solo entonces lo conectas directamente. Se puede usar en el lugar si tiene un circuito de reloj, o puede cambiar los fusibles (ver más adelante) y reprogramar el Arduino con un adaptador ISP y una velocidad de reloj de 8 mhz (PlatformIO le permite hacer esto ( y permite importaciones de un boceto de Arduino): consulte en su página de documentos el complemento Atmel AVR, pero también puede buscar una serie de guías sobre cómo agregar un archivo de placa a Arduino para decirle que use la opción de 8 mhz para un chip simple)

Si quita el chip para usarlo en un circuito diferente, necesita que el circuito del reloj se agregue nuevamente o que se cambien sus fusibles (lo abordaré en un minuto). También será difícil de programar, por varias razones, por lo que querrá comprar un poco de hardware bastante barato:

Programación de un chip independiente: la CPU del Arduino no está diseñada de forma nativa para hablar con una computadora. Necesitas un intermediario. En el Uno, esto se hace a través de un segundo chip Atmel que tiene capacidad USB y un gestor de arranque en el chip principal. Lo que hace es usar el UART para cargar el programa mientras el chip USB convierte los mensajes de la PC en señales UART. Dado que el gestor de arranque es algo problemático cuando el chip está solo (dado que UART es exigente e instalarlo configura el chip para usar un reloj externo como resultado), querrá comprar un programador ISP para el Arduino (o siga el boceto de Arduino como ISP y las instrucciones para hacer el suyo, que requiere un Arduino con chip presente, por lo que necesitará un segundo para programarlo).

Estos pueden programar el ATMega 328 directamente a través de SPI, sin un gestor de arranque (hay muchas instrucciones en Internet; busque "programar ATMega 328P con USBAsp", por ejemplo). Esto hace que sea mucho más fácil cambiar y depurar su programa fuera de sacar el chip y volver a colocarlo en la placa Arduino original. También necesita uno para cambiar la configuración del reloj si no desea utilizar un cristal externo.

Si desea depurar el chip, también es útil comprar un adaptador FTDI u otro convertidor de USB a UART. Tenga en cuenta que sin la parte del circuito de reinicio de la placa (o de nuevo, agregando la suya propia), esto todavía no le permitirá programar el ATMega incluso con el gestor de arranque. Para eso, conecte los pines de tierra, RX y TX al adaptador. Es posible que desee o no conectar la línea VCC, pero se recomienda no hacerlo si hay muchas cosas conectadas al chip y / o tiene su propia fuente de alimentación. Tenga en cuenta que RX y TX deben intercambiarse cuando los conecta; es decir, RX a TX y TX a RX: desea que el chip RX (reciba) lo que el adaptador es TX (transmisión) y viceversa.

El circuito del reloj no es difícil de construir, pero requiere algunos componentes que quizás no tenga. Entonces, para cambiar la fuente del reloj , vaya a http://www.engbedded.com/fusecalc/ y seleccione ATMega 328P. Los valores predeterminados son buenos, pero es posible que desee habilitar EEPROM para mantener borrado y deshabilitar el reloj dividir por 8 o ajustar la configuración de caída de voltaje. No toque nada más (deshabilitar reset o SPI o habilitar DebugWire resulta en "diversión" que requiere la reparación de un programador de HV). Cuando termine, pegue el comando que proporciona al comando AVRDude. Tendrá que cambiar las opciones -c (-p ya está configurado en el ATMega 328P, pero fallará para los que no sean P 328, no los compre) y quizás agregue la opción -P (para Puerto). No omita la opción -u en minúsculas, o se negará a actualizar los fusibles.

avrdude -p m328p -v -c usbasp -B 100 -u [add extras here: (-P <PORT>) <fuse set command here>]

Tenga en cuenta que si compra un USBASP (¡asegúrese de que tenga tres juegos de puentes!), A pesar de que son mi programador favorito, es posible que no tengan el firmware actualizado que admita la opción -B (que probablemente necesitará). Eso significa que debe conectarlo a un Arduino a través del puerto de programación de seis pines, exactamente de la misma manera que lo usaría para programar el cargador de arranque del Arduino, pero luego usar el boceto Arduino como ISP para programar el nuevo firmware al programador (busque "actualizar el firmware usbasp a través de arduino-as-isp")! Como referencia, eso generalmente significa que el cable está alejado del cuerpo de la placa, y probablemente tendrá que programar el boceto antesconectando el cable. También habilite el puente de alimentación desde el programador en el USBASP (5V) y el "autoprograma". (consulte https://forum.arduino.cc/index.php?topic=560719.0 para conocer la ubicación de los puentes de alimentación y programa (JP2)).

RDragonrydr
fuente