Structure d'un programme -séquenseur- et -IT- [Forums - Langage C]
Structure d'un programme -séquenseur- et -IT- [Forums - Langage C]
Pseudo Pass se souvenir de moi     Créer un compte
ARTICLES et TELECHARGEMENTS ~ FORUMS ~ LIENS  
 
             
 
Recherche
 
   
 

Parcourir ce sujet :   1 Utilisateur(s) anonymes



(1) 2 »


Structure d'un programme -séquenseur- et -IT-
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
Et bonjour !

Comme on dit chez moi en Catalan "poc a poc", qui veut dire simplement "petit à petit".

Et je suis fier d'avoir pu écrire dans mon LCD en I2C. C'est encore très bancal puisque ça resete tout le temps et je sais pas encore pourquoi, mais cela valide définitivement tout ce que j'ai soudé sur ma carte

Et il faut lui en balancer un bon paquet d'instructions avant de pouvoir afficher quelque chose !!!!

La première couche de mon soft étant à mon sens pas trop mal pour exploiter, je vais pouvoir m'attaquer, avec patience, à la couche supérieure.

Mais voici la où je flanche :

J'hésite à utiliser le séquenceur de Stéphane, mais, puisque il n'y a pas grand chose à faire dans mon programme, je souhaiterais faire autrement, et en utilisant les IT.

Voici ce que j'ai :

- lecture toutes les Xms des 3 capteurs de température pour traitement et activation de la pompe ou non (très prioritaire !)
(l'activation de la pompe pourra se faire par 3 méthodes possibles : TOR, PWM, 0-10V, les 2 derniers pouvant me permettre de contrôler sa vitesse)

- Interface utilisateur IHM : 4 boutons permettant la visu en live sur le LCD I2C, ou changement de certain paramètres (avec quelques menus).

- Ecriture/lecture des paramètres utilisateurs en EEPROM I2C.

- Ecriture des ROM CODE de mes 3 capteurs DS18b20 en EEPROM I2C. Uniquement lors de la toute première mise en service.

Voilà en gros ce que je dois faire, et voici à quoi je pense :


Après le 1er reset et les inits :

1°) Lancement du MTIM pour Xms et sortie sous IT et lecture de mes capteurs.
2°) Si une touche est appuyée, j'ai une IT, mais il ne faut pas que j'interrompe une éventuelle lecture ...

... bon en fait, vous l'avez compris, je ne sais pas encore comment m'y prendre ...

Attacher un fichier:



jpg  bonjour.jpg (208.53 KB)
24_56f6984fe45d6.jpg 1045X784 px

Posté le : 26/03/2016 15:06
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer


Re: Structure d'un programme -séquenseur- et -IT-
Pilier de la communauté
Inscrit:
13/10/2005 10:06
De haute-savoie (74)
Messages: 1164
Hors Ligne
sincèrement, utilises le séquenceur !
Même s'il y a trois fonctions qui se courent après, tu verras que c'est bien plus simple pour architecturer un code...

++
Steph

Posté le : 26/03/2016 15:28
Transférer la contribution vers d'autres applications Transférer


Re: Structure d'un programme -séquenseur- et -IT-
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1943
Hors Ligne
+1 je l'ai utilisé ce séquenceur, bien pratique et au final plus simple quand on a des trucs un peu long et pas prioritaire comme écran et boutons

Mais pour cadrer ta pensée souviens toi d'un truc fondamental : on ne fait rien dans l'it !!!
Il ne faut qu'y incrémenter des compteurs, mettre à 1 un flag, ce genre de chose très rapide.
Dans ta boucle principale (ou le séquenceur) tu testes les flags et compteurs et si l'it leur a donné la valeur ad hoc alors tu exécutes.

Si dans la boucle principale tu lis le fameux compteur ou que tu fais un truc archi précis (plus précis que tes tempos I2C) alors tu peux empêcher un IT de venir modifier une valeur de variable ou de prendre du temps en les désactivant puis en les réactivant quelques instants après.




Posté le : 26/03/2016 16:11
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer


Re: Structure d'un programme -séquenseur- et -IT-
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
Haaaa je pige pas trop mon esprit s'embrouille ...

Tu dis on ne fait rien dans l'it ! Si on a un it à la fin d'un timer ou issu d'un KBI, faut bien la traiter dedans ?!

Et comment gère t'on 2 it consécutives ? Par exemple l'une survenant d'un timer et qui est prioritaire, et la deuxième parce que j'ai appuyé sur une touche ??

J'ai vu également un registre qui gère les priorités d'interruption ...

Posté le : 26/03/2016 19:52
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer


Re: Structure d'un programme -séquenseur- et -IT-
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1943
Hors Ligne
Par exemple l'appui sur le bouton (en version très simple):

> l'it intervient tu sautes dedans à la fin de l'instruction en cours
> dans l'it tu met à 1 un flag qui dit "bouton appuyé!!!"
> tu initialises le flag de l'it
> tu sors de l'it
> le boucle principale reprend où elle en était
> qq instants plus tard la boucle principale arrive sur le test "y a t-il un bouton qui a été appuyé", la tu testes le flag mis à 1 dans l'IT, tu exécutes le code qui va bien et tu remet à 0 le flag...


En faisant cela ton IT ne peut pas perturber ce qui se passe dans la boucle principale parce qu'elle ne durera jamais longtemps.
Idem elle ne perturbera pas une autre IT.

Tu vas me dire il faut que je teste ça souvent dans la boucle principale. C'est ce qui se passe en vrai puisque ton µc parle en ns alors que ton doigt le fait dans une toute autre échelle de temps.

Tu vas me dire que ton code qui gère l’écran est super long et que du coup ça ne marche pas...
Là 2 options : soit tu fais comme tu feras dans quelques temps, en faisant en sorte que tout tourne via des fonctions d'execution rapide, typiquement sans faire des lectures de capteurs de 100n de ms avec attentes...
soit tu mets un poil plus de trucs dans ton it (le "rien mettre dedans" est relatif...) et petit à petit tu rendras ton code plus véloce. Mais il faudra alors avoir en tête que ton it pourra alors avoir une durée d'execution non neutre pour ce qui se passe dans la boucle principale. Les fameuses tempo précises du 1 wire peuvent être perturbées par une IT KBI ou tu testerais pleins de trucs (ou pire avec une tempo anti rebond dans l'it ! beurk ça, même provisoirement, c'est interdit !)
Sur une étape critique dans la boucle principale tu pourrais aussi désactiver les it pour être sur mais c'est très moche...

Posté le : 26/03/2016 20:49
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer


Re: Structure d'un programme -séquenseur- et -IT-
Pilier de la communauté
Inscrit:
13/10/2005 10:06
De haute-savoie (74)
Messages: 1164
Hors Ligne
sur les S08, les priorités entre périphériques sont souvent fixes et décrit dans le datasheet
sur les CPU 32-bits plus évolués, on peut assigner une priorité aux IT.

Quand Charly dit "tu fais rien dans l'IT", ce n'est pas virtuellement rien ! Il veut dire que la fonction doit être minime genre stocker un octet pour un traitement ultérieur, donc des actions très courtes

Posté le : 26/03/2016 21:22
Transférer la contribution vers d'autres applications Transférer


Re: Structure d'un programme -séquenseur- et -IT-
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
C'est marrant, à l'époque ou je chauffais les banc de l'école, on codait dans l'interruption ce qu'il y avait à faire parce que c'était important, et parce que justement, c'était une interruption qui forcait le programme principal à donner la main pendant cette urgence ... j'ai l'impression d'être dans un autre monde là !

M'enfin je prend note et j'apprend des bons. Vos explications sont claires mais à l'échelle du projet entier ...

Je m'efforcerai à mettre quelque chose en place, mais "amendoné", faudra bien me refiler un exemple car je nage. Entre séquenceur et IT ou il faut juste tester un flag, je coule même ...

Stéphane, le registre dont je parlais tout à l'heure dans mon S08 concernant apparemment la gestion des priorités d'IT s'appelle IPC Interrupt priority control register.

Déjà utilisé ?

Posté le : 26/03/2016 21:44
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer


Re: Structure d'un programme -séquenseur- et -IT-
Pilier de la communauté
Inscrit:
23/10/2005 11:40
De Aix les Bains (73)
Messages: 1943
Hors Ligne
A mon avis te soucis pas trop du IPC (que je ne connais pas ça doit être que dans les derniers S08), les priorité par défaut sont assez logiques et couvriront tes besoins.
Si tu n'avais qu'une seule IT avec dedans le seul truc critique de ton appli ça ne poserait pas de problème, le problème c'est que tu en auras pas qu'une... Comme après c'est asynchrone tu ne comprends plus rien à ce qui se passe dans ton appli.


Posté le : 26/03/2016 21:49
Mieux vaut marcher dans la bonne direction que courir dans la mauvaise
Transférer la contribution vers d'autres applications Transférer


Re: Structure d'un programme -séquenseur- et -IT-
Pilier de la communauté
Inscrit:
13/10/2005 10:06
De haute-savoie (74)
Messages: 1164
Hors Ligne
et puis tu exagères !!!
Ca fait déjà parti de FreeRTOS !!!!!

http://www.freertos.org/a00021.html



Posté le : 26/03/2016 21:59
Transférer la contribution vers d'autres applications Transférer


Re: Structure d'un programme -séquenseur- et -IT-
Accro
Inscrit:
28/09/2005 14:02
De Catalunya (66)
Messages: 581
Hors Ligne
Ah yeeeees !

eTaskGetState c'est vraiment ce qu'il me manquait merci beaucoup Stéphane




Bon alors du coup, je vais développer mon appli comme ça me vient, j'implémenterai tout ça petit à petit.

Posté le : 26/03/2016 22:19
Les octets s'envolent, les écrits restent !
Transférer la contribution vers d'autres applications Transférer



 Haut   Précédent   Suivant
(1) 2 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Powered by XOOPS© The XOOPS Project
Contacter les administrateurs

Structure d'un programme -séquenseur- et -IT- [Forums - Langage C]