TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: MSANTHIAGO en 25 de Mayo de 2017, 15:41:32

Título: Intcon causa problemas a lcd
Publicado por: MSANTHIAGO en 25 de Mayo de 2017, 15:41:32
Hola a todos. Espero que me puedan ayudar con este problema.
Quiero implementar el uso de interrupciones RBIE, pero sucede que cuando activo el bit GIE del registro INTCON, la lcd no muestra el mensaje.

Estoy usando un PIC18F458 y el compilador de mikroC.
Lo he probado en proteus y funciona pero en la práctica sólo muestra el mensaje si GIE = 0.

Este es el código que estoy usando:

sbit LCD_RS at RD2_bit;
sbit LCD_EN at RD3_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;
sbit LCD_RS_Direction at TRISD2_bit;
sbit LCD_EN_Direction at TRISD3_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;

void main( void ){

// Declaradion de E/S puertos
   TRISB=0xFF;


// Configuracion de interrupciones ***************

   GIE_bit=1;
   RBPU_bit=1;         
   RBIE_bit=1;

// Deshabilitar comparadores para utilizar puerto D en LCD
   CMCON=0b111;


// Inicializar funciones
   Lcd_Init();
   lcd_out(1,1, "hola");

     while(1);
     

Título: Re:Intcon causa problemas a lcd
Publicado por: manwenwe en 25 de Mayo de 2017, 16:22:05
Te falta código. ¿dónde está el código de la interrupción? ¿no será que salta la interrupción y no "la manejas" o no borras el flag y no para de saltar?

Saludos.
Título: Re:Intcon causa problemas a lcd
Publicado por: MSANTHIAGO en 25 de Mayo de 2017, 16:44:33
void interrupt(){

// Interrupcion por cambio de estado en RB
     if (INTCON.F0 == 1){
     
// Codigo para RB4
        if (PORTB.F4 == 0){
           while(PORTB.F4==0);
           inter = 1;
           RBIF_bit = 0;
      }
           
// Codigo para RB5
        if (PORTB.F5 == 0){
           while(PORTB.F5==0);
           inter = 0;
           RBIF_bit = 0;
         
        }
     }
}

ese es el codigo de interrupcion.

Acabo de conectar todos los pines de RB en alto para que solo me activen rb4 y rb5. pero sigo con el mismo problema
Título: Re:Intcon causa problemas a lcd
Publicado por: manwenwe en 25 de Mayo de 2017, 16:49:57
Tienes un debugger para comprobar si el código pasa de la inicialización del LCD? o puedes poner un led para depurar?
Título: Re:Intcon causa problemas a lcd
Publicado por: MSANTHIAGO en 25 de Mayo de 2017, 17:01:06
Bien he puesto un led en RD0 y no enciende.
este codigo lo puse y no encendio el led, pero si lo hace cuando GIE_bit =0

  GIE_bit=1;
  RBPU_bit=1;             
  RBIE_bit=1;

// Deshabilitar comparadores para utilizar puerto D en LCD
   CMCON=0b111;

   Lcd_Init();
   lcd_out(1,1, "hola");
   PORTD.F0=1;
Título: Re:Intcon causa problemas a lcd
Publicado por: MSANTHIAGO en 25 de Mayo de 2017, 18:41:01
Logre solucionarlo agregando estas lineas. Gracias por la ayuda.

Muchas gracias ya logre solucionarlo. Agregue estas lineas

TRISB=0xF0;
TRISD.F0=0;
TRISD.F1=0;
TRISE=0;
PORTB=0;
Título: Re:Intcon causa problemas a lcd
Publicado por: manwenwe en 26 de Mayo de 2017, 04:06:45
Alegría entonces  :mrgreen: