Je suis d'accord avec la réponse de Dan - voici quelques ajouts/améliorations:
(1) calculs à base de fenêtres. parce que le défaut n'a probablement pas de périodicité, vous devrez calculer son temps d'exécution en termes de pourcentage dépensé dans cette tâche sur une fenêtre (disons 1000msec). Vous devrez définir une variable statique utilisée pour accumuler les clics du minuteur. Une fois que votre fenêtre a expiré (c.-à-d. Que 1000 ms sont passés), vous pouvez calculer le temps passé en défaut par rapport à 1000 ms qui sera le pourcentage dépensé par défaut. Comme je lis votre description, il semble que l'état par défaut est fondamentalement un état inactif - ce qui signifie que ce pourcentage est à peu près votre micro-utilisation disponible.
(2) un retournement par heure.. Si vous pouvez utiliser un compteur 32 bits et que vous capturez les horodatages usec, vous pouvez le faire un peu plus d'une heure avant le basculement. Si vous utilisez ceci pour un projet de maison, vous avez la possibilité d'ignorer les survols. Cela contribuera à une fenêtre distordue de 1000 msec, et c'est tout. Si, d'autre part, vous allez surveiller pour une utilisation maximale et définir un défaut ou un diagnostic à cause de cela ... alors vous voulez le considérer.
(3) Inclinaison ISR. Déterminer si vous devez gérer le temps passé en ISR différemment que le temps passé dans une autre tâche dépend de la façon dont votre RTOS gère le changement de contexte. Comme Dan le mentionne, la plupart des RTOS ont une sorte de callback ou de hook qui se déclenche quand un changement de tâche se produit. Certains RTOS ont un crochet séparé uniquement pour les ISR. Je ne suis pas exactement sûr de ce que la motivation pour cela est autre qu'une théorie générale que les utilisateurs sont moins susceptibles de se soucier du temps passé dans (espérons-le) brèves ISR que sur les tâches de l'utilisateur eux-mêmes. Dans tous les cas, vérifiez comment votre RTOS gère cette commutation et continuez à partir de là.
Si vous ne le faites pas correctement, le temps passé dans les ISR sera attribué à toute tâche en cours au moment du déclenchement des ISR. Si vous êtes par défaut, votre tâche par défaut était "absorber" l'heure ISR. Si vous n'avez pas beaucoup d'ISR en cours d'exécution, alors je l'ignorerais complètement.
Bonne chance! Je l'ai fait avec la famille PowerPC 551X, et c'était pour la production automobile SW donc ça devait être parfait! Vous devriez l'avoir beaucoup plus facile :)