PIC 24FJ64GA008 contador y trabajar con variables

Hola a todos, Estoy haciendo un proyecto con un PIC24FJ64GA008, y lo que quiero hacer es que mediante dos sensores infrarrojos, al pasar un objeto por el primer sensor, el pic empiece a contar y al pasar por el segundo sensor deje de contar. El tiempo quiero almacenarlo en una varaible porque necesito multiplicarlo por 2 y mostarlo por un display o lcd, eso me da igual.

Les muestro lo que llevo hecho, el contador empieza a contar , pero luego no soy capaz de que pare, ademas me gustaria saber como hacer que el contador vaya mas rapido,(para tener mas precision) porque el Pic tiene un reloj de 40Mhz.

Espero que me puedan ayudar lo antes posible.
Gracias:)
 

Adjuntos

  • Prueba1.rar
    19.4 KB · Visitas: 12
Hola zerek, el contador no para, porque no hay ninguna condición que le saque del bucle For.
Para simularlo, deberías colocar dos interruptores en algún puerto libre, éstos emularán los sensores infrarrojos.
Debes programarlo de tal manera que al activarse el primer sensor, entre al bucle For, y dentro del bucle, leer continuamente el segundo sensor, y en caso de activarse, puedes usar la instrucción break; para salir del For, y parar de contar.

Un saludo
 
jajaj ok, intentaré hacerlo yo antes......

Otra pregunta, como hago para que el contador vaya mas deprisa??? Es decir para que sea mas preciso, que tenga mas decimales. Porque yo lo que quiero es que me cuente desde que se activa el primer sensor hasta que se activa el segundo, y ese tiempo guardarlo en una variable para poder trabajar con ella.... Es decir multiplicarla, dividirla......con enteros, y el resultado después de operar, mostarlo por LCD.
Espero que me haya explicado bien, es que tengo un poco de jaleo en la cebeza, jeje
 
Última edición:
Hola arrivaellobo, lo has conseguido hacer??, yo es que lo de la interrupcion aun no me sale.
A ver si me puedes enseñar como lo harias tu, mas que nada para tener algun proyecto como base y poder desarrollar el mio.
Espero tus noticias
Un saludo
 
Hoy estoy generoso, y he montado el circuito en Proteus, y he hecho el código, todo nuevo. Sólo que he usado el 16F877, ya que el 24 "no se qué" que tenías se me quedaba demasiado grande... jajaja
Tiene los dos sensores que necesitas, inicio y de final. Muestra el tiempo en milisegundos en una LCD, pero no es totalmente exacto el contador, ya que para eso, me imagino que habría que usar los Timer, cosa que todavía desconozco.
Seguramente mi código y diseño se pueden mejorar de mil maneras y hacerlos más eficientes, pero con mis conocimientos es lo que he podido hacer.
 

Adjuntos

  • Contador sensores.rar
    44.8 KB · Visitas: 12
Puf!!!! es INCREIBLE!!!! y que poquito codigo has necesitado, muchisimas gracias por tu aportacion, me viene genial, tendré que cambiar cosas pero como base me viene perfecto........
Cuando lo modifique, lo subiré aqui para que me digas que te parece y en lo que puedo mejor y eso...
Gracias y un saludo.
 
una pregunta mas que he visto al ejecutar paso a paso tu codigo, el contador no va incrementado una unidad, como puedo hacer para que vaya sumando 1 en cada ciclo???
 
pues que yo al ejecutar paso a paso el programa, el LCD no me muestra 1,2,3,4,5,6........sino que me muestra 1,15,30,45,..........no se si me explico......., (los numeros me los he iventado yo)
y otra cosa, lo que muestra el LCD son milisegundos "reales", los puedo usar como cronometro??
gracias.
 
El problema es probable a que se deba porque los LCD tardan un tiempo en escribir, y volver a estar operativos, por lo que aunque el microcontrolador le envíe más datos, el display no puede con todos, y se salta algunos.
Ya dije más arriba que no es un contador exacto, ya que para ello habrá que usar los Timer. Esto sirve como referencia nada más, ya que si lo usas como cronómetro, no te dará medidas exactas.

Un saludo
 
ah vale, aclarado entonces, de todas formas me viene fenomenal como base sobre la que trabajar.
Por ahora es todo, si tengo alguna duda mas, la ire poniendo aqui.
Gracias por tu ayuda.
Un saludo.

Una pregunta mas, ese tiempo que muestro por LCD, lo puedo guardar en una variable, para trabajar con ella???
 
Última edición:
Ese tiempo, esta ya guardado en la variable "tiempo" jajaja
Te recomiendo leer algún tutorial de programación de aquí del foro, hay alguno muy bueno que a mi me está ayudando bastante.

Un saludo
 
Pues mira, usando lo mínimo el buscador he encontrado ésto, pero seguro que hay muchas mas cosas, y casi todas las dudas que te surjan estarán ya solucionadas en algún rincón del foro.

Un saludo
 
Hola otra vez, tengo una duda nueva:
Me gustaria hacer dos contadores independientes, habia pensado en dos bucles for, y cada uno dentro lo unico que hace es incrementar las variables tiempo1 y tiempo2, para contar el tiempo.
El proble es que,me gustaria que esos bucles se ejecutara a la vez, ¿hay alguna forma de hacerlo?, no primero un bucle y luego el otro, sino los dos a la vez.
Gracias.
 
Atrás
Arriba