Bonjour à tous,
Je travail actuellement sur un programme en C pour PIC 18F4420 avec le compilateur CC8E sous MPLABv8.0.
J'utilise le Timer0 pour generer un flag d'interruption de priorité haute.
Lors de l'interruption j'effectue une conversion analogique numerique de certaines entrées de mon µC et je rabaisse mon flag d'interruption.
A la suite de ca mon programme tourne en boucle en attendant un nouveaux flag et ne retourne pas dans mon main.
Voici le code d'interruption:
void _highPriorityInt(void);
#pragma origin 0x08
interrupt highPriorityIntServer(void)
{
int_save_registers
// W, STATUS and BSR are saved to shadow registers
uns8 sv_PRODL = PRODL;
uns8 sv_PRODH = PRODH;
uns8 sv_FSR0L = FSR0L;
uns8 sv_FSR0H = FSR0H;
// handle the interrupt
// 8 code words available including call and RETFIE
_highPriorityInt();
// restore W, STATUS and BSR from shadow registers
int_restore_registers
PRODL = sv_PRODL;
PRODH = sv_PRODH;
FSR0L = sv_FSR0L;
FSR0H = sv_FSR0H;
#pragma fastMode
}
#include <AcquerirVar.c>
void _highPriorityInt(void)
{
if(TMR0IF==1)
{
acquerirvars ();
TMR0IF=0;
}
}
Si quelqu'un peut m'aider, merci.
-----