Go Down

Topic: Velocidad de lectura de una variable (Read 847 times) previous topic - next topic

Cheyenne

Jul 29, 2012, 11:42 pm Last Edit: Jul 29, 2012, 11:44 pm by Cheyenne Reason: 1
No he sabido poner un título mejor que explique mi problema.

Para mi proyecto de cuadricóptero, que sigue lento pero seguro  :), estoy haciendo una rutina para el control de los ESC. Por diversas causas prefiero no usar la librería servo. La cuestión es que la velocidad de las instrucciones para garantizar el tiempo HIGH lo más exacto en la señal a los ESC estoy comprobando que es muy crítico. Tanto que un primer paso ha sido apartar las instrucciones

digitalWrite(PinMotorDelante, HIGH);

y utilizar

bitWrite(PORTD, PinMotorDelante, 1);

Si PinMotorDelante está definido como una constante,

const int PinMotorDelante = 2;

la instrucción bitWrite funciona muy rápida. Pero si en su lugar pongo una variable de un array

Code: [Select]
bitWrite(PORTD, OrdenPinMotor [0], 1);

la instrucción se vuelve lenta por el tiempo que tarda en leer el valor del array. ¿Alguien sabe de alguna forma para solucionar esto, que bitWrite pueda leer una variable rápidamente?
http://cuadricopterodiyarduino.blogspot.com/

curro92

Hola,
se me ocurrió probar definiendo las variables al revés,

Code: [Select]

int PinMotorDelante ;
const int OrdenPinMotor [] = {2, 1};

void setup()
{
   Serial.begin(9600);
   PinMotorDelante = 2;
}   


Se invierten las velocidades, ahora con el array OrdenPinMotor[] va más rápido, al estar definido como constante. Yo tampoco conozco la razón: ¿podría ser porque la constante se almacena en la memoria Flash y la variable en la memoria SRAM? Seguro que alguien sabe más de memorias.





Cheyenne

@curro92 eso es, no es por el hecho de ser un array si no por estar definido como una variable en lugar de una constante. Pero para mi código necesito que sea una variable  :(
http://cuadricopterodiyarduino.blogspot.com/

Go Up