Autor Tema: Programacion Pic18F2550 + Simulacion en Proteus 8.9  (Leído 2744 veces)

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

Desconectado JMKaltenmeier

  • PIC10
  • *
  • Mensajes: 31
Programacion Pic18F2550 + Simulacion en Proteus 8.9
« en: 16 de Abril de 2020, 11:44:42 »
Tengo el siguiente problema. Estoy realizando un código en XC8 para comparar corrientes por los bobinados de una Flyback.
Para realizar las comparaciones estoy utilizando los Comparadores Analogicos del PIC junto con su Modulo voltaje de referencia.
El codigo, esta siendo simulado en Proteus 8.9

Al modificar la referencia puedo manejar los niveles de corriente.
Ahora, para yo poder modificar la referencia quiero utilizar un pulsador conectado al puerto RB4 onfigurado como entrada, por lo que habilito las interrupciones del puerto. Los pines RB3,RB5,RB6,RB7 los necesito si o si como salidas ya que manejan las llaves de un inversor

Lo que hago es lo siguente:

Código: [Seleccionar]

    INTCONbits.GIE = 1;   
    INTCONbits.PEIE = 0; 
   
    PIE1bits.TMR1IE= 1;     
   
    INTCONbits.RBIE = 0; 
    INTCONbits.RBIF = 0; 

la rutina de interrupcion la escribo como lo indica la guía de XC8.

Código: [Seleccionar]
void __interrupt() ISR(void)
{
   
  //aun no le pongo ningún código en el cuerpo
   
    return;
}

El problema es el siguiente. Al simular tengo problemas cuando seteo los bits PEIE y RBIE.
El bit PEIE me jode al Timer ya que, este modulo lo estoy utilizando para otra cosa, si bien la interrupción del timer esta habilitada, no quiero que llame a la rutina de interrupción. Por lo cual cuando PEIE=1 no ejecuta el programa adecuadamente, por eso que lo dejo en 0, y todo anda bien.

Ahora el GIE=1, para habilitar las interrupciones Globales, lo necesito para el puerto B. Luego cuando pongo  el bit RBIE en uno. YA me deja de andar el programa en Proteus, y eso que ni siquiera estoy usando la interrupción, solo pongo en alto el bit para habilitarla, no debería tener efecto en el programa, si yo no modifico el estado de RB4.


dejo adjunto imágenes de lo que sucede:

Imagen 1: las formas de onda de corriente en la Flyback, que son comparadas con una referencia de 3.6V (CVREF), se forman triángulos debido al control de corriente que se hace con los comparadores analógicos. la base de la secuencia de triángulos junto con el tiempo muerto la determina la temporizacion del Timer1. En esta imagen RBIE=0, y PEIE=0, interrupcion del puerto B deshabilitada y la de los perifericos, el codigo anda fenómeno.

Imagen 2: Aqui tenemos RBIE=0, y PEIE=1, Vemos que el timer hace una primera temporizacion, cuando desborda se activa el flag y al parecer va a la rutina ISR(cosa que no quiero) que no tiene nada dentro del cuerpo. Al salir de la rutina ya el programa no funciona, debido a que se dejo una "llave" cerrada y la corriente crece..... De igual manera esto no importa ya que dejo PEIE=0 y todo anda bien. Solo quiero saber como hacer para que PEIE=1, habilitar la interrupcion del timer y que no vaya a esa rutina cuando desborde.

Imagen 3: Aqui RBIE=1, y PEIE=0, Directamente el código ya no funciona. Solo habilito la interrupción del puerto B, o hago nada con el puerto RB4 y no funciona, no se que problema puede ser.


Voy a dejar un Rar adjunto, con los códigos por si alguien lo quiere ver.
Notar que Pulso() es una rutina en "ASM" que la llamo desde el codigo en C. esto es para tener un mayor control en el tiempo de las comparaciones con la referencia.
« Última modificación: 16 de Abril de 2020, 11:51:46 por JMKaltenmeier »

Desconectado JMKaltenmeier

  • PIC10
  • *
  • Mensajes: 31
Re:Programacion Pic18F2550 + Simulacion en Proteus 8.9
« Respuesta #1 en: 16 de Abril de 2020, 11:53:35 »
imagen2

Desconectado JMKaltenmeier

  • PIC10
  • *
  • Mensajes: 31
Re:Programacion Pic18F2550 + Simulacion en Proteus 8.9
« Respuesta #2 en: 16 de Abril de 2020, 11:54:34 »
imagen3

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re:Programacion Pic18F2550 + Simulacion en Proteus 8.9
« Respuesta #3 en: 16 de Abril de 2020, 12:51:26 »
Amigo,
No deberías de poner el mismo tema en varios lugares a la vez.
No por ello se te va a contestar antes y ademas de ir contra las normas del foro, origina perdida de tiempo a las personas que puedan responderte.
Mi consejo es que elimines un hilo en uno de los lugares.
Todos los días se aprende algo nuevo.

Desconectado JMKaltenmeier

  • PIC10
  • *
  • Mensajes: 31
Re:Programacion Pic18F2550 + Simulacion en Proteus 8.9
« Respuesta #4 en: 16 de Abril de 2020, 13:11:01 »
Amigo,
No deberías de poner el mismo tema en varios lugares a la vez.
No por ello se te va a contestar antes y ademas de ir contra las normas del foro, origina perdida de tiempo a las personas que puedan responderte.
Mi consejo es que elimines un hilo en uno de los lugares.

Como elimino uno?


 

anything