Programar ATMega 328

Buenas tardes.

Tengo pensado programar un ATMega 328 para programar el encendido secuencial de LEDs de la maqueta de un puente.

Mi idea era insertar el ATMega (comprado hace unos días en internet) en el zócalo de mi Arduino UNO. Y una vez insertado, cargarle el programa mediante el IDE de Arduino.

Mi duda es si puedo hacer esto realmente y luego insertar el micro en una protoboard, simplemente alimentándolo (y conectando los LEDs de la maqueta a las respectivas salidas).

¿Es posible hacerlo así? ¿O me dejo algo importante?

Muchas gracias por adelantado.

Un saludo.

Si, claro que podes correr la plataforma arduino con solo el Atmega328p, sin su "escudo".

Lo podes programar como si fuese un arduino, con su bootloader y empleando una interfaz FTDI (usb a serial ttl).

Y si lo programaras solo una vez, pues te conviene emplear el ISP, cargando el .hex directo en la flash del 328p, sin emplear "bootloader" alguno.

busca porque hay tremendisima cantidad de información por la red, palabras mágicas:

Arduino Stand alone
home made arduino
Arduino as ISP + avr

Si no le pones como no sabrá como hacerlo Alex1138.
Ponle enlaces o algun tutorial.

Aceptaría lo del tutorial o la explicación encantado, la verdad es que no he entendido muy bien el mensaje (soy algo novato en programar un microcontrolador "a pelo").

Muchas gracias.

Capitán, el aspirante a soldado ni siquiera ensucio los botines... debe demostrar aptitud y lograr el OK del examen médico!

No conozco al autor, esta impecable:
http://electronicadiy.blogspot.com.ar/2013/06/programador-atmega328-con-arduino.html

Aquí Él Capitán y La Tropa hablando del asunto:
http://forum.arduino.cc/index.php?topic=267205.0

y la barraca local, definitivamente hay que pasar por allí para lograr ingresar a la fuerza:
https://www.arduino.cc/en/pmwiki.php?n=Tutorial/ArduinoISP

Soldado, recuerde Uds tambien respetar las normas del foro y usar tags. Gracias soldado.

Seamos prácticos.
¿Merece la pena comprar el ATMega, programarlo (previo el BootLoader), el cristal, los condensadores, hacer la placa de CI?
Y un zócalo porque pasados unos días querremos mejorar su programación.
Todo ello frente a un Arduino Nano o Mini listo para usar (y reprogramar) por

5€

1,7€

A ver, por lo que extraigo de los links, para programar el microcontrolador mediante cable FTDI de forma "externa" a la placa Arduino únicamente tengo que meterle el bootloader. Para ello he visto que se puede montar un circuito para cargarle el bootloader y luego mediante el cable FTDI conectado al PC puedes cargarle el software que hayas hecho en el propio Arduino, ¿correcto?

En mi caso, yo puedo prescindir de todo eso si cada vez que quiera programar mi ATMega lo conecto al zócalo de mi Arduino UNO, ¿verdad? Mi idea es fabricar una PCB con un zócalo de 28 pines para insertar ahí mi ATMega. Pero cada vez que quiera programarlo puedo extraerlo e insertarlo en el zócalo del Arduino, ¿me equivoco? Es que siempre voy a tener mi Arduino a mano, no me supone ninguna molestia hacer este procedimiento. Sin embargo desplazar el ordenador hacia la maqueta o la maqueta hacia el ordenador sólo para conectarle el FTDI y programarlo sí que me supone una molestia (el montaje es fijo). De ahí mi necesidad de programar el ATMega a base de viajes. ¿Es posible hacerlo así? Yo entiendo que así me ahorro el paso del bootloader porque estás haciendo todo el proceso a través de la interfaz de Arduino, tanto en HW como en SW...

Lo que no sé es cómo debo conectar luego en la PCB el zócalo, de forma que el micro pueda actuar de forma autónoma. ¿Basta con que esté alimentado para que ejecute el programa que tenga almacenado en la FLASH o debe tener también algunos condensadores, resistencias de pull-up y demás?

Mil gracias a todos.

PD: ¿lo de los tags era a mi? Soy nuevo en el foro, perdón.

emiboto9:
PD: ¿lo de los tags era a mi? Soy nuevo en el foro, perdón.

no era para alex que ya editó y corrigió. Lo enlaces, imagenes y códigos debes insertarse usando tags.
si pegas un enlace y no usas el tag, ocurre que uno debe copia y pegar el link en el navegador y cuando usas el tag solo hace click y te lleva a donde quisiste referenciarnos.

Ahora tu hilo: quieres hacer un pcb y usar un ATMEGA328P tienes dos opciones. O lo programas como Arduino o lo programas como AVR (en C sin las instrucciones de arduino pero similares).
En ambos casos debes constrir en tu PCB todo o casi todo lo que hace que un ATMEGA328P funcione.
Cristal 16Mhz y dos capacitores 22pF. Capacitor de desacople 0.1uF y la bornera ICSP para programarlo y me olvidé de una resistencia para el RESET. O un circuito mejor para que al alimentarlo se resetee.

la pagina que lo muestra es An Arduino ICSP Board

Perfecto, muchas gracias.

Todos esos materiales creo que los tengo, igual no me quedan condensadores de 0'1uF, pero bueno, por lo demás todo OK.

Lo único es el tema de la bornera ICSP. Como comenté no quiero usar cables para programarlo, sino un zócalo del que pueda extraer el micro para insertarlo en Arduino y programarlo. Y luego devolverlo de nuevo al zócalo de la PCB. Me imagino que puedo ahorrarme por tanto la bornera, ¿correcto?

Y otra cosa más. He estado googleando y he visto que aunque programes el micro insertado dentro del propio Arduino, es necesario meterle en primer lugar el bootloader. ¿Me podéis confirmar esto, o estoy equivocado?

Muchas gracias por vuestras respuestas.

Un saludo.

opino como jopapa ,creo que no merece la pena ,salvo que lo hagas por el gusto de hacerlo (sarna con gusto no pica....) .si no es asi y el problema es no poder desplazar el ordenador,te da casi lo mismo fabricar un zocalo para insertar un nano o micro que el propio chip ,o puedes comprar uno hecho para el nano por muy poco:

yo pondría un zócalo comun pero como alternativa puedes usar un zócalo ZIF (mas caro) también conocido como zocala de fuerza cero.

No es mala idea aunque no creo que lo inserte y extraiga tantas veces como para necesitar un zócalo fuerza cero. Pero se agradece el aporte.

¿Sabéis algo acerca de mis dudas de antes? Lo del bootloader y lo de ahorrarme el conector ICSP.

Gracias.

emiboto9:
Perfecto, muchas gracias.

Todos esos materiales creo que los tengo, igual no me quedan condensadores de 0'1uF, pero bueno, por lo demás todo OK.

Lo único es el tema de la bornera ICSP. Como comenté no quiero usar cables para programarlo, sino un zócalo del que pueda extraer el micro para insertarlo en Arduino y programarlo. Y luego devolverlo de nuevo al zócalo de la PCB. Me imagino que puedo ahorrarme por tanto la bornera, ¿correcto?

Y otra cosa más. He estado googleando y he visto que aunque programes el micro insertado dentro del propio Arduino, es necesario meterle en primer lugar el bootloader. ¿Me podéis confirmar esto, o estoy equivocado?

Muchas gracias por vuestras respuestas.

Un saludo.

Para programar un ATMEGA, que no venga con el bootloader cargado necesitas o un cable ISP (con el que puedes cargar el bootloader y olvidate del cable pinchando el micro en otra placa arduino completa) o bien necesitas un arduino uno completo, programarlo como ISP y usarlo para programar tu ATMEGA, en la placa final donde deberá haber un conector para programarlo

Hola Emiboto9, es tal cual imaginas, podes programar el '328p desde un Arduino, cableando unos pocos cables, SIN NECESIDAD QUE EXISTA EL BOOTLOADER en el chip destino....

Encontre éste .pdf, está muy bueno, creo que es el "killer post" de todo este asunto.

Además siguiendo sus instrucciones lo acabo de lograr, programar un '328p recién comprado, ahí está funcionando su "blink.c.hex" compilado con el avr-gcc.

Mirá nomás donde está ese led, osadamente en el pin PB7 o sea donde iría el cristal oscilador, esto porque de fábrica el chip viene configurado para funcionar a 1Mhz y sin cristal resonador externo. O sea se pueden emplear estos dos pines como I/O.

Haciendo lo que pensas también podrás emplear los pines PD0 & PD1 sin que interfieran en la comunicación pues lo estas programando "afuera".

Viendo la info de la red, indica que se pueden programar otros chip de Atmel, de la nueva generación claro, Attiny2313 Attiny84/85 y sus parientes.

Lo de emplear el "escudo" Arduino (y sus variantes miniaturas), en mi visión depende de la necesidad o sea $.
Aquí los '328p son significativamente más económicos que las "shield" Arduino, es más, éste Atmega es más económico que los PIC (Microchips) a los que pueden reemplazar, así que no la pienso dos veces, compro el chip '328p solo y listo (hasta vienen con OptiBoot). Más aun que Yo tengo la parafernalia y experiencia para hacer mi propia pcb, dado que lo hago con los PIC-M.

Al Arduino lo conoci, cuando compre un A. Nano, pues descubri que podía programar algunos pic con él, me funciono con los pic12f675/629 16f628 18f2545 con los 16f7xx no pude! y me salía más económico que comprar el pickit2, al cual luego pude construir caseramente.

También con este pickit2 se puede programar los AVR, según descubri hace poco, tiene soporte desde AVRDUDE directamente, cosa que haré ni bien lo reforme al pickit2 mio.

Olvido, lo que está a la izquierda es un "Arduino" minimalista que me fabrique, las dos imágenes siguentes es su PCB simplista construida a mano, empleando líquido corrector. (quería probar esa historia pero no me gusto)

Cito mi comentario y resalto con negrita

yo pondría un zócalo comun pero como alternativa puedes usar un zócalo ZIF (mas caro) también conocido como zocalo de fuerza cero.

Sencillamente no entiendo para que sugieres que necesitarías algo diferente a un zócalo común y luego lo descartas. Tampoco me malentiendas. No es para ir a la guerra. Solo te entendí en esta dirección.

Mi idea es fabricar una PCB con un zócalo de 28 pines para insertar ahí mi ATMega. Pero cada vez que quiera programarlo puedo extraerlo e insertarlo en el zócalo del Arduino, ¿me equivoco?

Un post muy completo, mil gracias Alex1138.

Y el PDF que pasaste muy útil. Muchas gracias por los aportes.

Un saludo.

EDIT: Hola, surbyte. Perdón, no vi la segunda página del tema. Pues mi idea está bastante clara así que si has entendido dos cosas opuestas es culpa mía, me debo haber expresado mal.

Yo lo que quería era programar un 328p insertándolo en Arduino UNO. Una vez programado sacarlo de ahí e insertarlo en un zócalo de 28 pines (de este tipo) en una PCB diseñada por mí. Mi duda es si esta forma de programación funcionaba o no. Y de ser así, qué debo incluir en la PCB (además de las cosas que quiero comunicar con el pic) para que pueda funcionar el programa de forma autónoma (es decir, si hacen falta condensadores, o alimentar algún pin además de Vcc y GND, ... etc).