Usar el ADC de un AVR como el Atmega8535 o el ATTINY461

Hola a todos:

Antes que nada quiero saludarles y comentarles que tengo muchos problemas usando estos micros además que ya mi proyecto está muy cerca de ser entregado, ando desesperada, si me pudieran ayudar les agradecería muchísimo :cry: :cry: :cry: ; ya he leído las especificaciones técnicas, sin embargo, me han dado una serie de problemas que los tendré que enumerar yo creo :cry:

1. Tengo un código en C que me he ayudado en direntes referencias para tomarlo en cuenta para la conversión analógica a digital, le he dado debug en el AVR studio 4 para ver como funcionan los puertos, mmm creo que bien, aunque no se si esté del todo bien, el siguiente es el código:


#include <avr/io.h>

int main (void)

{

DDRB = 0xFF; //port B

int x = 0;

// Se supone aquí que se activa el ADC con "prescaler" es decir, se divide la frecuencia entre 16 //como: 16 --> 1 Mhz/16 = 62.5 Khz, pero espero que lo esté haciendo bien

ADCSRA = _BV(ADEN)| _BV(ADPS2);

for ( ; ; ) //ciclo infinito para que siempre se convierta el valor analógico a digital
{

//seleccionar el pin ADC0 usando MUX

ADMUX = 0;

//La conversión empieza

ADCSRA |= _BV(ADSC);

//Esperar hasta que la conversión se acomplete

while (ADCSRA & _BV(ADSC) ) {}

//Obtener el valor ya convertido

x = ADCW;

//Dar salida a los 8 bits

PORTB = ~x >> 2;

}

}


Se supone que este código se aplica para muchos AVR puesto que ofrecen casi las mismas funciones, en el código se dice que una señal analógica entra al ADC0 y después se convierte en 10 bits, bueno en realidad 8, porque tiene que ver el valor minimo y el maximo, usando el convertidor analógico digital del micro. Toda esta conversión sale por todo el puerto B, es decir el PORTB todos los 8 pines de ese puerto.

Mi duda empieza porque cuando quiero conectar el AVR dragon al ATTINY561 (por medio del cable ISP, ) una vez me lo detectó, pero no hace nada, no despliega nada en leds, pero al parecer funciona, ocupo saber si le falta mucho al código porque veo otros programas y veo que son mas complejos :cry:


2. Mi segunda duda es, al parecer compila el programa (aunque a lo que veo en el debug, está muy raro, en un momento a otro veo que se llenan todos los "leds" o los puertos, es decir como si fuera un valor de 255 y ahi se queda) y se generan muchos archivos para que se programen al AVR, sin embargo si no me funciona el AVR dragon, creo que tendre que poner el micro en un programador universal, pero ocupo un archivo especial que no se cual pueda ser:
A continuación listo los nombres y sus extensiones de los archivos que se me generan en la compilación:

- SensorTest.elf >>>> tengo entendido que este archivo es el que se le programa al micro, o mas bien pasandolo a .bin, que en realidad no se cómo se hace

- Makefile

- SensorTest Intel Hex file

- SensorTest.o

- SensorTest.o.d

En realidad, si quiero usar un programador universal, ¿ cuál archivo debo cargar ?


3. Mi tercera duda es que también quiero implementar el código en el Atmega8535, bueno sin mencionar que ocupo cambiar el nombre de los puertos, también ocupo saber que extensión de archivo debo cargar al micro, y si es la .elf , se ocupa a .bin ?



Por favor, les pido su ayuda porque ando ya muy desesperada, tengo mas de dos meses con esto y no me sale , muchas gracias por su atención
:cry:

Nataly
 
Nataly,

Ocupas cargar el .HEX como archivo de programa principal.

Ahora ya que tienes el AVR Dragon, ahi puedes programar mediante ISP, JTAG sin necesidad de otro programador.

De manera particular casi nunca uso el depurador, no me ha servido de mucho.

Ahorita mismo estoy checando el ejemplo que proporcionas, en un momento te doy respuesta.

Y antes que nada, para que tu proyecto salga bien ocupas tranquilidad y no desesperarte, esto sale por sale.
 
ahhh muchas gracias en verdad, te agradezco todo tu apoyo

:LOL:

con respecto al .hex file, se me genera ese que dice Intel hex file, ese cargo ?

gracias de nuevo
 
Atrás
Arriba