Ok, se puede aprovechar que los string son todos del mismo tamaño y probar con algo como:
Código:
typedef enum {
EEP_CARRO_ACT = 0, EEP_CARRO_DES, //etc
}eepromStringIndex_t;
char EEMEM eepStrings[][4] = {"AAAA", "BBBB", "CCCC" /*etc*/}; //Inicio del temporizador, (no modificable)
//Luego en tu codigo se puede leer con eepStrings[EEP_CARRO_ACT]
//o con eepStrings[variable] con variable de tipo eepromStringIndex_t,
//o de tipo unsigned int también sirve si no te gustan los enums
Pero ahora que lo escribo, ahí hay un error nuevo. Estamos usando como inicializadores cadenas con "" que son terminadas en nulo.
Es decir "AAAA" = {'A','A','A','A', 0}
Entonces si querés dejar los inicializadores como están va
char EEMEM eepStrings[][5] = {"AAAA", "BBBB", "CCCC" /*etc*/};
Si querés que los arrays no incluyan el último elemento se puede usar
char EEMEM eepStrings[][4] = {{'A','A','A','A'}, {'B','B','B','B'}};
Por último si uno quiera usar strings de distinto tamaño, el caso general sería almacenar los strings y además los punteros a los strings. Algo como:
char EEMEM string1[] = "string1";
char EEMEM string2[] = "string2maslargo";
char EEMEM string3[] = "string3m";
char EEMEM string4[] = "string4largotonote";
char *stringList[] = {string1, string2, string3, string4};
entonces si hago stringList[0] tengo el puntero a "string1" y sucesivamente.
Notar que la lista de punteros a string stringList está almacenada en ram.
También se podría almacenar en memoria flash (supongo) con:
char * const stringList[] = {string1, string2, string3, string4};
Y tal vez en memoria eeprom (supongo nuevamente):
char * EEMEM stringList[] = {string1, string2, string3, string4};
/////////////////////////////////////////
Nota sobre gustos: no utilizaría la memoria eeprom para guardar cadenas de texto que no van a cambiar. Para eso utilizaría la memoria flash del micro usando
const char * const cadenas[] = {"cadena1", "cadena2", "etc"};
Ahí tengo las cadenas almacenadas en flash, y los punteros a las cadenas también. Y mi programa lo puede utilizar sin llamar a funciones de lectura de eeprom, es decir, con cadena[0] me devuelva "cadena1" y así...
La memoria eeprom la utilizaría para constantes de calibración de algún tipo, algo que normalmente es constante pero que puede cambiar frente a una calibración.
Ejemplo: calibración del oscilador del micro, de la referencia de tensión interna del micro, conjunto de puntos para caracterizar una tensión medida con el conversor AD generada por un sensor (ejemplo: temperatura vs tensión de un termistor simple), baud rate predeterminado para una comunicación uart (junto con paridad, bits de stop...), etc.
Sí almacenaría cadenas en eeprom si van a ser modificadas de alguna manera por el usuario del sistema en su funcionamiento normalmente (ejemplo típico: cartelito de leds donde de acuerdo al mensaje que quiera mostrar el usuario se guarda la cadena misma + algo de información que indique como se muestra el mensaje).