TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: nicopassaglia en 02 de Junio de 2016, 11:04:11

Título: NO ME ANDA RB4 A RB7
Publicado por: nicopassaglia en 02 de Junio de 2016, 11:04:11
HOLA, ESTOY PROGRAMANDO EL PIC16F887 EN LA VERSION DE MPLAB 8.56 EN LENGUAJE ENSAMBLADOR. NECESITO USAR LAS INTERRUPCIONES POR LOS PINES RB4 A RB7 Y EL DE RB0. TENGO TODO CONFIGURADO PERFECTO (HABILITE GIE, RBIE Y INTE) EL PULLUP BIEN PUESTO Y TODO LO DEMAS. EL PROBLEMA ES CUANDO SIMULO Y MANDO UN ESTIMULO POR RB0 FUNCIONA A LA PERFECCION PERO CUANDO ESTIMULO DE RB4 A RB7 NO PASA NADA!! LA BANDERA NUNCA SE LEVANTE, ES COMO QUE EL PROGRAMA LO INGNORA COMPLETAMENTE

AYUDA POR FAVOR

SALUDOS
Título: Re:NO ME ANDA RB4 A RB7
Publicado por: luismh en 02 de Junio de 2016, 11:18:07
Deberías subir tu código para analizarlo
Configuraste esos pines como entrada? Desactivaste las entradas analógicas?
Título: Re:NO ME ANDA RB4 A RB7
Publicado por: nicopassaglia en 02 de Junio de 2016, 11:20:09
Si, le hice un clrf al ANSELH y le mande '11111111' al puertoB para que sea todo entrada. Es muy largo el codigo y no tiene sentido pq nunca los pude hace andar, no se si habra que configurar desde otro lado o que.

Título: Re:NO ME ANDA RB4 A RB7
Publicado por: luismh en 02 de Junio de 2016, 11:28:39
Configuraste el registro IOCB?
Título: Re:NO ME ANDA RB4 A RB7
Publicado por: nicopassaglia en 02 de Junio de 2016, 11:44:05
Justo te estaba por decir eso, busque un poco mas en el datasheet y encontre ese registro, por lo tanto setie en un 1 los bits para que de 4 a 7 se interrumpa por cambio, ahora anda el problema es que nunca sale de la rutina de interrupcion, me aseguro de bajar todas las banderas de hacer el retfie y no hay caso se queda atascado ahi.
muchisimas graccias por tu tiempo!!!
Título: Re:NO ME ANDA RB4 A RB7
Publicado por: luismh en 02 de Junio de 2016, 11:55:55
Estas interrupciones son algo particulares.. No basta con bajar la bandera, también hay que hacer una lectura del puerto. A mi me funciona así:

RutinaInterrupcion
código...
código...
código...
...
FinRutinaInterrupcion
movf PORTB,1;Aquí estás haciendo una lectura del puerto y guardándola de nuevo en el mismo lugar(no cambia nada)
bcf INTCON,RBIF;Bajo bandera
retfie;Retorno

Lee el datasheet, seguramente está mejor explicado y puede haber algún ejemplo.
Saludos!