Autor Tema: consulta  (Leído 1725 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
consulta
« 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
Si quieres trascender..., enseña humildemente  lo que sabes.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: consulta
« Respuesta #1 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.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
Re: consulta
« Respuesta #2 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? 
Si quieres trascender..., enseña humildemente  lo que sabes.