desktop

Programador USB para microcontroladores AVR atmel

Como algo muy positivo para recalcar de esta familia es lo estables que son estando en la misma fase que un motor con tan solo un capacitor en paralelo (no un Pi con un choque como recomienda el fabricante), bah en realidad 2, uno para c/entrada de Vcc y Gnd.

El motor era monofásico, de 220v y unos 7A (nada del otro mundo), pero en la misma linea también había una Pc que c/vez que arrancaba el motor se reiniciaba, el Atmega8 seguía sin problemas.
 
Muy cierto lo de la inmunidad al ruido, una vez escuche decir que en este tema del ruido los freescale se llevan la de oro los 8051 la de plata y los avr la de bronce y los pic's ni si quiera figuraban :LOL: en fin hoy arme el usbtiny y los resultados fueron magnificos y a la primera, cabe mencionar que si es un poco mas lento comparado con lazarux pero le ayuda la amplia gama de micros que soporta y las funcionalidades que tiene el software sinaprog y pues lazarux ya tiene rato que no se aparece por aca :unsure::unsure::unsure:
 

Adjuntos

  • programadoravr.jpg
    programadoravr.jpg
    98.8 KB · Visitas: 25
hoy arme el usbtiny y los resultados fueron magnificos y a la primera, cabe mencionar que si es un poco mas lento comparado con lazarux pero le ayuda la amplia gama de micros que soporta y las funcionalidades que tiene el software sinaprog

Felicidades por el programador. En las primeras páginas del post te aparece como hacer para aumentar la velocidad de programación mediante comandos del AVRDUDE...si no lo entendes decime.
 
No encontre esa parte donde hablas de como incrementar la velocidad, lo que si encontre fue la pelea diplomatica entre foxil y alepusto jajaja pero no vi esa parte Moyano
 
Hola Moyano, ha ya encontre en la pagina del USBtiny como aumentar la velocidad, solo tienes que agregar "-B 1" en la linea de argumentos para AVRDUDE, y como estos usando Burn-O-Mat pues solo tengo que ir a Settings y en la linea additional options agrego -B 1 y listo ahora solo tarda 11.87 segundos en leer toda la flash de un atmega32 "perfectisimo" y tarda cerca de 25 segundos en grabar toda la flash, PERO "puff siempre tiene que haber un pero" esto solo es valido si tienes configurado los fuses del micro para que funciono a una frecuencia mayor a 4 Mhz si no no funciona, en fin estoy feliz con el duo poderoso ( USBtiny - Burn-O-Mat) SinaProg si tiene mas micros pero Burn-O-Mat tiene los que uso regularmente y esta mas bonito y es mas facil configurar los fuses.
 
Hola Moyano, ha ya encontre en la pagina del USBtiny como aumentar la velocidad, solo tienes que agregar "-B 1" en la linea de argumentos para AVRDUDE, y como estos usando Burn-O-Mat pues solo tengo que ir a Settings y en la linea additional options agrego -B 1 y listo ahora solo tarda 11.87 segundos en leer toda la flash de un atmega32 "perfectisimo" y tarda cerca de 25 segundos en grabar toda la flash, PERO "puff siempre tiene que haber un pero" esto solo es valido si tienes configurado los fuses del micro para que funciono a una frecuencia mayor a 4 Mhz si no no funciona, en fin estoy feliz con el duo poderoso ( USBtiny - Burn-O-Mat) SinaProg si tiene mas micros pero Burn-O-Mat tiene los que uso regularmente y esta mas bonito y es mas facil configurar los fuses.

Claro, solo es posible cuando usas cristales mayores a 4Mhz. Yo por lo general trabajo a 12Mhz...así que lo uso regularmente...yo por mi lado no uso más programas de grabado, hago lo siguiente:

1° - Creo el programa en WINAVR (para los programas en C).
2° - Compilo usando un Makefile genérico...(el mismo que te crea AVRSTUDIO por defecto), con la frecuencia de trabajo a utilizar.
3° - Creo un archivo .bat con todos los argumentos necesarios para grabar el microcontrolador ...fuses y programa...incluido las configuraciones del programador, velocidad de grabación, etc.
Con esto me olvido de la necesidad de usar un programa específico...pero bueno...es una forma de trabajo particular...cada uno tiene la propia.

Un saludo y felicitaciones !
 
3° - Creo un archivo .bat con todos los argumentos necesarios para grabar el microcontrolador ...fuses y programa...incluido las configuraciones del programador, velocidad de grabación, etc.
Con esto me olvido de la necesidad de usar un programa específico...pero bueno...es una forma de trabajo particular...cada uno tiene la propia.

Que interesante, no tenia idea que existía ese método para especificar configuraciones especialmente de fuses, muchas veces "tiqueo" las casillas incorrectas al grabar y después me resulta más dificil reparar mi error, en fin...

si no te importa ¿podrías comentar algo mas acerca de como crear archivos .bat que contengan configuraciones antes de grabar el microcontrolador?
 
hola moyano, estuve diseñando una placa entrenadora para el attiny pero tuve unos problemas.

hice una plaqueta adaptadora para 6 pines del isp del attiny. primero no la hice bien y cruce unas lineas. (cuando conectaba tu programador se apagaba, parecia un corto), lo soluciones arreglando esa plaqueta adaptadora.

despues probe y lo leia perfecto pero al momento de grabar me decia 0bytes y no oscilaba el micro.
despues vi en los fusibles (no recuerdo que valor) pero estaba seleccionado el oscilador interno
quise acomodar los fusibles y creo que al momento de grabarlo se me quemo el micro =( no se por que.

la joda es que es smd y tendre que cambiarlo en el trabajo.


mi peticion es si puedes hacerme un esquema de como tendria que grabar el micro con tu programador en modo isp te dejo adjunto mis circuitos en proteus para que lo veas y me aconsejes por favor.

te dejo mi programa:
#define F_CPU 11059200UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/delay.h>


int main(void)
{
//CONFIGURO LOS PUERTOS:
DDRB=0XFF; //port b como salida
PORTB=0X00;
while(1)
{
PORTB=(1<<PB7);
_delay_ms(500);
PORTB&=~(1<<PB7);
_delay_ms(500);
}
}



muchas gracias
 

Adjuntos

  • placas.rar
    41.6 KB · Visitas: 48
Hola gonpa como estás.

El problema radica en varias cosas. Los microcontroladores ATMEL tienen algunos detalles que los hacen bastantes sensibles cuando se trata de programación:
1 - Absolutamente todos los microcontroladores vienen de fábrica para que los uses con el oscilador interno. Por lo tanto si queremos usar un cristal externo primero debemos configurar los fuses y LUEGO conectarle el cristal ...del lo contrario se desincroniza el reloj interno y no lo podés programar más por ISP.

2 - Hay que tener en cuenta el reset...mi versión preliminar del programador no tiene el pin de reset con buffer como en el diseno original. Ahora estoy dando los toques finales a la versión 2.0 que si tiene ese punto tomado en cuanta. (El problema que presenta esto es que si usamos un pulsador con una resistencia pull-up conectada a positivo ...el programado no reconoce el micro)

3 - La alimentación del programador (5v) no puede estar en contacto con otra fuente de 5v externa...por eso tiene un jumper el programador para elejir entre una fuente externa de alimentación y la alimentación propia del USB que no puede entregar más de 500mA.

En fin...esas son algunas cosas importantes a tener en cuenta. Ahora por favor si podés pasarme los esquemáticos en formato PDF por que no tengo el programa para abrir los archivos.

Un saludo !
 
hay forma de configurar los fuses en el programa a grabar? osea si uno tiene una placa con un micro atmel smd y no quiere desoldar el cristal para grabarlo no puede?

te dejo las placas en pdf aqui miralas y contame!
gracias!



ah algo muy extraño qu eme olvide de decirte, cuando conecto el programador el led de la entrada DC se prende 0_0 no se por que si esta totalmente separado espero poder experimentar con estos micros smd =(

avrdude -C avrdude.conf -c usbtiny -p t2313 -U flash:r:"C:\Documents and Settings\Gonzalo\Escritorio\programas en GCC\attiny2313\prueba\prueba\Debug\prueba.hex":i -q



avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.


avrdude done. Thank you.

eso me tira el sinaprog me olvide de ponerlo aqui
 

Adjuntos

  • PDF´S.rar
    194.8 KB · Visitas: 39
Última edición:
Hola gonpa como estás.

El problema radica en varias cosas. Los microcontroladores ATMEL tienen algunos detalles que los hacen bastantes sensibles cuando se trata de programación:
1 - Absolutamente todos los microcontroladores vienen de fábrica para que los uses con el oscilador interno. Por lo tanto si queremos usar un cristal externo primero debemos configurar los fuses y LUEGO conectarle el cristal ...del lo contrario se desincroniza el reloj interno y no lo podés programar más por ISP.

2 - Hay que tener en cuenta el reset...mi versión preliminar del programador no tiene el pin de reset con buffer como en el diseno original. Ahora estoy dando los toques finales a la versión 2.0 que si tiene ese punto tomado en cuanta. (El problema que presenta esto es que si usamos un pulsador con una resistencia pull-up conectada a positivo ...el programado no reconoce el micro)

3 - La alimentación del programador (5v) no puede estar en contacto con otra fuente de 5v externa...por eso tiene un jumper el programador para elejir entre una fuente externa de alimentación y la alimentación propia del USB que no puede entregar más de 500mA.

En fin...esas son algunas cosas importantes a tener en cuenta. Ahora por favor si podés pasarme los esquemáticos en formato PDF por que no tengo el programa para abrir los archivos.

Un saludo !

Hola Moyano Jonathan,

Quería complementar la información que has comentado, no todos los microcontroladores AVR vienen de fábrica con el oscilador interno activo, la excepción son los microcontroladores que incluyen periférico USB, ya que es indispensable el oscilador externo para garantizar la frecuencia del PLL que genera el timing del periférico USB. Sería la única excepción a la regla.

Por otro lado, un pequeño tip, cuando realizas una mala programación del microcontrolador y por cosas del destino quedan mal programados los fusebits, y no te permite programar más por ISP, puedes recuperar el microcontrolador con un generador de señales. Conectas a XTAL1 la señal del generador, en niveles TTL obviamente, y varías la frecuencia desde menos de 1MHz hasta 5 u 8 MHz inclusive. Comienzas con las bajas e intentas programar por ISP. Si no funciona, sigues subiendo la frecuencia, hasta que lo logres. Esto me ha funcionado en varias ocasiones.
 
Hola amigo alepusto acabo de hacer loq ue dijiste a una frecuencia de menos de 1MHz y lo lee de nuevo pero aun no puedo hacer que grabe el programa en el microcontrolador.... me sigue diciendo :

avrdude -C avrdude.conf -c usbtiny -p t2313 -U flash:w:"C:\Documents and Settings\Gonzalo\Escritorio\programas en GCC\attiny2313\prueba\prueba\Debug\prueba.hex":a -q



avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x1e910a
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "C:\Documents and Settings\Gonzalo\Escritorio\programas en GCC\attiny2313\prueba\prueba\Debug\prueba.hex"
avrdude: input file C:\Documents and Settings\Gonzalo\Escritorio\programas en GCC\attiny2313\prueba\prueba\Debug\prueba.hex auto detected as Intel Hex
avrdude: writing flash (0 bytes):
avrdude: 0 bytes of flash written
avrdude: verifying flash memory against C:\Documents and Settings\Gonzalo\Escritorio\programas en GCC\attiny2313\prueba\prueba\Debug\prueba.hex:
avrdude: load data flash data from input file C:\Documents and Settings\Gonzalo\Escritorio\programas en GCC\attiny2313\prueba\prueba\Debug\prueba.hex:
avrdude: input file C:\Documents and Settings\Gonzalo\Escritorio\programas en GCC\attiny2313\prueba\prueba\Debug\prueba.hex auto detected as Intel Hex
avrdude: input file C:\Documents and Settings\Gonzalo\Escritorio\programas en GCC\attiny2313\prueba\prueba\Debug\prueba.hex contains 0 bytes
avrdude: reading on-chip flash data:
avrdude: verifying ...
avrdude: 0 bytes of flash verified

avrdude: safemode: Fuses OK

avrdude done. Thank you.




espero puedas ayudarme =)
 
emm si creo que si, ya lo pongo



esta es la carpeta debug de mi programa, en unos post mas arriba esta el dicho programa.

recien me funciono lo que enseñaste ahi pero volvi a intentar mover el clock y se bloqueo de nuevo =(
 

Adjuntos

  • Debug.rar
    8.3 KB · Visitas: 28
Última edición:
ok, lo que pensé, el archivo HEX está vacio, no te va a programar la Flash porque no hay nada que programar. Revisa tu herramienta de compilación, que estas usando, AVR Studio, Codevision,...?
 
La verdad no se, borra el archivo HEX, vuelve a compilar y mira a ver si vuelve a aparecer ahi... verifica en las opciones del proyecto que hayas seleccionado correctamente la arquitectura AVR8 y el microcontrolador correcto... si tu código es un solo archivo .c, puedes anexarlo, yo lo compilo, monto el HEX aqui para que al menos pruebes que el programador esté funcionando correctamente...
 
hay forma de configurar los fuses en el programa a grabar? osea si uno tiene una placa con un micro atmel smd y no quiere desoldar el cristal para grabarlo no puede?

te dejo las placas en pdf aqui miralas y contame!
gracias!

No hace falta que saques el microcontrolador de la placa para grabar los fuses. Yo hasta ahora no he encontrado la forma de incluir la definición de los fusibles en el programa.

Antes de soldar el cristal tendrías que grabar los fuses. Si no no se puede...salvo que uses un programador HSVP...pero es otra historia.

ah algo muy extraño qu eme olvide de decirte, cuando conecto el programador el led de la entrada DC se prende 0_0 no se por que si esta totalmente separado espero poder experimentar con estos micros smd =(

Ese error no se a que se pueda deber....

El error que te tira el sinaprog es por que no detecta a ningún microcontrolador conectado...no es un error del programador..

Hola Moyano Jonathan,

Quería complementar la información que has comentado, no todos los microcontroladores AVR vienen de fábrica con el oscilador interno activo, la excepción son los microcontroladores que incluyen periférico USB, ya que es indispensable el oscilador externo para garantizar la frecuencia del PLL que genera el timing del periférico USB. Sería la única excepción a la regla.

Por otro lado, un pequeño tip, cuando realizas una mala programación del microcontrolador y por cosas del destino quedan mal programados los fusebits, y no te permite programar más por ISP, puedes recuperar el microcontrolador con un generador de señales. Conectas a XTAL1 la señal del generador, en niveles TTL obviamente, y varías la frecuencia desde menos de 1MHz hasta 5 u 8 MHz inclusive. Comienzas con las bajas e intentas programar por ISP. Si no funciona, sigues subiendo la frecuencia, hasta que lo logres. Esto me ha funcionado en varias ocasiones.

Muchas gracias por los tip's me había olvidado de los micros con USB y los Xmega que no se como vendrán configurados. Con lo de revivir los micros mal configurados...estoy por armarme esta herramienta: http://diy.elektroda.eu/atmega-fusebit-doctor-hvpp/?lang=en

Es de lo mejor que he visto en la red.

estoy usando avr studio 5 o_0 que podria ser? yo compilo y me dice que lo hace bien.....

Fijate que te esté generando bien el makefile..con las opciones de microcontrolador y frecuencias de operación correctas. Si solo vas a trabajar con C ...te recomiendo uses directamente WinAVR que tiene soporte nativo para USBtiny...y te olvidas de usar programas externos para grabar el microcontrolador.

Un saludo !

gonpa me pasaste mal los pdf. Lo que necesito son los esquemáticos para ver como están conectados el programador con la placa de desarrollo que estas usando.
 
Hola Moyano Jonathan,

Interesante el enlace del programador HVPP-HVSP. Como ves en la introducción, el problema relacionado con la mala seleccion de Fusebits en el reloj puede ser superada con un generador de señales. Las otras dos situaciones (SPI o RST deshabilitados) aún no me han ocurrido, pero genial conocer esta herramienta por si acaso... intentaré agregar estas funcionalidades a mi programador...

Saludos,
 
Atrás
Arriba