Bonjour à tous,
Suis nouveau sur ce site ( de ch'Nord)
J'essaie de faire fonctionner une interruption avec le timer du 12F683, mais ça ne marche pas , j'ai "fonction _interrupt never called". Pourquoi la fonction n'est jamais appelée.
Si qquelqu'un pouvait m'aider car j'ai essayé plein de modif . Un grand merci d'avance.
Mon programme en C:
/*
* File: main.c
* Author: nilelong
*
* Created on 25 novembre 2020, 11:42
*/
#include <xc.h>
#include <htc.h>
#include <pic12f683.h>
#include <pic.h>
#include "inter.h"
// Définition de la fréquence du crystal pour la fonction __delay_ms(x);
#define _XTAL_FREQ 31000
#define led GP4
#define TMR0 TMR0
// CONFIG
#pragma config FOSC = INTOSCIO // Oscillator Selection bits (INTOSCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
#pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled)
#pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled)
#pragma config BOREN = OFF // Brown Out Detect (BOR disabled)
#pragma config IESO = OFF // Internal External Switchover bit (Internal External Switchover mode is disabled)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled)
#pragma interrupt
void interrupt (void) {
if ((INTCONbits.T0IF == 1) && (INTCONbits.T0IE == 1)) {
TMR0 = 255 - 10;
led =~ led;
INTCONbits.T0IF = 0;
}
}
void main ()
{
TRISIO = 0b0000100;
ANSEL = 0b0000000;
OSCCON = 0b0000111;
// interruptions
INTCON = 0b1110000;
ei ();
// timer 0
OPTION_REGbits.T0CS = 0;
OPTION_REGbits.PSA = 0;
OPTION_REGbits.PS = 0b111; // par 128
while (1)
{
}
}
-----