Go Down

Topic: ¿Se puede poner un array o tabla look-up en la rom? (Read 1 time) previous topic - next topic

pepefe

A ver si me explico: Estoy usando el timer 2 para generar interrupciones periódicas pero quiero liberar la cpu todo lo que se pueda y al mismo tiempo ser lo mas preciso posible.
El tiempo de recarga del timer y el preescaler dependen del inverso de una lectura analógica; ya que con unl potenciómetro selecciono frecuencias pero al final en el timer lo que se programa es el periodo f=1/T.
Lo mas rápido es leer una tabla o un array y recargar el timer para el próximo, si me pierdo haciendo cálculos pierdo precisión pero como es relativamente grande para que sea precisa no la quiero cargar en la ram para no llenarla entera o en la eeprom, además al arrancar se perdería mucho tiempo declarando y llenando el array.

Resumiendo la pregunta es si puedo declarar un array de algún modo para que esté en la rom y no en la ram, evidentemente no se modificaría en tiempo de ejecución; de hecho me interesa que no se pueda modificar.

Serían dos tablas tipo char, un byte por posición, como mínimo de 65 entradas cada una, claro que según lo complicado que sea lo ideal sería llegar a dos tablas de 1k ya que la resolución de la entrada analógica es 1k

curro92

#1
Dec 07, 2012, 05:16 am Last Edit: Dec 07, 2012, 05:42 am by curro92 Reason: 1
Hola,
cuando hablas de rom supongo que te refieres a la memoria flash donde se carga el código ejecutable. En esa memoria sí puedes cargar variables voluminosas que no se vayan a modificar. Para eso tienes que usar la palabra clave PROGMEM

Mira en la Referencia
http://www.arduino.cc/en/Reference/PROGMEM

Para declarar variables hay que usar unos tipos especiales, que están definidos en  pgmspace.h, y para leer las variables también tendrás que usar una función especial.

pepefe

Si, me refería a la flash, a la memoria de programa, vamos.

Gracias le echo un vistazo pero creo que si que es eso lo que estaba buscando.

Heke

Hombre !! compañero "Palm-ero"

Una alegria verte por aqui.

Si lo que vas a escribir en la flash va a estar cambiando continuamente no lo hagas en la del arduino (ademas solo tiene 512 bytes), emplea mejor una eeprom serie I2C de microchip, por ejemplo, mira estos enlaces sin ir mas lejos...
http://www.diarioelectronicohoy.com/blog/eeprom-con-i%C2%B2c-bus#more-385
http://kans01.wordpress.com/2008/03/13/usando-una-memoria-eeprom-desde-arduino/



Un saludo.

CUIDADO !! MIS POST NO SON APTOS PARA MENORES. SI ERES MENOR DE 14 AÑOS DEBES DE LEERLOS ACOMPAÑADO DE UN ADULTO

pepefe

#4
Dec 08, 2012, 07:38 pm Last Edit: Dec 08, 2012, 07:44 pm by pepefe Reason: 1
Veo que me has reconocido por el avatar, porque el nikname estaba ocupado.  :D
Estoy usando un arduino nano V3 con un 328 osea que tengo 2k de ram y 1k de eeprom.
Estoy empezando con este proyecto así que quizás sea racanería prematura de ram, cpu y de todo pero es que estoy acostumbrado a funcionar así; ahorra desde el principio que luego no te queda de X.

El animalito se supone que será una ECU para etanol para un prototipo la shell ecomaratón. Ya veremos que sale del engendro.
Es una operación repetitiva, que siempre será la misma, se supone que no hay que tocarla nunca, aunque quizás venga bien después como un "mapa de motor", una posibilidad sería tener varios al gusto.

Go Up