Autor Tema: Interrupciones en PIC16F15324 (Solucionado)  (Leído 1420 veces)

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

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Interrupciones en PIC16F15324 (Solucionado)
« en: 07 de Marzo de 2020, 06:08:22 »
No consigo que funcionen las interrupciones en el PIC16F15324 porque al llamar a la rutina de interrupción se produce un desbordamiento de pila y el micro se resetea.

El programa que estoy probando es muy sencillo:

Código: C
  1. #include <xc.h>
  2.  
  3.  
  4. // PIC16F15324 Configuration Bit Settings
  5.  
  6. // CONFIG1
  7. #pragma config FEXTOSC = HS     // External Oscillator mode selection bits (Oscillator not enabled)
  8. #pragma config RSTOSC = EXT4X   // Power-up default value for COSC bits (HFINTOSC = 32MHz)
  9. #pragma config CLKOUTEN = OFF   // Clock Out Enable bit (CLKOUT function is disabled; i/o or oscillator function on OSC2)
  10. #pragma config CSWEN = ON       // Clock Switch Enable bit (Writing to NOSC and NDIV is allowed)
  11. #pragma config FCMEN = ON       // Fail-Safe Clock Monitor Enable bit (FSCM timer enabled)
  12.  
  13. // CONFIG2
  14. #pragma config STVREN = ON      // Stack Overflow/Underflow Reset Enable bit (Stack Overflow or Underflow will cause a reset)
  15.  
  16.  
  17.  
  18. /***************************
  19.       INTERRUPT SERVICE ROUTINE
  20.  ***************************/
  21. void interrupt isr(void) {
  22.    PIR4bits.TMR1IF = 0;
  23.    LATCbits.LATC2 = 0;
  24. }  
  25.  
  26.  
  27. /***************************
  28.   Main function
  29.  ***************************/
  30. void main(void) {
  31.    // Init CPU
  32.    INTCONbits.PEIE = 1;
  33.    INTCONbits.GIE = 1;
  34.    PIE4bits.TMR1IE = 1;
  35.    
  36.    // Oscillator in LATA2
  37.    TRISCbits.TRISC2 = 0;
  38.    while(1) {
  39.       LATCbits.LATC2 = 1;
  40.       PIR4bits.TMR1IF = 1;
  41.    }
  42. }

¿Alguna idea de porqué no funciona?

Un saludo.
« Última modificación: 07 de Marzo de 2020, 11:53:53 por Picuino »

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re:Interrupciones en PIC16F15324
« Respuesta #1 en: 07 de Marzo de 2020, 06:15:06 »
Esta es la señal que consigo en C2:

 

* NewFile0.png
(8.88 kB, 640x468 - visto 242 veces)

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re:Interrupciones en PIC16F15324
« Respuesta #2 en: 07 de Marzo de 2020, 11:40:00 »
He reinstalado el compilador XC8 en su última versión.
El problema se mantiene.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re:Interrupciones en PIC16F15324
« Respuesta #3 en: 07 de Marzo de 2020, 11:53:42 »
Ya está resuelto.

He creado un proyecto nuevo en MPLABX y he copiado el código de main.c en el nuevo proyecto.

Por alguna razón ahora funciona sin problemas.

Un saludo.

Desconectado Yoshua

  • PIC16
  • ***
  • Mensajes: 207
Re:Interrupciones en PIC16F15324 (Solucionado)
« Respuesta #4 en: 07 de Marzo de 2020, 15:16:45 »
¿En el proyecto viejo, el micro lo seteaste antes o despues de crear el proyecto?
Se me ocurre que podria haber algun error en el compilador en esa etapa.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re:Interrupciones en PIC16F15324 (Solucionado)
« Respuesta #5 en: 07 de Marzo de 2020, 18:27:05 »
Puede ser. Habia un problema en la configuración del proyecto. El caso es que me ha llevado bastante tiempo encontrar el error porque pensaba que estaba en el código.

Saludos.