TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: kidpic en 27 de Noviembre de 2014, 16:13:38

Título: consulta
Publicado por: kidpic en 27 de Noviembre de 2014, 16:13:38
estoy analizando un programa que mide distancia mediante ultrasonido y no le puedo encontrar una lógica a las siguientes líneas

while ( !input (echo))
{}
set_timer1(36535)
while ( input (echo))
{}
 
la linea del timer corresponde a la carga del timer 1 con ese valor.  ¿ Se puede hacer directmente ? lo que no me cierra es !INPUT  y el INPUT

gracias
Título: Re: consulta
Publicado por: MGLSOFT en 27 de Noviembre de 2014, 17:11:13
Lo que hace es comprobar que no hay señal en input, luego precarga el timer, y finalmente espera a que haya señal en input, el valor acumulado en el timer es el tiempo transcurrido.

Eso esta bien si tu micro no va a hacer nada mientras espera la señal, que si son varios milisegundos, puedes perderte otras cosas que pasen en tu sistema.
Título: Re: consulta
Publicado por: kidpic en 28 de Noviembre de 2014, 09:36:37
Gracias por la respuesta, ya entendí la lógica.
Una consulta referente al timer1 ( de 16 bit ) y los prescaler. De acuerdo a lo leído estos me permiten retardar el tiempo de desborde del timer1. Como este es uno de 16 bits puedo contar hasta 65536. Si elijo 1:1 y un oscilador externo de 4Mhz cada cuenta lo hace en 1microsegundo. si elijo un prescaler de 1:2 cada cuenta lo hace en 2 microsegundos, para prescaler de 4 serán 4 microsegundos. Es correcto este razonamiento?