Autor Tema: Interrupciones en PIC16F15324 (Solucionado)  (Leído 1421 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 243 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.


 

anything