Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola. me encuentro empezando a programar un atmega16 para poder comprar con los pics.. con el avrstudio y el winavr, de programador uso un avrisp mkii.
Le he hecho la conexión para ISP, y al intentar programar me pasa lo siguiente:
Entering programming mode.. OK!
Erasing device.. OK!
Programming FLASH .. OK!
Reading FLASH .. FAILED!
Leaving programming mode.. FAILED!
Me falla en la lectura, pero el programa aún así parece que lo graba bien.
El otro problema es con el programa, estoy utilizando un cristal de 16 MHz, y yo diría que el programa se está ejecutando mucho más lento. No sé si es que me selecciona algún oscilador interno o que pasa, ya que la salida que obtengo en el osciloscopio en el PORTA.0 es esta:
Con los 16 MIPS yo me esperaba algo más de esos 90 kHz x_x.
El código del programa no sé si me falla algo, ya que estoy dando palos de ciego con este compilador, tanto que me estoy pensando en cambiarme a otros de los que tengo libros basados en ellos./***************************************************
*
* Apagar y encender el PORTA.0
*
*****************************************************/
#include <avr> //falta la barra .io que me lo edita mal esto
void inicializar_puertos(void);
//Programa principal
int main(void)
{
inicializar_puertos();
while(1)
{
PORTA=0x00;
PORTA=0x01;
}
}
// Funciones
void inicializar_puertos(void)
{
DDRA=0x01;
PORTA=0x00;
DDRB=0x00;
PORTB=0x00;
DDRC=0x00;
PORTC=0x00;
DDRD=0x00;
PORTD=0x00;
}
Al hacer el build obtengo lo siguiente:
avr-gcc.exe -mmcu=atmega16 -Wall -gdwarf-2 -DF_CPU=16000000UL -O0 -fsigned-char -MD -MP -MT led.o -MF dep/led.o.d -c ../led.c
avr-gcc.exe -mmcu=atmega16 led.o -o led.elf
avr-objcopy -O ihex -R .eeprom led.elf led.hex
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex led.elf led.eep || exit 0
Device: atmega16
Program: 242 bytes (1.5% Full)
(.text + .data + .bootloader)
Data: 0 bytes (0.0% Full)
(.data + .bss + .noinit)
Build succeeded with 0 Warnings...
No sé que puede estar mal, ya que es de los primeros circuitos y programas que monto con esta familia, seguro que será cualquier tontería, alguna opción del avrstudio, o incluso el C que lo tengo bastante olvidado.
En la placa tengo montada la conexión de isp, alimentadas las vcc, gnd, avcc y agnd, y conectado el cristal de 16 MHz con sus dos condensadores de 22p.
En fin a ver si alguien sabe que me puede estar pasando, mañana le daré más vueltas y buscaré por internet, que habrá código y ejemplos para el winavr para aburrir.
Gracias. Saludos.
si compilo pero no me lo crea, a lo mejor es una opción del avr studio que debo marcar.
Lo del jtag pues casi que lo veo necesario, quizás más adelante busque uno si consigo hacer algo que funcione x_x.
Estoy a ver si hago la placa, que cuesta lo suyo empezar desde cero, hay que leer mucho, cuando tenga algo la pondré por aquí. La idea es una placa para velocista seguidor con entradas digitales.
Creo que al final voy a leer la carga de la batería, en el miniz es lo más sencillo, lo que no sé es si servirá para algo.
Bueno voy un rato con el eagle, que sólo hago que hablar x_x.
Gracias. Saludos.
Hola:
Si vas a hacer una placa, te recomiendo que pongas dos conectores extra (aunque no los montes luego), o al menos uno donde estén todas las señales, y luego con cables te lo diriges al ISP (6 pines) o al JTAG (10 pines).
Una descripción de los pines de estos conectores se puede encontrar en el AVRStuio, en la ayuda, sección de herramientas, JTAGICE (para el JTAG) y STK500 (para el ISP).
Yo me compré el JTAG clónico del JTAGICE MkI de Olimex ( http://www.olimex.com/dev/avr-usb-jtag.html , unos 40€)) y me va estupendo. De vicio, hasta el punto que no se trabajar sin el. PERO: IMPORTANTE, este no soporta todos los AVR, y menos los nuevos. Para trabajar con ellos, hace falta el MkII de Atmel original (300 eurazos...) ya que nadie ha conseguido clonarlo.
En el curro trabajaba con el MkII de Atmel original, y lo peor es que cuando uno se acostumbra a este, no sabe hacer nada sin el. En cualquier momento puedes ver el estado de los pines, registros, variables, etc, y modificarlos a tu gusto/necesidad, directamente en la placa. Una gozada, que te evita tener que usar puertos serie, escribir líneas de código para mandar datos al mismo, comprobar el valor de las variables tras cada paso de ejecución (muy útil cuando haces muchas mates).
Si vas a trabajar con los ATmega16, 32, 64 y 128 que presumiblemente sean los más habituales y fáciles de encontrar, entonces con un JTAG clónico del MkI como el que te he puesto (hay más en internet, incluso te los puedes hacer tu por pocos euros) vas estupendamente. Muy recomendable para empezar.
Quizás sea interesante hacer una placa de evaluación del M64/128 con el JTAG y el ISP integrados. Tendré que darle unas vueltas al tema.
Igual ahora que tengo vacaciones le doy una vuelta a lo que propones, pero sin el Protel ni nada para hacer PCB's, ni tiempo (con todos mis respetos, prefiero la parienta a cualquier robot 😉 ), no podré postear nada.
Saludos y que os divirtáis.
beamspot, a ver cuando esa placa de procesador de AVR... 😛
S2
Ranganok Schahzaman
La conexión del ISP si la pongo ya que al ser el micro smd es la única forma de programarlo.
Creo que debería pasarme directamente al JTAG y empezar con un programador de estos, ya que a la hora de realizar y probar el programa es una gran diferencia por no decir necesario.
He puesto algunos comentarios en el post de 'pregunta trampa', que es el primero que he leído (y por tanto, contestado) que os pueden ser de utilidad. En el hago algunos comentarios sobre los JTAG y herramientas de desarrollo de los AVR.
Bueno, a ver si consigo poner ya la placa de la entrenadora AVR que prometí a Ranganok, y hacer alguna cosa más al respecto (placa con ATmega64/128 para velocistas/rastreadores, por ejemplo).