Autor Tema: Interrupciones B0; B1; B2 (18F4550)  (Leído 3117 veces)

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

Desconectado djim

  • PIC12
  • **
  • Mensajes: 75
Interrupciones B0; B1; B2 (18F4550)
« 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
« Última modificación: 07 de Enero de 2012, 10:50:12 por djim »

Desconectado juanfra

  • PIC12
  • **
  • Mensajes: 74
Re: Interrupciones B0; B1; B2 (18F4550)
« Respuesta #1 en: 07 de Enero de 2012, 09:28:12 »
adjunta tu proyecto y le meteré un vistazo.

au cacau

Desconectado djim

  • PIC12
  • **
  • Mensajes: 75
Re: Interrupciones B0; B1; B2 (18F4550)
« Respuesta #2 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

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: Interrupciones B0; B1; B2 (18F4550)
« Respuesta #3 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.
« Última modificación: 08 de Enero de 2012, 16:26:22 por Fer_TACA, Razón: añadir ASM »
Todos los días se aprende algo nuevo.

Desconectado juanfra

  • PIC12
  • **
  • Mensajes: 74
Re: Interrupciones B0; B1; B2 (18F4550)
« Respuesta #4 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

Desconectado juanfra

  • PIC12
  • **
  • Mensajes: 74
Re: Interrupciones B0; B1; B2 (18F4550)
« Respuesta #5 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

Desconectado djim

  • PIC12
  • **
  • Mensajes: 75
Re: Interrupciones B0; B1; B2 (18F4550)
« Respuesta #6 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