TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Kid_Bengala en 01 de Abril de 2008, 14:41:38

Título: Retrasar dos señales
Publicado por: Kid_Bengala en 01 de Abril de 2008, 14:41:38
hola

tengo dos señales que salen de dos biestables y quiero retrasarla unos milisegundos antes de atacar otro integrado (motor paso a paso L293), que lo activare cuando se me habilite otra señal (sensor). Serian unos 200 bits a retrasar por señal, pero claro, no se va ha almacenar todo y luego sacarlo, mas bien como una memoria fifo, quiero que cuando le entren los bits los vaya almacenando hasta habilitar la otra señal (pueden ser 3 bits o asi), vacie el buffer y siga llenando y sacandolos. No se muy bien como hacerlo, me preguntaba si alguien puede echarme una manita, trabajo con css. ¿Alguna ayudita? jejeje :D

saludos de antonio  :-/
Título: Re: Retrasar dos señales
Publicado por: manex_1987 en 01 de Abril de 2008, 15:57:54
Con 200 bits quiero pensar que te refieres a 200 cambios de estado. Si lo que quieres es muestrear la señal, primero deberas de saber la frecuencia a la que saldra la señal. Luego, lee el pin donde recibiras esa señal a 10 veces minimo esa frecuencia. Eso lo puedes hacer con un timer. Cuando entres en la interrupcion del timer,  seria algo asi:

variables globales:  bit_count=0, byte_count, MUESTRAS[256]   //  256*8=2048 muestras digitales

int_timer0:

temp=input(PIN_xx)
MUESTRAS[byte_count]<<1; //Movemos 1 a la izda.
MUESTRAS[byte_count]=MUESTRAS[byte_count]|temp; //Metemos temp

bit_count=bit_count+1;
if(bit_count=8)
{
bit_count=0;
byte_count=byte_count+1;
}

Luego, en el programa principal estaras esperando la señal del sensor. Cuando se active la señal del sensor:
-Desactivas la interrupcion del timer0
-Teniendo ya las variables byte_count y bit_count, haces el trabajo inverso, es decir, coges el bit, lo sacas por el puerto, mueves a la derecha (>>) el byte, sacas el bit por el puerto, bit_count=bit_count-1 ,  si bit_count=0 entonces byte_count=byte_count-1 y sucesivamente hasta que ambas variables sean cero.
- Cuando sean cero, activas la interrupcion y vuelta a empezar.


Ufa! Ya me ha costado escribir jajajj
Título: Re: Retrasar dos señales
Publicado por: Kid_Bengala en 03 de Abril de 2008, 13:22:59
Hola

Acabo de capturar estas dos señales, cuando es un cero lo que manda (lo que simulando haciendo que solo mande ceros), los pulsos son mas anchos y cuando son un bit a 1 son mas estrechos (o mas bien se puede decir que manda mas pulsos en el mismo tiempo), ambos manda los mismos bit, lo unico que unos son mas amplios y otros mas estrechos. Tambien se puede ver como la segunda señal es la contraria de la primera.

La verdad que no se como abarcar esto, con lo sencillo que puede ser. A ver si me compro la fuente de laboratorio de una vez y empiezo a programar de nuevo PIC que entre lo poco que sabia y lo que me acuerdo vamos bien, y la verdad que me urge aprender para futuros desarrollos, porque este es como quien dice el primero despues de mucho tiempo y me urge mucho :(

A ver si alguien puede hacerme ver la luz y conseguir retrasar estas señales X ms, una vez activado un sensor.

muchas gracias

saludos
Título: Re: Retrasar dos señales
Publicado por: Kid_Bengala en 07 de Abril de 2008, 10:30:26
Hola

me parece que esto lo vamos a olvidar que no se como abarcarlo jejejeje. Muchas gracias por la ayuda

saludos de antonio
Título: Re: Retrasar dos señales
Publicado por: manex_1987 en 07 de Abril de 2008, 11:06:04
Miraste bien mi planteamiento? Nose, no parece tan descabellada mi idea. Pues nada! :D

salu2!
Título: Re: Retrasar dos señales
Publicado por: Kid_Bengala en 07 de Abril de 2008, 13:04:17
Hola

jejeje, no se, la verdad que no tengo mucha idea si valdria, lo unico que de momento no me hace tanta falta entonces lo dejo para intentar otros proyectos algo mas simples, que esto creo que tendria que medir el tiempo del pulso en vez de solo los pulsos yahora mismo me encuentro aprendiendo C (me quede en ASM y casi no me acuerdo de nada porque deje bastante de lado la programacion). muchas gracias

saludos de antonio
Título: Re: Retrasar dos señales
Publicado por: manex_1987 en 07 de Abril de 2008, 14:59:49
Okidoki. A darle duro al C! Pero no dejes a un lado ASM, pues para ciertas cosas es el arma perfecta. Yo estoy por darle un bocado.

salu2!
Título: Re: Retrasar dos señales
Publicado por: Kid_Bengala en 08 de Abril de 2008, 13:25:30
El problema es que casi no me acuerdo de nada de ASM, tendre que ponerme de nuevo a refrescar conocimientos jejeje.

saludos de antonio