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
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
/*----------------------------------------------------------------
-----------------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))
);
}#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);
}
}
}
#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);
// }
}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
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!!
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:
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;
}