fbpx

Expresate

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

Problemas con delay...
 
Avisos
Vaciar todo

Problemas con delay_ms() en CSS

8 Respuestas
7 Usuarios
0 Reactions
23.5 K Visitas
jcobreros
Respuestas: 11
Topic starter
(@jcobreros)
Active Member
Registrado: hace 17 años

Estoy teniendo problemillas al programar una Skypic (16f876A) con ccs.
Al hacer delay_ms(100) el pic hace el delay correctamente, pero si hago delay_ms(variable) se los inventa. La variable ahora mismo es Float, pero con Int pasa lo mismo. Alguien tiene el mismo problema?
Muchas gracias de antemano

Responder
7 respuestas
jcobreros
Respuestas: 11
Topic starter
(@jcobreros)
Active Member
Registrado: hace 17 años

Muchas gracias por las respuestas! he probado la funcion que ha dicho joviwap y funciona genial. supongo que tengo que jugar con la precision que quiero que tenga, y tener encuenta que tardará algo más por hacer los bucles, pero vaya, qur funciona.
Gracias

Responder
mif
Respuestas: 1095
 Mif
(@mif)
Noble Member
Registrado: hace 19 años

jcobreros, el problema (que yo también lo tuve) es que delay_XX() sólo acepta constantes. Podrías intentar colársela con un redireccionamiento a un registro o algo así... quiza un puntero... pero no sé si se tragará eso.

Responder
8wck9
Respuestas: 1
(@8wck9)
New Member
Registrado: hace 12 años

Hola amigo como lo resolviste? es que tengo exactamente el mismo problema que tù,no me genera el delay con una variable ya intente hacer lo de joviwap pero no me funciono este es mi còdigo modificado, no se que hice mal

void delay_milis(int16 n)
{
for (;n!=0; n--)

delay_us( 1000 );
}

void SALIDA(int Frec, int num)
{
PERI = (1/(Frec/2))*1000;
bit_set(PORTC,num);
delay_milis(PERI);
bit_clear(PORTC,num);
delay_milis(PERI);
}


Lo que pretendo que haga mi programa es encender dos led con distintas frecuencias en los pines C5 Y C6 del puerto C.

Las variable "Frec" es una variable en la cual se ingresa una frecuencia X,
"PERI" Es la variable que calula el periodo de la frecuencia ingresada anteriormente, la multiplica por 1000 para eliminar los decimales y quedarme con la parte entera, misma que es ingresada a la funcion delay_ms(PERI) y num es bit del Puerto C que se uso , osea C5 Y C6

Codigo original:

void SALIDA(int Frec, int num)
{
PERI = (1/(Frec/2))*1000;
bit_set(PORTC,num);
delay_ms(PERI);
bit_clear(PORTC,num);
delay_ms(PERI);
}

gracias y disculpas por escribir tanto, saludos

Responder
Página 2 / 2
Compartir: