En el Codevision compilador para Atmel procesadores, hay una posibilidad de especificar la dirección de almacenamiento de una variable global, por ejemploInicializando una variable y especificando la dirección de almacenamiento al mismo tiempo: ¿es posible?
int a @0x100; // will place the variable at the address 0x100 in RAM
Por supuesto, como por C estándar, las variables pueden ser inicializadas a declaración
int a=42;
Sin embargo, no encontré ninguna posibilidad de hacer ambas cosas. int a @0x100 = 42
o int a = 42 @0x100;
no funcionan, causan errores de compilación.
Usted puede preguntar por qué es tan importante hacerlo, porque uno puede simplemente tener
int a @0x100;
int main()
{
a = 42;
//...
}
Sin embargo, si tengo variables en el EEPROM, se tiene que inicializar ellos, porque esta es la única forma de generar automáticamente el archivo eeprom con los valores que contiene. No puedo asignar esos valores más adelante, porque en ese caso escribiría los valores en el eeprom en cada inicio del programa.
Cuál particular, ¿Esta familia de procesadores Atmel ayuda a http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=102678? –
ATmega, pero el manejo de eeprom es el mismo. El hilo solo describe con más detalle lo que escribí en mi último párrafo (si asigno un valor a una variable eeprom en la declaración 'eeprom int a = 42; 'significa que este valor se agregará al archivo eeprom generado que solo se escribirá una vez en el dispositivo. No se escribirá realmente en el eeprom cada vez que se inicie el programa, una muy buena característica). Si hubiera asignado el valor en un comando separado, se compilaría en una instrucción de escritura para el eeprom. Gracias por el enlace, intentaré preguntar si no obtengo nada útil aquí. – vsz
Por favor, explíqueme lo que en realidad está tratando de hacer; parece que ha tomado un camino equivocado en busca de algo que se pueda hacer.Atmel no tiene nada que ver con nada de esto. ¿Desea controlar un valor que está en el espacio eeprom en una dirección específica? ¿Desea controlar un valor que está en un registro/memoria que no está en eeprom? si este último desea controlar la dirección para que su programa una vez iniciado pueda tener una variable que apunte a esa ubicación de registro/memoria (que no está en eeprom)? –