Autor Tema: progamar los Atmel en C  (Leído 10582 veces)

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

Desconectado JacoPastorius2004

  • PIC10
  • *
  • Mensajes: 42
progamar los Atmel en C
« en: 26 de Octubre de 2004, 17:55:00 »
Hola!

Si les interesa. Para programar los ucontroladores de Atmel, yo estoy usando el Atmega8, les recomiendo bajarse el compilador ICCAVR 6,31 de ImageCraft desde el sitio oficial de ellos y el crack desde astalvista.
Para simular el funcionamiento bajarse la ultima version del AVRStudio en www.atmel.com

Tengo por ahi un circuito para programarlos via interface ISP (In System Program) sirve para no tener que sacar el micro de la aplicacion en la que este cada vez que lo programo.

Saludos
Jaco

Desconectado JacoPastorius2004

  • PIC10
  • *
  • Mensajes: 42
RE: progamar los Atmel en C
« Respuesta #1 en: 05 de Noviembre de 2004, 15:12:00 »
Hola Picman

Yo tambien tengo la placa STK500 y el AVRISP (In System Program) que te sirve para programar al micro en la placa final donde va ha estar.

El circuito que tengo para programarlo esta bastante bueno, es para los que no tienen la STK500 ni el AVRISP.

Se puede ver en www.cinetix.de/avise/avihard.htm
No necesita un MAX232, los cambios de nivel los hace via transistores.

No lo he probado, pero habria que ver. Ya que se ahorraria mucha plata, sin la necesidad de tener la STK500 ni el AVRISP. Como no lo he probado no se como lo detecta el soft AVR STUDIO4.

Alguien que lo arme y nos cuente.

PD: Yo tambien venia con la experiencia del assembler de los PIC, pero cuando llegue a los Atmel, tube que recordar cosas del C de la Universidad!
Creo que es lo mejor ya que se ahorra mucho tiempo de programacion. (A costa de la memoria).

Bueno, espero que alguien se anime con el circuito que les mando y que nos cuente.

Desconectado pikman

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 682
RE: progamar los Atmel en C
« Respuesta #2 en: 24 de Enero de 2005, 19:43:00 »
Bueno, un ejemplo que funciona, con ICCAVR de Imagecraft, lo simule con proteus y anda pero no se que problema hay con el .COF, que no me muestra el cosdigo, en el micro tambien funciona, lo que puedo notar es que el codigo creado para hitech o iar es perfectamente protable, y para CCS habria que crear las librerias de las funciones incluidas, pero creo que va a funcionar, estoy a ahora estudiando el manerjo de un LCD a ver que pasa, aky va el ejemplo, conectando al port b 8 leds produce el efecto del auto fantastico.

#include <io8515v.h>
#include <macros.h>



void Delay()
   {
   unsigned char a, b;

   for (a = 1; a; a++)
      for (b = 1; b; b++)
         ;
   }

void LED_On(int i)
   {
   PORTB = ~BIT(i);   /* low output to turn LED on */
   Delay();
   }

void main()
   {
   int i;
   DDRB = 0xFF;   /* output */
   PORTB = 0xFF;   /* all off */

   while (1)
      {
      /* forward march */
      for (i = 0; i < 8; i++)
         LED_On(i);
      /* backward march */
      for (i = 8; i > 0; i--)
         LED_On(i);
      /* skip */
      for (i = 0; i < 8; i += 2)
         LED_On(i);
      for (i = 7; i > 0; i -= 2)
         LED_On(i);
      
      }
   }
saludos
PikMan

Desconectado pikman

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 682
RE: progamar los Atmel en C
« Respuesta #3 en: 28 de Enero de 2005, 22:50:00 »
Bueno, me respondo , aqui he podido hacer otro ejmplo y bueno, creando funciones como las de CCS, para incluirlas en una libreria y ver la posibilidad de que lo que esta desarrollado en CCS sea portable a ICC, parece bastante bueno, veremos, aqui va, este hace encender desde el led 0 del portb destellando hasta el led 7 ( o bit 7 ), claro hay que ir armando las librerias no estan hechas pero el codigo es bastante compacto, corre en proteus pero no se porque no puedo ver el codigo paso a paso.


#include <io8515v.h>
#include <macros.h>

 

#define BIT(x)                     (1 << (x))
#define BIT_SET(x, y)         (x |= y)
#define BIT_CLEAR(x, y)       (x &= ~y)
#define CHECKBIT(x, y)       (x & y)



void Delay()
   {
   unsigned char a, b;

   for (a = 1; a; a++)
      for (b = 1; b; b++)
         ;
   }


void main()
   {
   int i,counter;          
   DDRB = 0xFF;   /* portb todo salida */
   PORTB = 0x00;   /* pone todas las salidas del portb en zero */
                counter = 0;            /* inicializa contador*/
   
   while (1)
      {

         BIT_SET(PORTB,BIT(counter));   

         Delay();

            
         BIT_CLEAR(PORTB,BIT(counter));
            
         Delay();

         if (++ counter==8){
                  counter=0;
              
        }
      }
   }
   

saludos

ARIEL

saludos
PikMan

Desconectado JacoPastorius2004

  • PIC10
  • *
  • Mensajes: 42
RE: progamar los Atmel en C
« Respuesta #4 en: 29 de Enero de 2005, 14:06:00 »
Hola Picman

Disculpame por no responderte, en realidad estoy con poco tiempo para visitar el foro.
En cuanto tenga algo de tiempo me pondre al día.
Segui experimentando!

Desconectado eltopi

  • PIC10
  • *
  • Mensajes: 2
RE: progamar los Atmel en C
« Respuesta #5 en: 13 de Abril de 2005, 21:25:00 »

Bien me presento: Soy el topi y estoy hasta las manijas con el AT8958252, tengo programador pero me falta el compilador, o no lo se usar.
Preguntas:
Que bornes del micro necesitan estar conectados al momento de programar.
El keil no me anda porque la demo tiene un LJMP a 0x0800 y me da error.
El ICC 430 AVR no le entro bien con las librerías, ese lo tengo crack, el ICC7 AVR idem.No entiendo de donde sacar librarías o como seleccionar ese micro en target.
Alguien me puede pasar un par de programas en C ( o a esta altura asembler o lo que sea) y alguna data de como manejar compiladores.
Gracias por socorrerme

Desconectado xerex

  • PIC16
  • ***
  • Mensajes: 138
    • Mi servidor, mi casa.
RE: progamar los Atmel en C
« Respuesta #6 en: 04 de Mayo de 2005, 12:59:00 »
Bueno ante todo hola, comentaros que estais mezclando la arquitectura AVR con la arquitectura 805X, en primer lugar el icc avr como su nombre indica es para micros avr, tales como los at90XX o los atmega, mientras que los at89XXX son de la arquitectura 8051/2, bueno en cuanto a eltopi, si estas utilizando un at89S8252, es de la arquitectura 805X por tanto el icc no te vale para el micro, otro compilador a parte del Keil C es el iar (en mi opinion muy malo), el Keil C al darte el LJMP  te esta haciendo un long jump por tanto lo mas probable es que tengas como tipo de memoria la externa y no la interna del micro (mira las opciones de compilacion). En cuanto al programador, tienes cantidad de ellos por internet yo me hice el isp flash programer para micros AT89 y AT90 y va bien el software se llama isp programer 3.0a.

Bueno un saludo para todos.
Es falso eso de que el saber no ocupa lugar....


No se donde poner tanto libro.... :P

Desconectado German_Pereira

  • PIC10
  • *
  • Mensajes: 12
RE: progamar los Atmel en C
« Respuesta #7 en: 24 de Mayo de 2005, 09:37:00 »
Hola......

Ninguno probo con WINAVR, es gratuito.

Saludos desde La Paz-Bolivia


Desconectado eltopi

  • PIC10
  • *
  • Mensajes: 2
RE: progamar los Atmel en C
« Respuesta #8 en: 30 de Mayo de 2005, 19:52:00 »
ya hice andar el micro con el keil.
gracias xerex. Ahora estoy haciendo un timer programable, con dos sets. Unas vez terminado te lo paso, igualmente el keil esta bueno, solo hace falta un crack.
Gracias y suerte.
Nos vemos
Topi

Desconectado xerex

  • PIC16
  • ***
  • Mensajes: 138
    • Mi servidor, mi casa.
RE: progamar los Atmel en C
« Respuesta #9 en: 02 de Junio de 2005, 16:17:00 »
Me alegro por ti eltopi, que ya hayas podido usar el micro. En cuanto a los timer de la arquitectura que usas me parecen muy cortos (al menos para mi aplicacion, utilizo el Timer 2 en modo timer con autoreload -fijo una frecuencia de timer y provoco una interupcion claro.....-) te recuerdo que si utilizas el timer con el reloj del micro, lo minimo que vas a poder leer con dicho timer es Fclk/12, osea que si tienes un Xtal de 12 Megas, el timer ira como maximo a 1 Mega (ni de coña podras hacer nada en 1 microsegundo, yo he necesitado al menos 280 microsegundos para hacer algo probechoso......). Bueno ya se sabe si no llegas a donde quieres tienes la arquitectura de esta misma familia que te ejecuta una instruccion en 1 ciclo de reloj (la que usas necesita al menos 12 ciclos de reloj para realizar una instruccion....)

Lo dicho que sigas trasteando con el micro... Muchas risas
Es falso eso de que el saber no ocupa lugar....


No se donde poner tanto libro.... :P

Desconectado atlasdelcarinakeel

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 277
Si tienes un problema y tiene solucion, para que te preocupas? y si no tiene solucion, para que te preocupas?

Desconectado beto_mmf

  • PIC10
  • *
  • Mensajes: 5
RE: progamar los Atmel en C
« Respuesta #11 en: 07 de Julio de 2005, 16:52:00 »
Vacilando hola a todos..

Yo soy nuevo en esto de la programacion en C para los atmel
he conseguido el AT89C52 y ya he bajado el Keil pero no se
por donde empezar para hacer mi primer programa de rotar
leds por el puerto 0.

bueno, si fueran tan amables de enseñar los primeros pasos
para trabajar con el Keil  , estaria muy agradecido



HAS LO QUE TENGAS QUE HACER PARA SER FELIZ , ATREVETE



Desconectado Bruno_AR

  • PIC12
  • **
  • Mensajes: 89
RE: progamar los Atmel en C
« Respuesta #12 en: 21 de Febrero de 2006, 09:43:00 »
En primer lugar te preguntaria si sabes programar en C, si la respuesta es si todo es muy facil. Yo no utilizo el KEIL con lo que no podria ayudarte con el entorno que dicho programa tiene, pero si con tu aplicacion.

Te recomiendo no utilizar el P0 dado que no tiene resistores de PULL UP internos como los demas puertos, si quisieras podrias poner los pull up externos pero como no se sobre que placa estas trabajando voy a lo seguro

#include <reg_51.h> // header de registros del 8051

#define   P1   port_led

void delay ()
{
      unsigned char i;
      for (i=0;i<255;i++);      // Genera un delay, si queres mas ponele un int
                                          //  aumentale el rango
}

void main ()
{
      unsigned char i;

      port_led = 1;      // Inicializa el puerto 1 con el valor 1 (P1.0 en "1")

      while (1)      // Loop
      {
            for (i=0;i<8;i++)
            {
                  delay ();
                  port_led >= port_led;  // Desplazamiento a la derecha
            }
           
            portl_led = 1;
      }
}

Es probable que tenga algun error pero si sabes C te daras cuenta, de todas formas avisame y lo corrigo, ahora estoy en mi trabajo y no dispongo de mucho tiempo. Ese seria el programa, el archivo header de los registros del micro lo podes bajar de la pagina de ATMEL, y en cuanto a la grabacion de la memoria supongo tendras tu grabador, si tenes alguna duda yo tengo material para pasarte, espero te sirva.-

Un abrazo y suerte en tu aprendizaje
Un saludo, desde Argentina


 

anything