TODOPIC

Otros Microcontroladores / Dispositivos programables => Microcontroladores 8 bits => Mensaje iniciado por: betito_mmf en 02 de Enero de 2009, 00:36:24

Título: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: betito_mmf en 02 de Enero de 2009, 00:36:24
**************************************************************************************************


   Hola amigos , en vista de la escasa info en español  de los AVRs aqui abrimos un tutorial paso a paso de como programar
   el atmega16 y atmega8   que son los avr que estoy usando en estos momentos con el  software del fabricante
   AVR STUDIO  junto  al WIN AVR   ,  no soy un experto pero empezaremos por lo mas basico esperando sus
   aportes para aprender    mas de estos bichitos 8)
   
   
   
    :-) :-) :-)    Querer es poder     :mrgreen:
   
                                   
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: betito_mmf en 02 de Enero de 2009, 01:07:22
Estas son las paginas oficiales y gratuitas de donde pueden descargar el software 

 AVR STUDIO (http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725)    Entorno integrado de desarrollo  para escribrir y depurar aplicaciones AVR

 WIN AVR (http://winavr.sourceforge.net/download.html)         Compilador para C y C++ 

 PONY PROG (http://www.lancos.com/prog.html)     Software para programar el micro
(http://img75.imageshack.us/img75/7938/atmellogogn8.jpg)
NOTAPrimero instalar el AVR STUDIO  y luego recien el WIN AVR 
          (el AVR Studio solo programa en assembler al instalar el "Winavr" , el "Avr Studio" tambien podra

            programar en lenguaje C y C++ )


Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: betito_mmf en 02 de Enero de 2009, 03:37:26
Creando un nuevo proyecto
Una vez instalados ambos programas abrimos asi:

Menu Inicio - Programas - Atmel AVR Tools  - AVR Studio4

click en  "New Proyect"

(http://img377.imageshack.us/img377/7057/dibujopi2.gif) (http://imageshack.us)
(http://img377.imageshack.us/img377/dibujopi2.gif/1/w715.png) (http://g.imageshack.us/img377/dibujopi2.gif/1/)

luego:

1-  elegir  "AVR GCC"   (  :-)  Nota : para programar en assembler elija  "Atmel AVR Assembler"  y para programar en lenguaje C elija "AVR GCC"    :-))
2-  Poner el nombre del proyecto
3-  elegir  un lugar apropiado para guardar el proyecto
-NEXT>>

(http://img399.imageshack.us/img399/5945/dibujo2eo6.gif) (http://imageshack.us)
(http://img399.imageshack.us/img399/dibujo2eo6.gif/1/w755.png) (http://g.imageshack.us/img399/dibujo2eo6.gif/1/)

a continuacion:

1- elegir la plataforma  "AVR Silmulator"  por que vamos a similuar el programam primero
2- escoja el dispositivo a usar  en este caso el ATMEGA16
- FINISH -

(http://img511.imageshack.us/img511/9769/dibujo3ov6.gif) (http://imageshack.us)
(http://img511.imageshack.us/img511/dibujo3ov6.gif/1/w712.png) (http://g.imageshack.us/img511/dibujo3ov6.gif/1/)



Al final saldra la ventana principal del AVR STUDIO donde tipearemos el programa  led.c

(http://img530.imageshack.us/img530/8972/principal3fy8.gif) (http://imageshack.us)
(http://img530.imageshack.us/img530/principal3fy8.gif/1/w1154.png) (http://g.imageshack.us/img530/principal3fy8.gif/1/)

Las partes principales de esta ventana son:
1-  EDITOR DE CODIGO : Area para tipear el programa
2-  ZONA DE REGISTROS de entrada y salida  I/O
3-  AREA DE PROYECTO:  Aqui se muestran todos los archivos fuente y cabeceras del proyecto actual. Se puede
                                      adicionar y remover archivos , haciendo anticlick o menu contextual en los diferentes
                                      grupos como : Source File , Header Files , etc . Hacer doble click para abrir en el editor.
4- AREA  DE MENSAJES:   Aqui el AVR STUDIO muestra los errores , warnings  , o si la compilacion fue exitosa.

bueno mas adelante continuaremos  con la descripcion del programa
 
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: AKENAFAB en 02 de Enero de 2009, 04:49:09
Excelente
gracias   :-/
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: gera en 02 de Enero de 2009, 14:06:08
Muy bueno Beto!!! La verdad q me interesa aprender a usar microcontroladores de otras empresas, y tengo por entendido q los AVR son muy buenos. Voy a seguir el hilo, gracias por el aporte!!
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: cristian_elect en 02 de Enero de 2009, 14:25:40
Ya tengo tiempo usando los atmegas, por que eran mas baratos repondian mejor que los pics. Comprar un pic18 en peru cuesta mucho unos s/25 promedio, mejor un atmega8 estan a s/9.
Use el winavr pero no me salia bien en las sub funciones , me pase al codevisionavr hay todo me va bien y luego me pase al iar que me permite simular en proteus mejor que el ccs para pic  por que te todos las variables al momento que corre paso a paso.
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: josnelihurt en 02 de Enero de 2009, 20:03:17
Hola, Me parece muy bueno el tema he estado interesado en aprender de los AVR desde hace un tiempo, pero tengo grandes dudas para arrancar :shock:, como por ejemplo que uC comprar para iniciarme? me pueden sugerir algo similar al 16f877?
otra cosa que hardware para programar puedo usar? algo sencillo como para adentrarme y empezar a hacer practicas pequeñas.
Muchas gracias
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: AKENAFAB en 02 de Enero de 2009, 21:16:01
Hola, Me parece muy bueno el tema he estado interesado en aprender de los AVR desde hace un tiempo, pero tengo grandes dudas para arrancar :shock:, como por ejemplo que uC comprar para iniciarme? me pueden sugerir algo similar al 16f877?
otra cosa que hardware para programar puedo usar? algo sencillo como para adentrarme y empezar a hacer practicas pequeñas.
Muchas gracias


Hola pana!

Puedes hacerte un programador ISP por puerto paralelo o serial , son muy sencillo , tambien puedes armarte este http://www.fischl.de/usbasp/ que es USB.

Mira pues asi -+ similare spara comenzar , de 40 pines el atmega8535, de 28 pines el atmega8.

Muy buenos los 2 y bastantes ejemplito scon esto smicros , son de los más fáciles de conseguir , asi como los 2313.

Yo tengo unas cuantos atmega8 super buenos 8)

Los programadores buscalos como ISP
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: micro_cadaver en 03 de Enero de 2009, 03:10:59
fabuloso betito_mmf , estare siguiendo este hilo de muy cerca

te ha quedado bien chevere !  :-/
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: josnelihurt en 03 de Enero de 2009, 03:41:52
Hola pana!

Puedes hacerte un programador ISP por puerto paralelo o serial , son muy sencillo , tambien puedes armarte este http://www.fischl.de/usbasp/ que es USB.

Mira pues asi -+ similare spara comenzar , de 40 pines el atmega8535, de 28 pines el atmega8.

Muy buenos los 2 y bastantes ejemplito scon esto smicros , son de los más fáciles de conseguir , asi como los 2313.

Yo tengo unas cuantos atmega8 super buenos 8)

Los programadores buscalos como ISP


Hola muchas gracias por su repuesta, pues veo la posibilidad de comprar un atmega8 o atmega88, realmente son muy similares lo que veo es la velocidad, 16MIPS y 20MIPS bueno en concreto, los dos los puedo programar con un ISP? he mirado algunos programadores ISP con un puerto paralelo y son básicamente un 74hc244 ud tiene alguno que le funcione y me pueda facilitar por puerto paralelo, Muchas gracias
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: electronando en 03 de Enero de 2009, 04:49:29
Aca un ejemplo de como parpadear leds por todos los puertos de el atmega ; funciona ok en el proteus setear el oscilador en 1mhz.
Código: C
  1. #include<avr/io.h>
  2. void delay_ms(unsigned char time_ms);
  3. void main()
  4. {
  5. DDRC=0xff; //todos los puertos del atmega16 seran configurados como salidas
  6. DDRA=0xff; // es lo contrario de os pic que son salidas al setearse en cero
  7. DDRB=0xff;
  8. DDRD=0xff;
  9.  
  10.         while(1)
  11.         {
  12.        
  13.         PORTA=0X00;
  14.         PORTB=0X00;
  15.         PORTC=0X00;
  16.         PORTD=0X00;
  17.  
  18.         delay_ms(200);  // en esta libreria no puede sermayor el tiempo que 255
  19.         delay_ms(200);//por eso paraun  retardo de 1 segundo llamo 5 veces a
  20.         delay_ms(200);  // el retardo de 200ms
  21.         delay_ms(200);
  22.         delay_ms(200);
  23.        
  24.         PORTA=0XFF;
  25.         PORTB=0XFF;
  26.         PORTC=0XFF;
  27.         PORTD=0XFF;
  28.  
  29.         delay_ms(200);
  30.         delay_ms(200);
  31.         delay_ms(200);
  32.         delay_ms(200);
  33.         delay_ms(200);
  34.         }
  35.        
  36. }

una vez que han seguido los pasos bien explicados por Beto fijarse en Project ---> Configuration Options y debe de aperecer una ventana como la que muestro en caso de no ser asi rellenar de acuerdoa sus requerimientos (sobre todo en frecuencia que en mi caso es 1000000hz)
(http://img377.imageshack.us/img377/65/conf2np3.jpg)



Espero la ayuda de quien sepa los avr sobre todo para entender la libreria de retardo de ms que puse en el ejemplo anterior se agradeceria si la pudieran explicar.
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: AKENAFAB en 03 de Enero de 2009, 09:48:56

Hola muchas gracias por su repuesta, pues veo la posibilidad de comprar un atmega8 o atmega88, realmente son muy similares lo que veo es la velocidad, 16MIPS y 20MIPS bueno en concreto, los dos los puedo programar con un ISP? he mirado algunos programadores ISP con un puerto paralelo y son básicamente un 74hc244 ud tiene alguno que le funcione y me pueda facilitar por puerto paralelo, Muchas gracias

El ISP es general  , asi que puedes programar cualquiera.Solo ten cuidado con los bits de configuracion.

Más cosas acerca del programador pasalos al foro de este tipo compa.

Un Saludo!
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: electronando en 04 de Enero de 2009, 06:26:19
Continuando aca el manejo de pantalla lcd las librerias estan en la misma hoja, en caso quieran modificar a gusto del cliente
Código: [Seleccionar]
/*----------------------------------------------------------------
-----------------HEADER FILES-------------------------------------
-----------------------------------------------------------------*/
#include<avr/io.h>


/*----------------------------------------------------------------
-------------CONNECTION BETWEEN LCD AND ATMEGA16-----------------
-----------------------------------------------------------------*/
#define DATA_DDR DDRA
#define DATA_PORT PORTA


#define CONTROL_DDR DDRD
#define CONTROL_PORT PORTD
#define Enable_Pin   6
#define RegSelect_Pin     4
#define ReadWrite_Pin     5
#define CONTROL_MASK     0X70


/*----------------------------------------------------------------
-------------CONTROL BITS OF LCD --------------------------------
-----------------------------------------------------------------*/

#define Set_Enable  CONTROL_PORT|=_BV(Enable_Pin)
#define Clear_Enable CONTROL_PORT&=~_BV(Enable_Pin)
#define Write_Lcd     CONTROL_PORT&=~_BV(ReadWrite_Pin)
#define Read_Lcd     CONTROL_PORT|=_BV(ReadWrite_Pin)
#define Select_InstructionRegister CONTROL_PORT&=~_BV(RegSelect_Pin)
#define Select_DataRegister     CONTROL_PORT|=_BV(RegSelect_Pin)
#define Data_Lcd(a) DATA_PORT=a
#define delay(a) delay_ms(a)



/*----------------------------------------------------------------
-----------------FUNCTIONS---------------------------------------
-----------------------------------------------------------------*/
void Init_Ports(void);
void Init_Lcd(void);
void delay_ms(unsigned char time_ms);
void Lcd_Send(unsigned char a);


/*----------------------------------------------------------------
----------------MAIN FUNCTION--------------------------------------
-----------------------------------------------------------------*/
void main()
{
int len,i;
char string[] = {'F','e','r','n','a','n','d','o',' ','R'};
Init_Ports();
Init_Lcd();
len=10;
for (i=0; i< len;i++)
  Lcd_Send(string[i]);

}



/*----------------------------------------------------------------
-----------------SEND A CHARACTER TO LCD-------------------------
-----------------------------------------------------------------*/
void Lcd_Send(unsigned char a)
{
Select_DataRegister;
Write_Lcd;
Data_Lcd(a);
Set_Enable;
delay(1);
Clear_Enable;
delay(1);
}

 




/*----------------------------------------------------------------
-----------------FUNCTIONS TO INITIALIZE PORTS--------------------
-----------------------------------------------------------------*/
void Init_Ports(void)
{
DATA_DDR=0XFF; //Setting data port for output
CONTROL_DDR=CONTROL_MASK;//setting selected pins of control port for output
CONTROL_PORT&=~(_BV(Enable_Pin)|_BV(RegSelect_Pin )|_BV(ReadWrite_Pin)); //setting values to 0 at starting
}




/*----------------------------------------------------------------
------------FUNCTION TO INITIATE LCD -----------------------------
-----------------------------------------------------------------*/
void Init_Lcd(void)
{
char init[10];
 int i;
 init[0] = 0x01;
 init[1] = 0x38;
 init[2] = 0x0c;
 init[3] = 0x06;
 init[4] = 0x80;
Select_InstructionRegister;
Write_Lcd;
for(i=0;i<5;i++)
{
Data_Lcd(init[i]);
Set_Enable;
delay(1);
Clear_Enable;
delay(1);
}
}




/*----------------------------------------------------------------
--------FUNCTION TO GENERATE DELAY IN MILLISECONDS----------------
-----------------------------------------------------------------*/
void delay_ms(unsigned char time_ms)
{
unsigned short delay_count = F_CPU / 400;

unsigned short cnt;
asm volatile ("\n"
                  "L_dl1%=:\n\t"
                  "mov %A0, %A2\n\t"
                  "mov %B0, %B2\n"
                  "L_dl2%=:\n\t"
                  "sbiw %A0, 1\n\t"
                  "brne L_dl2%=\n\t"
                  "dec %1\n\t" "brne L_dl1%=\n\t":"=&w" (cnt)
                  :"r"(time_ms), "r"((unsigned short) (delay_count))
);
}

(http://img179.imageshack.us/img179/9863/20090104031922sp1.jpg)
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: AKENAFAB en 04 de Enero de 2009, 13:23:45
Hola amigos .


¿De donde puedo bajar los operadores y expresiones???

Le busco en la ayuda y no encuentro!

Saludos1


Yo les dejo este que rota el bit atravez del puerto B.

Código: [Seleccionar]
#include <avr/io.h>

#define F_CPU 4000000UL

#include <util/delay.h>

int main(void)
{
DDRB=0xFF;  //PUerto b como salida
PORTB=1;    //

int x;
while(1){
        for(x=0;x<7;x++){
       
PORTB=PORTB<<1;  //rotar una posicion a la izquierda

_delay_ms(400);

        }

    for(x=7;x>=1;x--){
PORTB=PORTB>>1;  //rotar 1 posicion a la derecha
_delay_ms(400);
            }

}
}
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: electronando en 04 de Enero de 2009, 15:00:12
Hola AKENAFAB una sugerencia , trata de no usar el _delay_ms() pues no funciona como debe te lo demuestro en una simulacion que hice modificando el ejemplo que pusistes ; lo he comprobado tanto con el simulator de avr studio y con el proteus esto tb se lo comente a Beto por eso que en mis ejemplos uso otra libreria externa , el que si esta bien elaborado es la libreria _delay_loop_2(40000) en este caso 40000 esta en us ô es 40ms me da exacto , pero tener en cuenta en las unidades pues el _delay_loop_2(entero de 2bytes o menor a 65535) pue si pongo _delay_loop_2(80000) me mandara al compilar unos warning comentando error de truncamiento y logico los tiempos no salen exactos , si queremos analizar bien estas librerias al momento de compilar aparecen en las carpetas External dependencies que aparece en la parte izquierda.

Aca el codigo que modifique:

Código: [Seleccionar]
#include <avr/io.h>

#define F_CPU 4000000UL

#include <util/delay.h>

int main(void)
{
DDRB=0xFF;  //PUerto b como salida
PORTB=1;    //

//int x;
while(1){
        //for(x=0;x<7;x++)
// {
       
// PORTB=PORTB<<1;  //rotar una posicion a la izquierda
PORTB=1;
_delay_loop_2(40000);
//_delay_ms(400);


        // }

    // for(x=7;x>=1;x--)
// {
// PORTB=PORTB>>1;  //rotar 1 posicion a la derecha
PORTB=0;
_delay_loop_2(40000);
//_delay_ms(400);
        // }

}

aca la simulacion en el avr studio:
(http://img237.imageshack.us/img237/4514/20090104114616rg1.jpg)
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: AKENAFAB en 04 de Enero de 2009, 15:13:09
Gracias pro el dato , si lei lo de Beto xD , pero fue para probar rápido.


Donde puedo bajar las sintaxis de las expresiones , los operadores, las funciones???

Si quiero usar un printf donde veo cual es su sintaxis???

Eso ando buscando , que sino me tardo mucho xD


Saludos!
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: stk500 en 04 de Enero de 2009, 15:48:47
Hola amigo! Akenafab!
aqui encontre algo y es para el attiny2313 pero son la misma para los Mcu de esa Serie
http://www.dte.us.es/tec_inf/itig/microele/docu/curso0506/tema4/tema4_parte1_micro_0506.pdf
Si te inscribe en esta pagina te podra bajar muchas cosas , hasta libro de Pic y Mcu y me he bajado un monton
http://www.scribd.com/doc/7842926/Capitulo4-Directivas-y-Software-Del-AVR-Studio-espanol
Aqui tiene un proyecto con Robot donde hay ejemplo y explicaciones de directiva
http://www.secyt.frba.utn.edu.ar/gia/robot_movil.htm
Espero que te sea util amigo
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: AKENAFAB en 04 de Enero de 2009, 16:15:54
Hola amigo! Akenafab!
aqui encontre algo y es para el attiny2313 pero son la misma para los Mcu de esa Serie
http://www.dte.us.es/tec_inf/itig/microele/docu/curso0506/tema4/tema4_parte1_micro_0506.pdf
Si te inscribe en esta pagina te podra bajar muchas cosas , hasta libro de Pic y Mcu y me he bajado un monton
http://www.scribd.com/doc/7842926/Capitulo4-Directivas-y-Software-Del-AVR-Studio-espanol
Aqui tiene un proyecto con Robot donde hay ejemplo y explicaciones de directiva
http://www.secyt.frba.utn.edu.ar/gia/robot_movil.htm
Espero que te sea util amigo


Gracias compa !

Muy buenos los links , con el ASM no tengo problema , ando buscando acerca de los statements , operadores y funciones  para el winAVR.

Saludos y Feliz año compa!
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: electronando en 05 de Enero de 2009, 00:47:30
Mira aca puedes encontrar muchos ejemplos y algunas librerias sobre el win avr
pagina de win avr (http://winavr.scienceprog.com/example-avr-projects/avr-4-bit-lcd-interface-library.html)
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: MiCrOtRoNiC en 05 de Enero de 2009, 02:11:05
que bien amigos sigamos asi el tema se esta poniendo bueno.... :mrgreen:
bueno por la red consegui una hoja de excel donde podemos configurara los fuses. :-)
adjunto al mensaje xD...
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: josnelihurt en 06 de Enero de 2009, 02:07:06
hola, estoy empezando con atmel ATMEGA, pero en CCS  existe una forma de acceder a un BIT con una directiva.

#bit  GP0=GPIO.0
GP0 sera una variable de C declarada como short (int1), que corresponde al bit 0 de GPIO
GPIO es una variable de C es decir un char (int8)
con esto manipulaba a mi antojo un solo pin de un puerto por ejemplo.

Existe algo similar en el WinAVR??
porque según se se puede hacer así, pero quiero tener una variable de tamaño un bit, alguno sabe como?

GPIO| =    (1<<6) //1 en el bit6 de GPIO
GPIO&=~ (1<<6)//0 en el bit6 de GPIO

Muchas gracias
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: cristian_elect en 06 de Enero de 2009, 15:21:28
Hay mando un ejemplo que hace pernder y apagar leds en el puertob en un atmega8 compilado en iar y simulado en proteus.
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=24309.0;attach=8349)
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: cristian_elect en 06 de Enero de 2009, 15:30:24
Los delays
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: cristian_elect en 06 de Enero de 2009, 15:52:10
U ejemplo con lcd modo 4bits en iar 5.11b .
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=24309.0;attach=8347)
La variable "a" no la uso se me olvido sacarla.
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: cristian_elect en 06 de Enero de 2009, 16:01:33
Estal librerias yo lo he echo viendo los pdfs del LCD. Por que en iar casi no hay ejemplos en la web asi si que hay un error digame para corregir.
Tambien funciona para  puertoc del atmega8.
Funcionan ya los probe.
Se modificarian un poco si es para atmega16. 
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: flacoclau en 06 de Enero de 2009, 17:00:29
Hola gente muy buen hilo!! empezamos el año muy bien!!  :-/ :-/ :-/

Ahora largo un par de preguntas, sin haber investigado, ni buscado, pero si alguien lo sabe que lo diga:

-¿Que modelos de Atmel hay en el mercado?
Veo que hablan de los ATMEGA8 y ATMEGA16, ¿son dos modelos específicos o son dos familias?

-El GTP+ programa estos micros, ¿Que consideraciones y cuidados debo tener?

Gracias por las respuestas!!
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: cristian_elect en 06 de Enero de 2009, 20:00:04
Para configurar iar.
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: cristian_elect en 06 de Enero de 2009, 20:04:57
En proteus.
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: AKENAFAB en 06 de Enero de 2009, 23:23:19
Hola gente muy buen hilo!! empezamos el año muy bien!!  :-/ :-/ :-/

Ahora largo un par de preguntas, sin haber investigado, ni buscado, pero si alguien lo sabe que lo diga:

-¿Que modelos de Atmel hay en el mercado?
Veo que hablan de los ATMEGA8 y ATMEGA16, ¿son dos modelos específicos o son dos familias?

-El GTP+ programa estos micros, ¿Que consideraciones y cuidados debo tener?

Gracias por las respuestas!!

Hola pana , pues de variedad como en la pasteleria.

Serie tiny

SEries "S"
MEGA
XMEGA

ENtre los mas usados esta la serie mega , que es sucecora de la serie S.

ATMEGA es la misma falilia , y solo van cambiando algunos perifericos y memoria.

Atmega8 = 8KB y 28 pines , Atmega16 40 pines =16KB.

Entre los mas destacados son esos , atmega8 , muchos proyectos y cosas con estos uC.

En sí la serie Atmega tiene mucho pegue.


NO se del gtp ,

Pero para programar estos uC , hay varias maneras , paralela Hv y serie.

La mas comun es la serie con el llamado ISP.

Trabajan entre 4.5-5.5v , si tu serie es L entonces sera entre 2.5-5.5v

Cuidados como cualquier otro uC.
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: electronando en 06 de Enero de 2009, 23:26:48
Aca en peru el atmega8 cuesta lo mismo que el pic 16f84  y el atmega lo revuelca en velocidad memoria cantidad de pines usa oscilador interno imaginense y saquen su cuenta vale la pena aprenderlos creo yo a me olvidaba el atmega 16 esta mas barato que el 16f873 saquen su cuenta  :mrgreen:
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: micro_cadaver en 07 de Enero de 2009, 11:14:17
es decir un atmega16 se lo como con todo y zapatitos a toda la gama 16f de los pic?
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: migsantiago en 07 de Enero de 2009, 13:09:33
Aca en peru el atmega8 cuesta lo mismo que el pic 16f84  y el atmega lo revuelca en velocidad memoria cantidad de pines usa oscilador interno imaginense y saquen su cuenta vale la pena aprenderlos creo yo a me olvidaba el atmega 16 esta mas barato que el 16f873 saquen su cuenta  :mrgreen:

El pic16f84a es un micro carísimo con bajas prestaciones pero esto se debe a que los usuarios lo utilizan como trampolín para iniciarse con los pics, por lo que microchip no lo ha dejado de fabricar, a pesar de que el método de fabricación ya es obsoleto (de ahí el precio alto).

Si quieren comparar precios talvez sea mejor que comparen los avr recientes con pic recientes (como los PIC18).
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: electronando en 07 de Enero de 2009, 16:33:08
Unas recomendaciones :
El porque estoy aprendiendo esta arquitectura:
-Se parece bastante a los micros de la gama 8051

-Hay muchso circuitos programables (para diferentes aplicaciones basados en un core tipo 8051)
 lo cual para poder programarlos seria mas facil conociendo esta arquiterctura pude de frente aprender desde la  base con un 89c51 o 89c52 que estan aun mas baratos que los avr pero tuve complicaciones por el grabador software e informacion asi que decidi aprender los AVR.

-Si quiero realizar algun diseño de altas prestaciones y gastar  poquisimo me serviria bastante un atmega8 ; en Peru aun no llegan los pic 18f al precio que deberian y solo vienen los mas caros los que tienen USB.

-Si es cierto el pic 16f84 esta mas caro que el 16f628 por lo mismo que decia Migsantiago.

-Existen aplicaciones bastante interesantes con estos microcontroladores y lo mejor de todas las excusas me gusta aprender nuevas cosas asi que espero que todos tratemos de hacer que este hilo sirva a todos nosotros y si alguien sabe mas nos ayude a aportar. :mrgreen:
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: flacoclau en 07 de Enero de 2009, 20:09:04
Gracias AKE.
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: kain589 en 13 de Marzo de 2009, 10:02:02
Saludos! Estoy empezando con los atmega, ya tengo el programa que me compila sin problemas.

El problema viene a la hora de simular con avrstudio, en Project->Configuration option le introduzo de velocidad 12000000hz. pero a la hora de simular en la ventana de Processor->Frequency me marca 4mhz. He probado con la directiva que ponia AKENAFAB "#define F_CPU 12000000U" por si influia, pero sigue sucediendo igual. ¿Alguien sabe como lo puedo solucionar?¿puede ser una limitacion del software?

Y el otro tema que me trae de cabeza son los fuses, que no se como configurarlos ni donde configurarlos, me refiero a si se puede hacer en el archivo de codigo (como en los pic's) o hay que hacerlo a la hora de programar. He visto el archivo de fuses que hay colgado, pero mi excel desactica las macros y no puedo hacerlo funcionar(uso openoffice).

Bueno gracias de antemano por la ayuda, y despues de esto la cosa ira mejor.
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: stk500 en 13 de Marzo de 2009, 11:10:16
creo que que tiene que hacer otras opcion para poner el Reloj a 12mhz, cuando llegue a casa te dire,  y los Fuses se configuran cuando se programa pero cuidado como lo programa, Cualquier Fallo con SPIEN no volvera a programarlo otras ves sino tiene un Stk300 o Stk500 , osea Paralel High Voltage Serial, leete aqui, http://www.ethernut.de/en/isp/fuses.html   tambien te recomiendo que lea aqui, Traduce la pagina que es muy interesante http://www.mikrocontroller.net/articles/AVR_Fuses
Saludo
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: cristian_elect en 13 de Marzo de 2009, 15:18:36
El AVR-BURN-O-Mat creo que le escribi varias veces en este foro que ya viene con los fuses configurados solo hay que elegir.
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: AKENAFAB en 13 de Marzo de 2009, 18:48:52
No entendi bien , pero que soft usas para programar en AVR studio?

Si usas el GCC deberas entrar a opciones y escoger el reloj.


Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: kain589 en 13 de Marzo de 2009, 22:16:18
Uso el compilador gcc directamente desde el avrstudio4.
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: AKENAFAB en 14 de Marzo de 2009, 03:04:42
Esperemos que ocn esto se solucione.

Dentro avrstudio y con tu proyecto abierto das click en

-Project
--Condiguration options
---Frecuency pon la frecuncia en Hz.

Lo demás no lo toques xD

Saludos!
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: kain589 en 14 de Marzo de 2009, 09:40:10
Si, asi lo intente pero me sigue apareciendo 4mhz, bueno por el momento no resulta critico.

Luego hare pruebas en la protoboard, esperemos no meter la pata con los fuses, en las paginas que me dio stk500 esta bien explicado pero nunca se sabe, y que alguno muera en el intento, que para colmo y sin haber llegado a hacer nada con ellos, tengo 2 atmega que el programador ni me reconoce
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: luis_tercero en 03 de Abril de 2009, 13:22:21



http://www.megaupload.com/?d=YZ840PZ6
Título: DAC EN ATEMEGA 16
Publicado por: luis_tercero en 03 de Abril de 2009, 13:34:22
estoy empezando con este micro y aqui hay un aporte que se desarrollo en el curso que tomo, es un conversor analogo digita, el cual muestrea un nivel de voltaje y muestra su equivalente en binario en unos leds. espero que les sirva

http://www.megaupload.com/?d=YZ840PZ6

(http://img21.imageshack.us/img21/9120/imagenproteus.th.jpg) (http://img21.imageshack.us/my.php?image=imagenproteus.jpg)

Título: "OLA MUNDO"HIPERTERMINAL
Publicado por: luis_tercero en 03 de Abril de 2009, 13:37:35
necesito que se vea una palabra en el hyperterminal de windows como el "hola mundo" y pues no me a salido nada de lo que he hecho, que la verdad a sido nada
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: MLO__ en 30 de Septiembre de 2009, 01:11:35
Excelente hilo.

Por aqui estaré espiando.

Saludos
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: MLO__ en 03 de Octubre de 2009, 12:16:01
Hola.

Pues aqui dejo un avance que he hecho con los AVR o ATMEGA ...

El código lo que hace es enviar un string y una variable cuando el estado del pin A0 sea 1:

Código: C
  1. #include <mega16.h>
  2. #include <stdio.h>
  3. #include <delay.h>
  4.  
  5. #define true    1
  6.  
  7. #define WDE     3
  8. #define WDTOE   4
  9. #define RA0     PINA.0
  10.  
  11. struct BytesUsed
  12. {
  13.     unsigned char Data[13];
  14.     unsigned char Count;
  15. }Var={"Hola Mundo\r\n",0};
  16.  
  17. void main(void)
  18. {
  19.     UCSRA=0x00;
  20.     UCSRB=0x08;
  21.     UCSRC=0x86;
  22.     UBRRH=0x00;
  23.     UBRRL=0x19;
  24.     DDRA.0=0;
  25.    
  26.     while (true)
  27.     {
  28.         if(RA0==1)
  29.         {
  30.             printf("Valor[%u]\r\n %s",Var.Count,Var.Data);
  31.             delay_ms(10);
  32.             Var.Count++;
  33.         }
  34.     }
  35. }

Una imagencilla del esquematico y del sistema funcionando

(http://img246.imageshack.us/img246/7687/avr2.png)

Saludos
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: MLO__ en 03 de Octubre de 2009, 13:56:26
Nada mejor que el uso de interrupciones para la recepción serial  ;-)

Código: C
  1. #include <mega16.h>
  2. #include <stdio.h>
  3. #include <delay.h>
  4.  
  5. #define RXB8 1
  6. #define TXB8 0
  7. #define UPE 2
  8. #define OVR 3
  9. #define FE 4
  10. #define UDRE 5
  11. #define RXC 7
  12.  
  13. #define FRAMING_ERROR (1<<FE)
  14. #define PARITY_ERROR (1<<UPE)
  15. #define DATA_OVERRUN (1<<OVR)
  16. #define DATA_REGISTER_EMPTY (1<<UDRE)
  17. #define RX_COMPLETE (1<<RXC)
  18.  
  19. #define RX_BUFFER_SIZE 20
  20. struct BytesUSART
  21. {
  22.     char Buffer[RX_BUFFER_SIZE];
  23.     unsigned char index;
  24.     char status;
  25.     char data;
  26. }USART;
  27.  
  28.  
  29. // USART Receiver interrupt service routine
  30. interrupt [USART_RXC] void usart_rx_isr(void)
  31. {
  32.     USART.status=UCSRA;
  33.     USART.data=UDR;
  34.     if ((USART.status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
  35.         USART.Buffer[USART.index]=USART.data;
  36.     putchar(USART.data);
  37. }
  38.  
  39. void main(void)
  40. {
  41.     UCSRA=0x00;
  42.     UCSRB=0x98;
  43.     UCSRC=0x86;
  44.     UBRRH=0x00;
  45.     UBRRL=0x19;
  46.  
  47.     #asm("sei")
  48.    
  49.     while (1)
  50.     {
  51.     }
  52. }

El código recibe el caracter por vía serial y lo envía nuevamente. Me pareció muy útil la parte del registro UCSRA en donde están varias opciones de detección de errores.

Saludos
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: MLO__ en 05 de Octubre de 2009, 13:37:01
Hola.

Aqui otro ejemplillo, ahora con el ADC; el valor [entre 0 y 255] se despliega en 3 siete segmentos los cuales están controlados por la interrupción de un timer

Código: C#
  1. #include <mega16.h>
  2. #include <delay.h>
  3.  
  4. #define ADC_VREF_TYPE   0x60
  5. #define true            1
  6. #define OutUnidades     PORTD.2
  7. #define OutDecenas      PORTD.1
  8. #define OutCentenas     PORTD.0    
  9.  
  10. const unsigned char Numeros[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
  11.  
  12. struct BytesADC
  13. {
  14.     unsigned char Value;
  15.     unsigned char SetPoint;
  16. }ADC;
  17.  
  18. struct BytesTimer
  19. {
  20.     unsigned char Ints;
  21.     unsigned char SetPoint;    
  22. }Timer0;
  23.  
  24. struct BytesBCD
  25. {
  26.     unsigned char Unidades;
  27.     unsigned char Decenas;
  28.     unsigned char Centenas;
  29. };
  30.  
  31. union
  32. {
  33.     struct BytesBCD BCD;
  34.     unsigned long int ByteBCD;
  35. }uNumero;
  36.  
  37. void Decimal2BCD(unsigned long int valor);
  38. unsigned char read_adc(unsigned char adc_input);
  39.  
  40. interrupt [TIM0_OVF] void timer0_ovf_isr(void)
  41. {
  42.     uNumero.ByteBCD=0;
  43.     Decimal2BCD(ADC.Value);
  44.    switch(Timer0.Ints++)
  45.    {
  46.        case 0:
  47.         OutCentenas=0;
  48.         PORTC=Numeros[uNumero.BCD.Unidades];
  49.         OutUnidades=1;
  50.         break;
  51.        
  52.        case 1:
  53.         OutUnidades=0;
  54.         PORTC=Numeros[uNumero.BCD.Decenas];
  55.         OutDecenas=1;
  56.         break;
  57.        
  58.        case 2:
  59.         OutDecenas=0;
  60.         PORTC=Numeros[uNumero.BCD.Centenas];
  61.         OutCentenas=1;
  62.         Timer0.Ints=0;
  63.         break;
  64.    }
  65. }
  66.  
  67. void main(void)
  68. {
  69.     PORTA=0x00;
  70.     DDRA=0x00;
  71.    
  72.     DDRD=0xFF;
  73.     PORTD=0x00;
  74.    
  75.     DDRC=0xFF;
  76.     PORTC=0x00;
  77.  
  78.     // ADC initialization
  79.     // ADC Clock frequency: 1000,000 kHz
  80.     // ADC Voltage Reference: AVCC pin
  81.     // ADC Auto Trigger Source: None
  82.     // Only the 8 most significant bits of the AD conversion result are used
  83.     ADMUX=ADC_VREF_TYPE & 0xff;
  84.     ADCSRA=0x82;
  85.    
  86.     TCCR0=0x04;
  87.     TCNT0=0x00;
  88.     TIMSK=0x01;
  89.    
  90.     #asm("sei")
  91.  
  92.     while (true)
  93.     {
  94.         ADC.Value=read_adc(0);
  95.         delay_ms(5);
  96.     }
  97. }

El esquemático:
(http://img134.imageshack.us/img134/6468/avr3.png)

Saludos
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: cristian_elect en 05 de Octubre de 2009, 23:36:00
Estas usando CVAVR es un compilador bastante bueno funciona bien, lo que no me sale bien es en WinAVR se pierde codigo.
 
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: betito_mmf en 22 de Octubre de 2009, 07:00:24
Hola amigos , ya que estan con el Codevision  avr , justo ahora estoy practicando con ese software ,
aqui les mando un ejemplito del timer0  vamos a generar una señal Periodica de 5ms   en estado bajo
y  2ms  en estado alto, cuando se presione el pulsador.

antes que nada un poco de teoria

EL TIMER0

El atmega16 puede trabajar en distintos modos de generacion de formas de onda (4 modos):

1- MODO   NORMAL
2- MODO   PWM, Fase correcta
3- MODO   CTC  (Borrado del  contador en la igualdad de comparación: TCNT0=OCR0 =>  borrar  TCNT0 )
4- MODO   Fast PWM

 Estos modos se configuran en el registro TCCR0 (Resgistro de Control del Timer0)   especificamente
 en los  bits 6 y 5  (ver datasheet)

aqui voy a trabajar con el MODO CTC , en el que se hace una comparacion entre los registros TCNT0 y OCR0 ,
cuando el contador TCNT0 enpiece a contar  1 ,2,3, ......  y llegue al valor que tiene el registro OCR0 (valor
 que lo pone el programador),  entoces TCNT0 es puesto a 0 (borrado) y se activa  el flag OCF0 , y se ejecuta
 la interrupcion por "igualdad de  comparacion" . asi de simple o noo

Eso no es todo , para que veas cuantos recursos tiene este micro , el modo que explique solo es para ver de
que modo vamos a generar la forma de onda.  ahora tambien podemos configurar la patita (el pin OC0) por
donde saldra la señal , para ello existe dos bits de configuracion bits 5 y 4 del registro TCCR0  (ver data sheet ;-))  .  

COM01     COM00

  0                0               No se forma señal en el pin OC0  ,  OC0 desconectado
  0                1               TOGGLE en OC0  en la igualdad de comparacion (Si pin OC0 es "0" ahora sera "1" y viceversa)
  1                0               O  en el pin OC0   en la igualdad de comparcion
  1                1               1   en el pin Oc0    en la igualdad de comparcion

Usare el modo TOGGLE , es decir el pin OC0 sera "0" hasta que el timer llegue a los 5ms y luego el pin sera
 "1"  por 2ms  y asi susecivamente 5ms   2ms ,  5ms 2ms ,  .................         genrando  la señal periodica

para mas detalle aqui les pongo  el programa , donde logicamente veran que use el preescaler del timer0
CLK/1024 para llegar a los 5ms y 2ms .


 
                                                                                                               _2m__                   _____
                    //programa que genera una onda periodica   ____5ms__|          |_________|         |
                    //clock 8Mhz  , 5ms  en bajo y 2ms el alto , al presionar el pulsador

                    #include <mega16.h>

                    volatile char i;
                    volatile int bajo = (5*8*1000/1024)-1;
                    volatile int alto = (2*8*1000/1024)-1;
              
                    interrupt [EXT_INT0] void ext_int0_isr(void)

                   {   DDRB = 0b11111111;
                        OCR0 = bajo;
                        TCCR0 = 0b00011101;     //modo CTC, toggle OC0, CLKIO/1024
                        TIMSK = 0b00000010;
                   }

                    interrupt [TIM0_COMP] void timer0_comp_isr(void)
      
                   {    i=~i;  
                        if (i==0)
                                 OCR0=bajo;            
                        else      
                                 OCR0=alto;    
                   }

                    void main (void)
                  
                   {   MCUCR = 0b00000010;      //INTE0  Flanco de bajada
                        GICR =  0b01000000;         //habilitamos INTE0
                        #asm("sei")                        //SREG.7 = 1;
                        while(1);
                   }




Aqui la simulacion:

(http://img25.imageshack.us/img25/9797/19147901.gif)

y la salida de la simulacion:

(http://img514.imageshack.us/img514/6182/36519429.gif)

Por cierto esta simulacion esta en Proteus 7.2 Sp6 y la forma de onda es la esperada  ,pero  lo simule en el proteus 7.4  , 7.5  , inclusive en el 7.6 sp0  pero
la forma de onda en estas versiones es incorrecta  , haber mi amigo MLO o alguien me pueda decir si hay este mismo error en estas versiones pues
ya puse de cabeza mi PC y naca la perinaca con estas versiones  en cuanto a la interrupcion de timer0 por igualdad de comparcion . no se
si sera mi PC que es AMD con procesador Athlon XP , por ahi vi que dicen que en otras maquinas si corre bien . pasen la voz please , por lo pronto me quedo
con esta 7.2 sp6  .
 


Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: micro_cadaver en 22 de Octubre de 2009, 17:12:51
reciba mis saludos y felicitaciones por los temas de este hilo. ya pronto me pondre a cabalgar estos micros.

saludos!!!

PD: quitele el cigarrito al gatito!!!
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: adam143 en 10 de Mayo de 2010, 16:06:05
Hola Petito
soy un technico in electronicas e estoy aprendido el linguage c para usar me atmega8535 in me proyectos electronicos.La cosa e no se como usar la.Puides dar me las etapas para empezar por favor.que necessito como hardware and software.tengo solo el atmega8535 con un solo cable que se connecta a el computador;es sufficiente?
muchas gracias
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: Enrique_86 en 17 de Noviembre de 2010, 12:18:15
Hola gente, excelentes aportaciones, segun lo que he visto y leido de los ATmega son de mayores prestaciones por sus instrucciones y otras bondades de su arquitectura, y otro plus aparte es su bajo costo, por esto me dicidi a aprenderlos, llevo tiempo programando pics y tambien algo de motorolas en assembler y C, pero para comenzar me gustaria entrar con el assembler, alguien tiene algun ejemplo para el ATmega8 en assembler? Se agradece de antemano las respuestas. Saludos a todos, seguire este hilo.  :mrgreen:
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: stk500 en 17 de Noviembre de 2010, 13:00:25
Hola Erinquez, para programa en Assembler el Atmega8 te vale cualquier programa para otros Atmega, pero debe tener la hoja de Dato del Atmega8, yo se assembler no se muchos, pero hay un monton de Aplicaciones en la pagina de Atmel.
seria muy interesante que tu mismo abriela un Hilo aqui con tus ejemplos asi todos podiamos aprender contigo.
 :P :P
Saludos
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: cristian_elect en 17 de Noviembre de 2010, 14:36:31
Yo comencé con asm pero termine en C pero también lo combino los dos.
Tiene muchas instrucciones pero eso mejora bastante el rendimiento hay ice la prueba de un pic18 y un atmega
Y el atmega le gana 45% a la misa velocidad contando que el pic es clock/4.
Es decir pic18 a 16Mhz y atmega 4MHz.
Pero lo malo que los atmega estan subiendo su precio, ya los ultimos modelos de pic18 cuestan menos y los estan mejorando.
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: jonathanPIC888 en 17 de Noviembre de 2010, 16:09:00
Yo me apunto al hilo estoy escribiendo pequeñas aplicaciones para el ATtiny2313 y pronto  :5] :5] :5] :5] espero que me lleguen los micros ATmega644 y ATmega328P de Ditentec ..que todavía no me responden luego de que les hice el pago  :5] :5]
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: Enrique_86 en 17 de Noviembre de 2010, 18:20:33
No estaria mal la idea de iniciar un hilo con un tutorial de los ATmega en assembler, acabo de darle una revizada y ya compile mi primer programa, si todos colaboramos se hace algo bueno, por mi parte yo me apunto al assembler, si alguien sigue enhorabuena... En assembler se puede conocer mucho mejor las bondades del micro  :mrgreen: por eso me interesa mas el asssembler, y sus instrucciones se parece mucho a los micros de freescale, lo cual esta muy bueno.
Voy a hacer unos ejemplos mas y si tengo algo mas consistente abro un hilo o si alguien ya tiene algo, contribuyo. Saludos!   8)
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: Enrique_86 en 29 de Noviembre de 2010, 17:03:55
Para los interesados en programar los ATmega en Assembler con el AVRStudio, led dejo este link:

AVR Assembler User Guide (http://www.atmel.com/dyn/resources/prod_documents/doc1022.pdf)

Saludos.
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: ex-cash en 01 de Junio de 2012, 21:45:58
Bueno amigoa quie les dejo una libreria que hara su retardo (dalay) mas exacto, esto lo pueden utilizar en el AVR Studio 5 en codigo C, no mas tinen que llamar la libreria incluirla y listo espero les sirva para sus proyectos con el Atmega16, excelente microcontrolador!!!!
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: smairand18 en 05 de Julio de 2012, 22:42:44
yo tengo un problema, en mi proyecto estoy tratando con un atmega16 y me pidieron hacer un ensallo con el, en el cual lo convierta en una compuerta logica, cuando la entrada a0=1, la salida b=0 y al contrario, entonces como soy un poco ignorante de la programacion del atmega, mas o menos consegui esto:
IF(PINA.1) //si el pin 1 del puerto A está en 1...
{
//PORTB.1 = 0;
}

IF(!PINA.1) //si el pin 1 del puerto A está en 0...
{
//PORTB.1 = 1;
}
estara bien lo que asumo???
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: smairand18 en 05 de Julio de 2012, 22:51:54
necesito crear un codigo en el cual el atmega32 trabaje como un simple inversor, por ejemplo que si A0=0, B0=1 y al contrario... pero no se en si como hacerlo, soy un super novato en esto... leyendo, he armado esto:
#include <avr/io.h>
IF(PINA.1) //si el pin 1 del puerto A está en 1...
{
//PORTB.3 = 0;
}

IF(!PINA.1) //si el pin 1 del puerto A está en 0...
{
//PORTB.1 = 1;
}
pero no se que tan real sea
Título: Re: TUTORIAL AVR - ATMEGA16 / 8
Publicado por: betito_mmf en 10 de Julio de 2012, 00:39:05
hola smairand18  yo haria asi la rutina:

Código: [Seleccionar]

while(1)                          //bucle infinito para que se ejecute siempre esta rutina
       { if(PINA.1 == 0)         //Si la entrada 1 del PuertoA es cero
                PORTB.3 = 1;     //Entonces la salida 3 del PuertoB es uno
          else                   //Caso contrario la salida 3 del puertoB sera cero.
                PORTB.3 = 0;
       }

saludos