fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

MEGA16 y WINAVR

17 Respuestas
4 Usuarios
0 Reactions
3,966 Visitas
_jm_
Respuestas: 961
 JM
Topic starter
(@_jm_)
Prominent Member
Registrado: hace 19 años

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:

2704807607 a17345ce31 o

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.

Responder
16 respuestas
_jm_
Respuestas: 961
 JM
Topic starter
(@_jm_)
Prominent Member
Registrado: hace 19 años

Yo la estoy haciendo con el 16, es más acertado usar un 64? he visto que lleva más patas, 60 y algo. Aún no he pedido los micros smd por lo que estoy a tiempo de cambiar a un 32, 64 o cualquier otro.

Creo que voy a ir tirando con el programador que tengo sin jtag, y si veo que la cosa funciona y me gusta (que por lo que estoy viendo va a pasar) pues a lo mejor me gasto los 200 euros para un jtagice en digikey

Responder
beamspot
Respuestas: 1132
(@beamspot)
Noble Member
Registrado: hace 17 años

El m16 es muy adecuado para empezar y hacer cosas sencillitas. El rastreador/velocista que intento hacer a ratos (hace un més que no lo toco) usa uno de estos. El m32 es pin compatible con el m16.

El m64 lo recomiendo si tienes que hacer cosas más complejas. Más que nada porque tiene más periféricos y más pines (64, pero hay muchos que no se usan). Es decir, si intentas hacer un robot con varios motores, mas servos, que haga muchas cosas, con muchos sensores, entonces mejor el m64.

Si ya tienes un programador y estás empezando con estos micros, no necesitas el JTAG para nada. Incluso mejor, ya que te forzará a pensar más las cosas y además tendrás cuatro pines más libres. Si acabas por usar un m64, y haces cosas complejas (si quieres seguir rutas, o hacer mucho cálculo matemático, por ejemplo), entonces el JTAG es muy ventajoso, pero hasta entonces, te lo puedes pensar.

Hace algún tiempo hubo una oferta de STK500+JTAGICE MkII por 150€ en Digikey y Farnell. Ahora me arrepiento de no haberla aprovechado. Pero 300€ en un JTAG no me los gastaría así como así, incluso con la experiencia que tengo (al poder tomar prestado el del trabajo también modifica mi punto de vista).

Que te diviertas...

Responder
Página 4 / 4
Compartir: