Bonsoir,
Voila un bout de temps que j'ai pas eu l'occasion de m'amuser dans le petit monde de l'embarqué libre. Ce soir, je remet le nez dedans.
Passez cette petite introduction de retour, je viens avec une belle interrogation et j'aimerais gravité autour d'un même sujet. Le pilotage d'un réseau de train. J'ai réaliser un séquensage complet et je me charge de travailler avec des sous-routines. Les sorties de la cartes piloterons des petits transistors (2N2222) qui piloterons des relais avec diode de roue libre.
Voyons maintenant la capture d'événements non bloquant. Je possède plusieurs capteur, on va dire entre 6 et 10 en analogique de type LDR (résistance qui varient en fonction de la lumière). Les interruptions sont disponible sur certaines pins. Hélas, je pense utiliser les CAN intégré aux voies A0 à A10.
A ce moment là; en farfouillant sur le net, j'ai vue qu'il était possible de faire ceci:
- Toutes les 20 à 30µs, passer en interruption
-- Lire l'état de chaque entrées analogiques
-- Mettre des flags (pour éviter les rebonds due aux wagons)
-- Placer dans un tableau chaque état
-- Revenir au programme principal - En fonction des états de chaque capteur, de l'image du terrain, il convient de piloter tel et tel sorties.
Mon principal souci est de savoir si, comme je dois faire des pauses programme sans blocage, on peut faire ces interruptions toute les x µs. Dans le cas ou c'est possible, quelles types de code est à mettre en oeuvre ?
Ensuite, j'ai un second souci. Forcément !! Comme j'ai expliqué, c'est un automatisme. C'est à dire que les trains se pilotent seul. Il se trouve qu'à un moment donné, je gère une séquence qui n'en est plus une. L'ensemble de la séquence peut-être longue.
Pour faire bref, c'est du style.
- Le train 1 part, 3 minutes plus tard il croise la cellule 1 (capteur optique).
- Le train 2 part, la section précédente est éteinte.
- Le train 1 arrive en gare 1, il passe sur la cellule 2 ce qui déclenche le départ du train 3.
- Le train 3 part, 4 minutes plus tard, il passe sur la cellule 1.
...
Comme on voie, la même celule est croisé deux fois dans la séquence et, bien sûr ne doit pas faire la même action. Une des idées aurait été de placé plus astucieusement les cellule. C'est en cours d'étude. Mais je suis convaincue qu'il faille impérativement avoir l'image des train et leurs position en mémoire dans le logiciel. Voila les avis la dessus sont ouvert.
N'hésitez pas à me demande des informations ou à me demander de complété. Je vais essayer d'aller jusqu'au bout. Le tout est que ça soit possible à mettre en ouvre avec des sous-routines (fonctions / classes).
Merci de votre attention et des réponses qui me seront données.