Les extraits de code ci-dessous proviennent du fabricant. Je suis complètement confus quant à ce qu'ils essaient de faire. En particulier, tout ce qui a trait à InterruptHandler.Configuration d'interruption de code C par le fabricant
Veuillez commenter le code dans la section globale. Cela semble-t-il correct?
Les différentes API incluses ont toutes des points de blocage. Est-ce qu'ils essaient d'utiliser un pointeur vide? ... Beaucoup à demander, s'il vous plaît commenter principalement sur la façon dont ils suggèrent le timer2 fonctionnerait.
...
/**
Section: Global Variables Definitions
*/
void (*TMR2_InterruptHandler)(void);
...
/**
Section: TMR2 APIs
*/
void TMR2_Initialize(void)
{
// Set TMR2 to the options selected in the User Interface
// T2CKPS 1:2; T2OUTPS 1:2; TMR2ON off;
T2CON = 0x11;
// T2CS LFINTOSC;
T2CLKCON = 0x04;
// T2PSYNC Not Synchronized; T2MODE Software control One shot; T2CKPOL Rising Edge; T2CKSYNC Not Synchronized;
T2HLT = 0x08;
// T2RSEL TMR4_postscaled;
T2RST = 0x02;
// PR2 8;
T2PR = 0x08;
// TMR2 0;
T2TMR = 0x00;
// Clearing IF flag before enabling the interrupt.
PIR4bits.TMR2IF = 0;
// Enabling TMR2 interrupt.
PIE4bits.TMR2IE = 1;
// Set Default Interrupt Handler
TMR2_SetInterruptHandler(TMR2_DefaultInterruptHandler);
// Start TMR2
TMR2_Start();
}
void TMR2_ISR(void)
{
// clear the TMR2 interrupt flag
PIR4bits.TMR2IF = 0;
if(TMR2_InterruptHandler)
{
TMR2_InterruptHandler();
}
}
void TMR2_SetInterruptHandler(void* InterruptHandler)
{
TMR2_InterruptHandler = InterruptHandler;
}
void TMR2_DefaultInterruptHandler(void)
{
// add your TMR2 interrupt custom code
// or set custom function using TMR2_SetInterruptHandler()
}
/**
End of File
*/
Merci, Steve
modifier: Le code fabricant inclut une routine (je ne peux pas sembler ajouter ici) pour gérer les interruptions de haut niveau qui appelle TMR2_ISR si (PIE4bits.TMR2IE = = 1 & & PIR4bits.TMR2IF == 1) Cela semblerait annuler tout TMR2_DefaultInterruptHandler, n'est-ce pas?
Merci encore pour votre aide.
connaissez-vous en général comment fonctionnent les interruptions et à quoi elles servent? Qu'est-ce qui déclenche le gestionnaire d'interruption? (Il est possible qu'un gestionnaire d'interruption soit appelé pour une interruption, dans ce cas, il doit y avoir une sorte de spécification (par exemple une variable globale) indiquant le déclencheur.) – Scheff
utilisez le code fourni et placez votre code dans TMR2_DefaultInterruptHandler –
Ceci est juste un squelette. Qu'est-ce que vous ne comprenez pas, parce que ce code ne fait rien d'utile.Veuillez vous référer à votre manuel d'utilisation pour les détails du registre du matériel. Reportez-vous au manuel de votre système d'exploitation pour les communications d'interruption et la signalisation. –