fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

delay_ms en CCS
 
Avisos
Vaciar todo

delay_ms en CCS

5 Respuestas
3 Usuarios
0 Reactions
2,702 Visitas
xyvy
Respuestas: 50
 XyVy
Topic starter
(@xyvy)
Trusted Member
Registrado: hace 16 años

Hola chicos, sabéis porque si hago delay_ms(2000) se detiene 2 segundos y sin embargo si hago:

tiempo=20;
delay_ms(tiempo*100);

Se detiene apenas unos milisegundos...

Ciao.

Responder
4 respuestas
dragonet80
Respuestas: 1328
(@dragonet80)
Ardero
Registrado: hace 17 años

XyVy, y si pruebas esto:
tiempo = 20*100;
delay_ms(tiempo);

En la ayuda del CCS te dice:
Syntax:
delay_ms (time)

Parameters:
time - a variable 0-65535(int16) or a constant 0-65535

De lo que se entiende que sólo puede pasarle o una variable directamente o una constante. Tú le estas pasando una fórmula, por lo que puede que el compilador omita una de las dos partes. No lo se seguro, pero tiene pinta de eso. Prueba diferentes valores para asegurarte.

Responder
xyvy
Respuestas: 50
 XyVy
Topic starter
(@xyvy)
Trusted Member
Registrado: hace 16 años

Probé con

int tiempo=20*100;
delay_ms(tiempo);

y tampoco funcionaba, el error... vaya tela, eso me pasa por no cogerme el manual, y mi conocimiento de C (para los PCs) me hizo pensar que todo estaba bien.

Resulta que por defecto "int" en en el PIC es int8, por lo tanto solo podia tener un retardo en positivo de 255 y en negativo de 127.. vaya tela!!

He puesto int16 y todo solucionado.

Gracias chicos!

Responder
ucfort
Respuestas: 760
(@ucfort)
Ardero
Registrado: hace 19 años

no, no funcionara. por la forma de compilar los delays que tiene el CCS
La solucion es meterlo, por ejemplo, dentro de un for
for xxxxxxxx
{
delay_us(100)
}

Responder
dragonet80
Respuestas: 1328
(@dragonet80)
Ardero
Registrado: hace 17 años

Eso es cierto, hay que acostumbrarse a poner las definiciones de tipos de la forma completa, si se usan varios compiladores de vez en cuando:
unsigned int16 contador;
signed int8 resultado;

A mi también me ha pasado alguna vez al pasar de un compilador a otro ;).

Responder
Compartir: