Autor Tema: Ayuda con iterupciones rb4-rb7  (Leído 2199 veces)

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

Desconectado eduardoy2kk

  • PIC10
  • *
  • Mensajes: 9
Ayuda con iterupciones rb4-rb7
« en: 09 de Febrero de 2005, 19:52:00 »
Hola a todos soy bastante nuevo en el tema de kos pic y el C , uso el CCS pero me esta dando algunos problemas para manejar las interupciones por RB, pude realizar que me las detecte pero no puedo independisar la deteccion de los pines , por ejemplo si quiero que RB4 me prenda un led en A2 por 1 seg y si detecta una RB6 me prenda el mismo led por 3 seg.
Me gustaria que me den programita para usarlo como ejemplo sencillo asi lo puedo entender como trabaja la deteccion de la interupcin en os diferentes pines.
Agradesco cualquier data ya qu en el esplicativo del CCS no esta muy claro

Gracias  
            EduardoGiño

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Ayuda con iterupciones rb4-rb7
« Respuesta #1 en: 09 de Febrero de 2005, 20:04:00 »
Algo que puedes hacer es,en la rutina de interrupción,capturar el valor de todo el puerto en una variable,y una vez hayas salido de la rutina,comprobar a partir del valor de esa variable cual es el pin que provocó la interrupción

Desconectado eduardoy2kk

  • PIC10
  • *
  • Mensajes: 9
RE: Ayuda con iterupciones rb4-rb7
« Respuesta #2 en: 09 de Febrero de 2005, 20:13:00 »
Hola gracias por responder rapidamente.
Bueno hasta pasar el valor en una variable vamos bien pero ahora como veo o detecto cual cambio disculpame que sea incistente con los ejemplo peo para mi es la forma mas facil de verlo .

Gracias
            Eduardo

Desconectado Lager.

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 477
RE: Ayuda con iterupciones rb4-rb7
« Respuesta #3 en: 09 de Febrero de 2005, 23:02:00 »
Aqui hay un ejemplo muy basico y sin optimizar, que aprovecha la perdida de tiempo sufrida por los rebotes de los pushbutton, es basicamente un chekeo de que boton fue oprimido, y bajo esta condicion, es determinado el numero de parpadeo del led conectado en porta.1(si se oprime el boton conectado en el pin B5, parpadea 5 veces, si se oprime el boton en el pin B6, parpadea 6 veces... etc)
 
#include <16F84A.h>
#fuses XT,NOWDT
#use delay( clock = 4000000 ) /* reloj de 4 MHz */
#byte puerto_b = 6 /* dirección del puerto B */
#byte puerto_a = 5 /* dirección del puerto A */
#use fast_io(A)
#use fast_io(B)

PARPADEO(UNSIGNED INT C){
FOR(;C!=0;C--){delay_ms(200);
bit_set(puerto_a,1);   /*a0=1*/
delay_ms(200);
bit_clear(puerto_a,1);  /*a0=0*!*/
}}

 main()
{puerto_b = 0;set_tris_b( 0b11111111 ); /*Todas entradas!!*/
puerto_a = 0;set_tris_a( 0b11111000 );  /*a0-a2 salidas*/
enable_interrupts(int_RB);
enable_interrupts(GLOBAL);
while (1){delay_ms(1000);
bit_set(puerto_a,0);   /*a0=1*/
delay_ms(1000);
bit_clear(puerto_a,0);  /*a0=0*!*/
}}

#int_RB
RB4_RB7_ISR(){
PUERTO_B=PUERTO_B;
 IF(PUERTO_B==16)PARPADEO(4);
  IF(PUERTO_B==32)PARPADEO(5);
   IF(PUERTO_B==64)PARPADEO(6);
    IF(PUERTO_B==128)PARPADEO(7);}


S2lu2 pana

Desconectado eduardoy2kk

  • PIC10
  • *
  • Mensajes: 9
RE: Ayuda con iterupciones rb4-rb7
« Respuesta #4 en: 13 de Febrero de 2005, 12:04:00 »
Ok gracias mi amigo, muy ejemplar tu informacion ya lo depure y le agrge las cositas que le faltaba y logre entenderlo como funcionaba , gracias a eso empese a trabajar para que me lea que bit cambio en las entradas del puerto , asi puedo tomar funciones enpecificas de las entradas sin importar que se activen otros bit del puerto que realizan funciones secundarias, no se si se entendio pero me es un tanto dificil esplicar lo que estoy tratando de probar aunque para ustedes parescan pruebas tontas es la manera mas facil para comprender el funcionamiento.
Gracias nuevamente por la ayuda
                                                       Eduardo