Autor Tema: Problema al leer pulsos con PIC  (Leído 2772 veces)

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

Desconectado jask2007

  • PIC10
  • *
  • Mensajes: 7
Problema al leer pulsos con PIC
« en: 02 de Abril de 2010, 14:10:11 »
Que tal, estoy iniciando en el mundo de la programacion de micros (18F452 de microchip), programo en C. Pero he tenido problemas al hacer un programa que lea un "pulso" y aumente un contador. El pblema está en que si esta el uno sigue contando y solo deberia incrementar una sola ves hasta que vuelva a cambiar de estado. Espero que alguien me pueda ayudar.

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Problema al leer pulsos con PIC
« Respuesta #1 en: 02 de Abril de 2010, 14:11:09 »
q compilador? postea el programa, asi es mas facil ver el fallo
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado jask2007

  • PIC10
  • *
  • Mensajes: 7
Re: Problema al leer pulsos con PIC
« Respuesta #2 en: 02 de Abril de 2010, 14:21:20 »
El compilador es el CCS. Otra cosa los pulsos lo leo por un pin del micro (ejemplo A4 o B3), esto es que no sea por las interrupciones. Aqui el codigo:

while(true) {
            if(input(PIN_B4)) {// PIN_B4
               delay_us(1000);
               if(input(PIN_B4)) {// PIN_B4
                  output_C(k);;
                  while(input(PIN_B4));//PIN_B4
               }else{
                  output_C(k);;
               }
               cont++;

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Problema al leer pulsos con PIC
« Respuesta #3 en: 02 de Abril de 2010, 17:30:42 »
Tal vez hacer algo así.... no lo probé y hace rato que no uso CCS, pero la idea creo que se entiende

Código: C
  1. while (1)
  2. {
  3.     if (input(PIN_XX)) // el pin que quieras usar
  4.     {
  5.          delay_ms(10); // delay antirebote
  6.          if (input(PIN_XX)) // si aún sigue en 1, no fue un rebote.
  7.         {
  8.            cont++;
  9.            while (input(PIN_XX)); // ciclo cerrado hasta que se suelte el pulsador
  10.          }
  11.     }
  12. }
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado jask2007

  • PIC10
  • *
  • Mensajes: 7
Re: Problema al leer pulsos con PIC
« Respuesta #4 en: 06 de Abril de 2010, 19:56:24 »
Gracias a los que se tomaron la molestia de leer y responder. Ya logré el objetivo.

Desconectado jask2007

  • PIC10
  • *
  • Mensajes: 7
Re: Problema al leer pulsos con PIC
« Respuesta #5 en: 19 de Abril de 2010, 01:45:29 »
Aqui otra ves molestando a los usuarios. HAber quien me puede ayudar a pasar este programa a mikro C, ya lo intenté y no salió. Esto es solo para aprender mikro C ya que habia utilizado solamente el pic c. Pero ahora tambien kisiera aprender en mikro C. Espero nuevamente sus respuestas

Desconectado celades

  • PIC10
  • *
  • Mensajes: 6
Re: Problema al leer pulsos con PIC
« Respuesta #6 en: 14 de Septiembre de 2010, 12:50:38 »
HOLA.
acabo de inscribirme en los foros y ps si no es demasiado tarde kisiera darte una manito con tu migracion de codigo, la verdad es casi igual, varia muy poco el set de instrucciones. este es el programa:

unsigned k=0; //declaracion de k
trisb=0x10; //pin4 de portb como entrada
trisc=0x00; //todo el portc como salida
void main() {
while (1){
 if (portb.F4==1) // ejemplo: if (portb.F4==1) si pin 4 de portb es igual a 1...
                         // la letra F siempre va en mayusculas
  {
   delay_ms(10);     //esto es
   if (portx.Fx==1)  //antirrebote
   {
    portc=k;         //k es enviado por el puerto c
    k++;             //y aumenta para un proximo pulso
    delay_ms(200);   // delay opcional por si dejas presionado el pulsador, que se pueda ver el valor
   }
  }
 }
}
espero te haya sido claro, de ayuda y que no haya sido demasiado tarde jeje.
saludos

Desconectado korpaztk

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 202
Re: Problema al leer pulsos con PIC
« Respuesta #7 en: 16 de Septiembre de 2010, 00:37:12 »
miraa yo hice un contador nose si es como vos lo estas haciendo pero adjunto uno.
yo en vez del if utilizaria el while con una bandera (flag), mira el ejemplo q hice yo en proteus y mplab,
espero poderte ayudar con mi idea

Korpaz.
Técnico Electronico.

El Papel Es Mi Mejor Psicologo

Desconectado flyingjoint

  • PIC10
  • *
  • Mensajes: 2
Re: Problema al leer pulsos con PIC
« Respuesta #8 en: 20 de Septiembre de 2010, 16:34:00 »
Buen dia, soy bastante nuevo en la programacion de los pic's en C. Solo tengo una pregunta bastante básica pero me causa conflicto... A que se refiere cuando pones el while (1)?? es decir, es una expreción lógica pero que entrada me da este 1 o 0, de donde proviene que me dice si entra o no al while? Gracias.

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: Problema al leer pulsos con PIC
« Respuesta #9 en: 20 de Septiembre de 2010, 17:29:51 »
Hola flyingjoint bienvenido al foro.  En el bucle: while(expresion) mientras que expresion sea verdadero, se repetirá la instrucción o bloque de código correspondiente.  Como ya sabes, una expresión verdadera se expresa como: TRUE ó 1 y una falsa como: FALSE ó 0.  Visto de esta manera, el bucle: while(1) se repetirá siempre ya que el 1 representa verdadero.

Saludos!
« Última modificación: 20 de Septiembre de 2010, 20:42:06 por bmb »