multi tasking microcontroleur

E

electronic6000

Guest
Y at-il une tâche dites-moi comment mon multi microcontroleur même Windows98 et Windows XP programme

Je veux que mon micro multi travail à la tâche

 
Tout d'abord, ce type de microcontrôleurs que vous utilisez.Y at-il aucune aide de HW à l'environnement de compilation multitâche.Je l'avais fait il ya cette année environ 6-7 avec 80186, ce n'est pas une aide de l'HW - je veux dire la structure uC interne ne donne pas d'instructions pour le multitâche.
J'ai fait seulement les bases, parce que le débogueur ne pouvait pas gérer ce programme multitaskin Donc, après un moment, j'ai abandonné.
Donc je peux donner les bases seulement.
Lorsque vous définissez une tâche (ou le fil), vous définissez une zone mémoire dans laquelle vous pouvez enregistrer et restaurer le contenu de votre registre.Dans le cas simpliste, vous avez 2 tâche et vous utilisez le multitâche préemptif, c'est le système d'exploitation (votre subrutine tiers) pour alterner entre l'exécution des tâches à intervalle régulier.
Vous commencez donc la première tâche et en attendant la minuterie sur l'arrière-plan est de comptage.Lorsque l'heure est désactivée, alors vous avez besoin pour passer à l'autre tâche.Cela signifie que votre programme de contrôle (comme une interruption d'une priorité absolue déclenché par la minuterie) prendra le relais le contrôle et enregistre tous les registres, y compris le PS et le PC eux-mêmes (pointeur de pile et compteur de programme) se rapportant à la première tâche.N'oubliez pas que vous êtes au milieu d'une procédure d'interruption, de sorte que vous devez enregistrer le contenu précédent de la SP.Comment, regardez sur la pile et vous trouverez (pour plus d'informations, lisez la description de l'UC, quels registres sont sauvegardés automatiquement avant d'entrer en interrompre l'exécution).Le moyen le plus rapide pour sauver les registres d'une tâche est de mettre sur la pile.Maintenant que vous avez fait la première partie.Vous devez restaurer le contenu de l'autre tâche.Autrement dit, vous devez remplir tous les registres avec le bon contenu des tâches liées au début d'autres.Puis vous sortez de l'interruption.Une chose importante à noter.Lorsque vous enregistrez sur la pile (qui est le moyen le plus rapide) vous avez de la pop et pas seulement pousser.Cela signifie d'abord vous pop les registres qui ont été sauvés avant d'entrer dans l'interruption (le contenu de registre est détenue par Task1), la pop le contenu registre des Task2, enregistrer le contenu du registre des Task1 (push), et pousser une partie du contenu du registre qui Task2 seront automatiquement pioped au moment de quitter l'interruption.Donc, comme vous voyez n'est pas si simple, mais qui peuvent être mises en œuvre.Pour moi cela a fonctionné.

Belsugului

 
Essayez d'étudier et d'apprendre RTOS, il ya un appelé Salvo RTOS.

 
essayez les feture de recherche avant une nouvelle affectation,

http://www.edaboard.com/viewtopic.php?t=115807&highlight =

 

Welcome to EDABoard.com

Sponsor

Back
Top