TODOPIC

Microcontroladores PIC => - Niple - => Mensaje iniciado por: djim en 07 de Enero de 2012, 07:45:02

Título: Interrupciones B0; B1; B2 (18F4550)
Publicado por: djim en 07 de Enero de 2012, 07:45:02
Buenas amigos! Felices fiestas y mis mejores deseos a todos  :)

Les queria consultar lo siguiente: Necesito utilizar 3 interrupciones, por eso pense en el micro 18F4550, al momento de activar B0 funciona perfecto, pero cuando le pongo y configuro las interrupciones por B1 y B2, se clava el micro. Intente varias veces creando un proyecto desde cero, pero ninguna de estas pruebas con exito, sera que mi version tiene este error ( v5.5.8 ) o simplemente soy yo  :D  alguien podria probar en su Niple si logra compilar cualquier cosa con estas interrupciones? Desde ya Muchas gracias.


EDITO: Compila bien el *.HEX pero cuando entra en la interrupcion de RB1 o RB2 deja de funcionar todo.

DJIM
Título: Re: Interrupciones B0; B1; B2 (18F4550)
Publicado por: juanfra en 07 de Enero de 2012, 09:28:12
adjunta tu proyecto y le meteré un vistazo.

au cacau
Título: Re: Interrupciones B0; B1; B2 (18F4550)
Publicado por: djim en 07 de Enero de 2012, 10:48:28
Gracias por responder Juanfra, pero escribi mal arriba, si compila pero cuando entra en la interrupcion se clava el micro, RB0 funciona bien, pero cuando uso la B1 o B2, se queda quieto todo. Algo que me llama la atencion, despues de insertar la interrupcion por RB0, RB1, RB2 le vuelvo a dar doble click para ver las opciones y da un error de registros no encontrados, algo no active o algunos registros no se crearon en el programa, desde ya muchas gracias, adjunto el .NPL y edito el post de arriba.

Es un programita muy basico, para probar todas las interrupciones.

DJIM
Título: Re: Interrupciones B0; B1; B2 (18F4550)
Publicado por: Fer_TACA en 08 de Enero de 2012, 16:22:23
Lo unico que veo es que al revisar el configuracion de interrupciones, siempre sale el mensaje que por B1 y B2 son perifericos y/o la interrupcion son desconocidas y la verdad no se a que se debe.
Quizas se deba a las prioridades de las interrupciones de b1 y b2.
Voy a ver si encuentro el porque.

F.

Puedes compilar el asm adjunto y ver si te funciona.
Título: Re: Interrupciones B0; B1; B2 (18F4550)
Publicado por: juanfra en 08 de Enero de 2012, 16:59:11
He estado repasando tu proyecto, tal vez el único pero que le veo, es que deberías meter un delay una vez provocada la interrupción para no entrar repetidas veces por culpa de los rebotes.
Pero de todas maneras ese no es el problem:::

 los FLAGS

bit 1 INT2IF: INT2 External Interrupt Flag bit
1 = The INT2 external interrupt occurred (must be cleared in software)
0 = The INT2 external interrupt did not occur
bit 0 INT1IF: INT1 External Interrupt Flag bit
1 = The INT1 external interrupt occurred (must be cleared in software)
0 = The INT1 external interrupt did not occur,

una vez provocada la interrupción hay que bajarlos por programa, y no hay forma, lo he intentado de mil maneras pero se queda dentro de la interrupción con las banderas arriba, tampoco he podido configurar en INTCON, no parece existir en el entorno niple.


En mi opinión se trata de un bug bastante importante del NIPLE.
Juanfra
Título: Re: Interrupciones B0; B1; B2 (18F4550)
Publicado por: juanfra en 09 de Enero de 2012, 04:31:38
Bueno al final pude encontrar el error
Niple tiene uneroro de registro, en vez de liumpiar el bit de bamdera de interrupt del registro INTCON3, lo hace en el INTCONT,

SOLUCION ASM:::


 org 0x00
   goto paso2
   org 0x08


   movwf _np_w,1
   swapf _np_w,1,1
   movf status,w,0
   movlb .0                         ;cambiar al banco 0
   movwf _np_status,1
   movlb .0                         ;cambiar al banco 0
   movf _np_tiempo,w,1
   movwf _np_t_bak,1
   movf _np_tiempo1,w,1
   movwf _np_t1_bak,1
   movf _np_tiempo2,w,1
   movwf _np_t2_bak,1
   movf _np_tiempo3,w,1
   movwf _np_t3_bak,1
   btfsc intcon,int0if,0
   goto inte_rb0
   btfsc intcon3,int1if,0  ;;error del niple btfsc intcon,int1if,0, el registro no es el intcon, sino el intcon3
   goto inte_rb1
   btfsc intcon3,int2if,0   ;;error del niple btfsc intcon,int1if,0, el registro no es el intcon, sino el intcon3
   goto inte_rb2


He intentado solucionarlo desde el NIPLE pero nanaii, no me deja, hay que hacerlo  desde el ensamblador , y contactar con JORGE para que le de el toquecillo


aua cacau

te adjunto ASM y HEX


Juanfra
Título: Re: Interrupciones B0; B1; B2 (18F4550)
Publicado por: djim en 09 de Enero de 2012, 06:46:46
Muchisimas gracias por su ayuda, por su tiempo JuanFra y Fer_TACA !!!  :)   voy a mandar un mail al Sr. Jorge para que vea el pequeño error.

DJIM