Autor Tema: Problemas con ATMEGA128  (Leído 4740 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado uzielero

  • PIC10
  • *
  • Mensajes: 4
Problemas con ATMEGA128
« en: 25 de Abril de 2009, 13:26:19 »
Hola, un saludo a todos!

Soy nuevo en el foro y también bastante novato en esto, he intendo buscar una solucion entre los anteriores post del foro, pero no la he encontrado. Estoy intentando programar dos motores controlados con el LD293. Mi problema es que haciendo un programita sencillo éstos no me obedecen. Simplemente hacia girar los motores para despues de cierto tiempo detenerlos poniendo el enable a 0. La espera la hacia con _delay_ms() pero nunca se llegaban a detener. Me planteé hacer otro tipo de pruebas: encendí un LED, luego hice _delay_ms() y despues encendi otro LED. El resultado fue que sólo se encendia el primer LED, y tengo la sensación de que o hay algún problema con _delay_ms() o le pasa algo a mi ATMEGA128, porque no entiendo que no me obedezca.

Les paso el codigo de mi programa de prueba de los LEDs, no sé, soy muy novato y empiezo a pensar que la he liado o algo y he jodido el micro...

#define F_CPU 16000000UL  // 16 MHz -> delay maxim 16,38375
//#define F_CPU 14.7456E6
#include <util/delay.h>

void main()
{

   DDRD = (DDRD & 0xFE) | 0x02;
   PORTD = (PORTD & 0xFE);
   PORTD = (PORTD & 0xFE) | 0x02;

   _delay_ms(16);

   DDRF = (DDRF & 0xFE) | 0x01;
   PORTF = (PORTF & 0xFE);
   PORTF = (PORTF & 0xFE) | 0x01;
}


Gracias por su ayuda!!
« Última modificación: 25 de Abril de 2009, 14:22:20 por uzielero »

Desconectado Micro23

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 226
Re: Problemas con ATMEGA128
« Respuesta #1 en: 25 de Abril de 2009, 14:47:16 »
Hola uzielero te falta agregar #include <avr/io.h>, sino compila con errores. tene en cuenta que el delay es de 16ms entre el encendido de un led y el otro, osea no lo vas a notar.
Que significa 16 MHz -> delay maxim 16,38375???
Saludos
El pesimista se queja del viento
El optimista espera que cambie
El realista ajusta las velas

Desconectado FuYiVape

  • PIC12
  • **
  • Mensajes: 69
    • Electronica y Sistemas
Re: Problemas con ATMEGA128
« Respuesta #2 en: 25 de Abril de 2009, 19:41:01 »
Proba con esto:

Agrega lo que dice Micro32
Código: [Seleccionar]
#include <avr/io.h>
#include <util/delay.h>

#define PIN_LED PD1 //Supongo, sino reemplaza PD1 por el numero de pin correspondiente

void main()
{

   DDRD = (1<<PIN_LED);  //SALIDA

   while(1)
   {
       PORTD |= (1<<PIN_LED);  //Enciendo
       _delay_ms(500);               //Espero 1/2 segundo
       PORTD &= ~(1<<PIN_LED); //Apago
       _delay_ms(500);               //Espero 1/2 segundo y vuelve la secuencia
    }

}

El problema que tenias es que como NO quedaba en loop la funcion main, se reseteaba el micro.

Optimiza el compilador para que funcione bien el delay. opcion O1

Saludos.

Desconectado uzielero

  • PIC10
  • *
  • Mensajes: 4
Re: Problemas con ATMEGA128
« Respuesta #3 en: 26 de Abril de 2009, 06:27:36 »
Hola!

Añadí la librería y lo puse dentro de un while(1) y sigue sin funcionarme. También probé el código que me mostraste, FuYiVape.
Micro23, lo de 16 MHz -> delay maxim 16,38375 es una anotación que puse para saber el valor máximo de delay que podia pasarle a la función _delay_ms(). El valor lo obtuve de 262.14 ms / Freq_CPU (en MHz). Esto lo encontré aqui

http://www.olimex.cl/present.php?page=tut_avr_mt_del&c=1

Según esto solo puedo poner como máximo _delay_ms(16,38375) ?

Seguiré haciendo pruebas, muchas gracias por su ayuda!

Desconectado kmpos

  • PIC10
  • *
  • Mensajes: 14
Re: Problemas con ATMEGA128
« Respuesta #4 en: 08 de Octubre de 2009, 13:17:15 »
Buenas, se que han pasado varios meses de este mensaje, pero resulta que acabo de pasarme del atmega 32 al atmega 128 y me sucede lo mismo, el chips se reinicia justo despues de un delay_ms cosa que no sucede con el delay_us nose porque, estoy mareado ya, he probado con el sistema que trae el codevision que es con el que yo programado para determinar de donde viene el reset pero nada, no sale, no se de que puede ser.

Probe poner la libreria io.h antes del delay pero sigue en las misma, tambien probé con una interrupción timer y dos led, uno parpadea con el timer y el otro con un delay_ms dentro de un while y el chips se resetea justo al saltar el timer.

POR FAVOR QUE ALGUIEN ME AYUDE es urgente, el atmega 32 se me quedo corto de memoria y este me da fallos :S

Gracias desde ya.

Desconectado kmpos

  • PIC10
  • *
  • Mensajes: 14
Re: Problemas con ATMEGA128
« Respuesta #5 en: 08 de Octubre de 2009, 17:41:02 »
DIOS!!!! no me lo creo, e tocado todos los fuses habidos y por haber menos el M103C que se supone que era para ahcerlo compatible con noseque pic pero para la UART y ya desesperado (mas de lo q ya estaba,"3 dias sin poder hacer nada por culpa de esto") me ha dado por tocarlo y ZAS!!!! el pic funciona a la perfección !!!! JODER A LO DIGAN EN LETRAS GRANDES EN EL DATASHEET !!!! jejej

Bueno, pos aquí lo dejo escrito para el que tenga el mismo fallo
 
Fuse M103C Activado !!!!!!

Saludos


 

anything