Pages: [1]   Go Down
Author Topic: Velocidad de lectura de una variable  (Read 762 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
God Member
*****
Karma: 7
Posts: 635
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

No he sabido poner un título mejor que explique mi problema.

Para mi proyecto de cuadricóptero, que sigue lento pero seguro  smiley, 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:
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?
« Last Edit: July 29, 2012, 04:44:15 pm by Cheyenne » Logged


Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Code:
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.




Logged

Offline Offline
God Member
*****
Karma: 7
Posts: 635
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

@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  smiley-sad
Logged


Pages: [1]   Go Up
Jump to: