Autor Tema: Empezando con AVR  (Leído 90752 veces)

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

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Empezando con AVR
« Respuesta #105 en: 22 de Octubre de 2009, 11:01:26 »
Hola stk500 gracias por el comentario, mmm no había pensado en el PWM, ya quiero pasar al C, pero como no me dejan alternativas tendré que hacer algunas cosas más en ASM :D

saludos
.

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Empezando con AVR
« Respuesta #106 en: 22 de Octubre de 2009, 12:35:56 »
Tranquilo amigo Cryn, eso no es un compromiso, sigue con tu planes y por aqui estare yo para  tener mas conocimientos.    :P
Saludos

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Empezando con AVR
« Respuesta #107 en: 23 de Octubre de 2009, 13:47:55 »
Siempre que se pueda podemos hacer algo stk500 ;-)

Y quiero comentarles que he modificado todos los ejemplos colocando los registors usados y sus configuraciones posibles, usos, etc. para que quede más completo y se entienda mejor, de ahora en adelante algo nuevo que vea lo iré posteando de esa manera. Y en cuanto pueda también colocaré un índice en el primer post, para que sea más fácil acceder a los ejemplos.

Espero que hasta ahora les haya gustado y sea de utilidad, seguiré viendo algunas cosas más en cuanto me quede tiempo libre.

Saludos para todos!!.
.

Desconectado MiCrOtRoNiC

  • PIC18
  • ****
  • Mensajes: 271
Re: Empezando con AVR
« Respuesta #108 en: 24 de Octubre de 2009, 00:36:52 »
que bien amigo cryn estaremos atentos a los avances  :-/

una pregunta? modificaste los post? o tambien modificaste los adjuntos?

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Empezando con AVR
« Respuesta #109 en: 24 de Octubre de 2009, 10:29:08 »
Hola MiCrOtRoNiC, Solo modifique los post, excepto en el ejemplo7 de timer que si modifiqué recién el adjunto, para simplemente aumentar la sección exportada para importarlo en versiones anteriores a la mía del Proteus, después todo sigue igual.

saludos.
.

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Empezando con AVR
« Respuesta #110 en: 15 de Noviembre de 2009, 01:03:33 »
hay algo q no me queda muy claro..en los pic tenemos q una instruccion se realiza cada 4 ciclos de reloj, q con un crital de 4MHZ seria 1Us..ahora en los atmel ..cada instruccion se realiza a la par con el reloj?  es decir en 0,25Us...entonces podria utilizar la misma formula del timer0 de los pic ..aqui en los atmel  pero en lugar de (4/Fosc)..pongo 0.25Us?
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado stk500

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4923
Re: Empezando con AVR
« Respuesta #111 en: 15 de Noviembre de 2009, 03:20:21 »
hay algo q no me queda muy claro..en los pic tenemos q una instruccion se realiza cada 4 ciclos de reloj, q con un crital de 4MHZ seria 1Us..ahora en los atmel ..cada instruccion se realiza a la par con el reloj?  es decir en 0,25Us...entonces podria utilizar la misma formula del timer0 de los pic ..aqui en los atmel  pero en lugar de (4/Fosc)..pongo 0.25Us?


Hola Jhozate!
la formula seria esta (T=1/f) = 1/4Mhz = 0,25Microsegundos Por Ciclo, usando un Cristal de 4Mhz,  el Timer0 tiene 8 bit, el Timer1 tiene 16 Bit,  tambien hay que tener la hojas de datos ya que hay Mcu con mas timer,

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Empezando con AVR
« Respuesta #112 en: 15 de Noviembre de 2009, 16:17:50 »
aja exactamente como dice stk500, o para ser exactos la fórmula en los AVR es:


El 4 para los pics es por lo que dijiste de los 4 ciclos de reloj por instrucción, en los AVR tenemos 1 ciclo de reloj por instrucción, por tanto ese 4 es solo para los lentos de los PIC :D

saludos.
.

Desconectado Jorge555

  • PIC18
  • ****
  • Mensajes: 496
    • JMN
Re: Empezando con AVR
« Respuesta #113 en: 04 de Diciembre de 2009, 18:43:37 »
Hola, yo también llevo unos pocos meses desde que empece con los AVR, uso WINAVR que es bueno y gratutio y eso es un motivo de peso para utilizarlo frente a los otros compiladores que comentáis. También estoy haciendome pequeños resumenes de los periféricos y el código que voy ordenando en mi página www.jmnlab.com, ahí están por si a alguien le sirven, no sé si son correctos ya que estoy aprendiendo.

Segurié este hilo que está interesante.

Saludos.

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: Empezando con AVR
« Respuesta #114 en: 09 de Diciembre de 2009, 13:28:39 »
Jorje555 yo tengo problemas con el winavr por que pierdo codigo en la compilacion en zize.
Eso no me pasa en otros compiladores.
No creo que todas las variables se declaren volatile para que no pierdan.
Yo ya deje un ejemplo aqui en el foro y nadie me supo responder.

Desconectado Jorge555

  • PIC18
  • ****
  • Mensajes: 496
    • JMN
Re: Empezando con AVR
« Respuesta #115 en: 10 de Diciembre de 2009, 18:49:11 »
Pues no sé que decirte, yo no he tenido ningún problema con las optimizaciones. Lo único prueba a indicar la base en la que escribes cada número, es decir 0x7D2, etc..

Saludos

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: Empezando con AVR
« Respuesta #116 en: 11 de Diciembre de 2009, 12:45:22 »
En este ejemplo la funcion delay(...) se pierde. En la simulacion se salta.
Ya este ejemplo ya lo hice con cvavr, iar y trabaja normal.
En un atmega8.

#include <avr/io.h>   

void delay( unsigned int a)
{
  while(a){
  a--;
   }
}

int main(void){
char a=0;
 DDRB=255;
 PORTB=0x00;
 delay(50);
 while(1){
   PORTB=a;
   ++a;
   delay(10000);
   if(a>254)
     a=0;
  }
  return 0;
}


 

Desconectado Jorge555

  • PIC18
  • ****
  • Mensajes: 496
    • JMN
Re: Empezando con AVR
« Respuesta #117 en: 11 de Diciembre de 2009, 20:20:33 »
Pues no sé porque no entra en el simulador, au nque tampoco entiendo mucho de éste ya que suelo probar siempre sobre hardware. Si grabas ese código en el micro y lo pruebas te funciona mal.

Prueba a especificar la base con cada número, es decir si es decimal, binario, hexadecimal.. Yo creo que alguna vez he tenido problemas por no hacer ésto. No sé que tipos de base tomará el compilador por defecto.

Saludos.

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: Empezando con AVR
« Respuesta #118 en: 21 de Diciembre de 2009, 00:17:24 »
Si el simulador funciona mal entonces también en el chip. El Winavr creo que no soporta completamente ANSI C.
 

Desconectado ma4826

  • PIC16
  • ***
  • Mensajes: 130
Re: Empezando con AVR
« Respuesta #119 en: 21 de Diciembre de 2009, 07:32:07 »
En este ejemplo la funcion delay(...) se pierde. En la simulacion se salta.
Ya este ejemplo ya lo hice con cvavr, iar y trabaja normal.
En un atmega8.

#include <avr/io.h>   

void delay( unsigned int a)
{
  while(a){
  a--;
   }
}

int main(void){
char a=0;
 DDRB=255;
 PORTB=0x00;
 delay(50);
 while(1){
   PORTB=a;
   ++a;
   delay(10000);
   if(a>254)
     a=0;
  }
  return 0;
}


 

Si activas la optimización es lógico que elimine el delay, el compilador ve un bucle que no hace nada y lo elimina. Sino quieres lo mantenga puedes poner esto.

Código: [Seleccionar]
volatile unsigned int b;
void delay( unsigned int a)
{
  b = a;
  while(b){
  b--;
   }
}

  Aunque lo mejor es que uses las funciones de delay que vienen con avr-gcc. Bien las funciones que se encuentran en "util/delay.h" y que requieren que actives la optimización, que uses valores constantes para llamar a las funciones y que definas den el código la velocidad a la que esta funcionando el microcontrolador (# define F_CPU) para que funcionen correctamente.
void _delay_us(double __us)
void _delay_ms(double __ms)

O las funciones de delay básicas ("util/delay_basic.h")
static inline void _delay_loop_1(uint8_t __count); //Cosume 3x __count ciclos de CPU
static inline void _delay_loop_2(uint16_t __count); //Cosume 4x __count ciclos de CPU

Saludos,

Miguel Ángel.


万人の友は誰の友でもない。


 

anything