Autor Tema: Interrupcion en puetoB B4-B7. teclado matricial  (Leído 3310 veces)

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

Desconectado pantera

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Interrupcion en puetoB B4-B7. teclado matricial
« en: 08 de Octubre de 2006, 21:07:02 »
Hola tengo un pequeño problema con la interrupcion externa,  me detecta los dos bordes  o nose bien cual podria ser mi problema.

el codigo de  la interrupcion es:

Código: Matlab M
  1. #int_RB
  2. RB_isr(){
  3.         lcd_gotoxy(1,1);
  4.         printf(lcd_putc,"Contador %LU    ",ContB++);
  5.        
  6.         tecla=PUERTOB;
  7.      set_tris_b(0b00000000);                    // Inicializacion del Teclado
  8.         switch (tecla) {
  9.           case 0xEE : tecla=15;         break;
  10.           case 0xED : tecla=9;               break;
  11.           case 0xEB : tecla=8;          break;
  12.           case 0xE7 : tecla=7;          break;
  13.  
  14.           case 0xDE : tecla=14;         break;
  15.           case 0xDD : tecla=6;          break;
  16.           case 0xDB : tecla=5;          break;
  17.           case 0xD7 : tecla=4;          break;
  18.  
  19.           case 0xBE : tecla=13;         break;
  20.           case 0xBD : tecla=3;          break;
  21.           case 0xBB : tecla=2;          break;
  22.           case 0xB7 : tecla=1;          break;
  23.  
  24.  
  25.           case 0x7E : tecla=12;         break;
  26.           case 0x7D : tecla=11;         break;
  27.           case 0x7B : tecla=10;         break;
  28.           case 0x77 : tecla=0;             break;
  29.           default: tecla=16 ;      break; }
  30.  
  31.         if (tecla!=16){
  32.         lcd_gotoxy(1,2);
  33.         printf(lcd_putc,"Tecla: %u B: %u     ",TECLA,PUERTOB);
  34.      BEEP=0;
  35.         }
  36.     set_tris_b(0b11110000);                     // Inicializacion del Teclado
  37. }

El problema es que cada vez que presiono un boton se surge dos veces la interrpcion.  Pero creo que eso no deberia de ser.


y la creacion de la interrpcion es:
Código: Matlab M
  1. void inicializar(){
  2.    lcd_init();
  3.  
  4.    set_tris_b(0b11110000);                      // Inicializacion del Teclado
  5.    port_b_pullups(TRUE);
  6.    LSB=0b11111110;
  7.    PUERTOB=LSB;
  8.  
  9.    setup_adc_ports(AN0|VSS_VDD);                // Inicializacion del ADC
  10.    setup_adc(ADC_CLOCK_DIV_8);
  11.    set_adc_channel( 0 );
  12.    
  13.    setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
  14.    setup_timer_3(T3_INTERNAL|T3_DIV_BY_8);
  15.  
  16.    enable_interrupts(INT_TIMER1);
  17.    enable_interrupts(INT_TIMER3);
  18.  
  19.    enable_interrupts(INT_RB);
  20.    EXT_INT_EDGE(1,H_TO_L);
  21.    port_b_pullups(TRUE);
  22.    
  23.    enable_interrupts(GLOBAL);
  24.  
  25. }
« Última modificación: 08 de Octubre de 2006, 21:09:44 por pantera »
La música es sinónimo de libertad, de tocar lo que quieras y como quieras, siempre que sea bueno y tenga pasión, que la música sea el alimento del amor y del alma.

        :-)El Rock es Cultura :-)

Desconectado pantera

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Re: Interrupcion en puetoB B4-B7. teclado matricial
« Respuesta #1 en: 09 de Octubre de 2006, 00:24:46 »
Hola ya resolvi mi problema era cosa de nada pero esta bien.

Tenia que salvar de nuevo la variable, para preguntar mas adelante si continua presionada.

Código: Matlab M
  1. #int_RB
  2. RB_isr(){
  3.  
  4.         tecla=PUERTOB;
  5.         tecla1=PUERTOB;
  6.         switch (tecla) {
  7.           case 0xEE : tecla=15;         break;
  8.           case 0xED : tecla=9;               break;
  9.           case 0xEB : tecla=8;          break;
  10.           case 0xE7 : tecla=7;          break;
  11.           case 0xDE : tecla=14;         break;
  12.           case 0xDD : tecla=6;          break;
  13.           case 0xDB : tecla=5;          break;
  14.           case 0xD7 : tecla=4;          break;
  15.           case 0xBE : tecla=13;         break;
  16.           case 0xBD : tecla=3;          break;
  17.           case 0xBB : tecla=2;          break;
  18.           case 0xB7 : tecla=1;          break;
  19.           case 0x7E : tecla=12;         break;
  20.           case 0x7D : tecla=11;         break;
  21.           case 0x7B : tecla=10;         break;
  22.           case 0x77 : tecla=0;          break;
  23.           default       : tecla=16 ;            break; }
  24.  
  25.         if (tecla!=16){
  26.         lcd_gotoxy(1,2);
  27.         printf(lcd_putc,"Tecla: %u          ",TECLA);
  28.         while(tecla1==PUERTOB)
  29.      BEEP=1;
  30.         BEEP=0;
  31.         }
La música es sinónimo de libertad, de tocar lo que quieras y como quieras, siempre que sea bueno y tenga pasión, que la música sea el alimento del amor y del alma.

        :-)El Rock es Cultura :-)

Desconectado pantera

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Re: Interrupcion en puetoB B4-B7. teclado matricial
« Respuesta #2 en: 09 de Octubre de 2006, 03:08:59 »
Hola como ya estuvo bien todo doy por cerrado el tema.
La música es sinónimo de libertad, de tocar lo que quieras y como quieras, siempre que sea bueno y tenga pasión, que la música sea el alimento del amor y del alma.

        :-)El Rock es Cultura :-)

Desconectado pantera

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Re: Interrupcion en puetoB B4-B7. teclado matricial
« Respuesta #3 en: 09 de Octubre de 2006, 03:25:54 »
jeee creo que ya dedo de dormir un rato

bye
La música es sinónimo de libertad, de tocar lo que quieras y como quieras, siempre que sea bueno y tenga pasión, que la música sea el alimento del amor y del alma.

        :-)El Rock es Cultura :-)

Desconectado santipic_9

  • Colaborador
  • PIC10
  • *****
  • Mensajes: 36
Re: Interrupcion en puetoB B4-B7. teclado matricial
« Respuesta #4 en: 09 de Octubre de 2006, 19:15:32 »
Hola  a todos.
Hola Pantera podrías poner, por favor, el esquema de conexión del teclado con el pic.
Muchas gracias.
Saludos

Desconectado pantera

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Re: Interrupcion en puetoB B4-B7. teclado matricial
« Respuesta #5 en: 15 de Octubre de 2006, 01:43:03 »
Disculpa la tardanza.
A qui dejo anexado el teclado matricial.

Es para protel DXP

La música es sinónimo de libertad, de tocar lo que quieras y como quieras, siempre que sea bueno y tenga pasión, que la música sea el alimento del amor y del alma.

        :-)El Rock es Cultura :-)

Desconectado pantera

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Re: Interrupcion en puetoB B4-B7. teclado matricial
« Respuesta #6 en: 15 de Octubre de 2006, 01:44:33 »

Espero les ayude ahorrar algo de tiempo

DXP

Saludos
La música es sinónimo de libertad, de tocar lo que quieras y como quieras, siempre que sea bueno y tenga pasión, que la música sea el alimento del amor y del alma.

        :-)El Rock es Cultura :-)

Desconectado santipic_9

  • Colaborador
  • PIC10
  • *****
  • Mensajes: 36
Re: Interrupcion en puetoB B4-B7. teclado matricial
« Respuesta #7 en: 15 de Octubre de 2006, 16:26:32 »
Hola a todos.
Muchas gracias Pantera voy a hacer unas prácticas con tu ejemplo.

Saludos desde A Coruña, España

Desconectado pantera

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Re: Interrupcion en puetoB B4-B7. teclado matricial
« Respuesta #8 en: 15 de Octubre de 2006, 17:00:27 »
Gracias
saludos y suerte en tu proyecto
La música es sinónimo de libertad, de tocar lo que quieras y como quieras, siempre que sea bueno y tenga pasión, que la música sea el alimento del amor y del alma.

        :-)El Rock es Cultura :-)


 

anything