Y a déjà plus d'informations mais il en manque toujours !
Pour CDE_ELECTROAIMANT pas de doute, vu le schéma c'est bien une sortie. Lorsque cette sortie est à 1, l'électroaimant est actif et il bloque le tripode et si la sortie est à 0 le tripode peut tourner.
Pour Passage_OK, d'après ton début de programme (si il est bon) et d'après le carré "état logique" que je vois sur ton schéma (si tu ne t'es pas trompé) je fais l'hypothèse que c'est une entrée du PIC18F688.
Est ce que c'est le sens de rotation ?
Si Passage_OK = 0 alors le tripode tourne dans un sens et si Passage_OK = 1, le tripode tourne dans l'autre sens ?
Est ce que c'est une info pour signaler que quelqu'un est passé ?
Tu as remarqué que cette variable ne sert a rien dans le programme ? Moi je trouve ça bizarre !!!!!
Pour TRIPODE, qui est une entrée, bah elle sert a quoi ? Elle vient de où ? C'est un marche/arrêt du système ?
Pour A et B, qui sont des entrées liées à des notions de phases, mêmes questions, c'est une info venant du tripode et codée en binaire ?
00 = démarrage
01 = 1er tour du tripode
10 = 2eme tour du tripode
11 = 3eme et dernier tour du tripode
Il faut que tu donnes toutes les infos pour pouvoir compléter le programme ci dessous.
Est ce que tu es sur du début de ton programme d'ailleurs ? Parce ce que si je dois faire des hypothèses avec seulement la moitié des infos (et en plus si elles sont pas bonnes) ......
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
| sbit TRIPODE at RC2_bit;
sbit TRIPODE_Direction at TRISC2_bit;
sbit A at RC4_bit;
sbit A_Direction at TRISC4_bit;
sbit B at RC5_bit;
sbit B_Direction at TRISC5_bit;
sbit Passage_OK at RC0_bit;
sbit Passage_OK_Direction at TRISC0_bit;
sbit CDE_ELECTROAIMANT at RA0_bit;
sbit CDE_ELECTROAIMANT_Direction at TRISA0_bit;
void main() {
unsigned char Fin_Cycle;
/************ Configuration des ports utilisés en I/O numériques ********/
ANSEL = 0;
CMCON0 = 7;
/********** Configuration (sens de transfert) des entrées numériques *****/
A_Direction = 1;
B_Direction = 1;
TRIPODE_Direction = 1;
/********** Configuration (sens de transfert) des sorties numériques *****/
CDE_ELECTROAIMANT_Direction = 0;
CDE_ELECTROAIMANT = 0; // !-> Attention <-! 0 = dévérouillé par défaut
Passage_OK_Direction = 0;
Passage_OK = 0;
Delay_ms(2000);
while(1)
{
Fin_Cycle = 0;
while(TRIPODE == 0)
;
do
{
CDE_ELECTROAIMANT = 1; // Verouillage
while (A == 0 && B == 0) // Tant que A == 0 et B == 0
; // Attente de la Phase 1
CDE_ELECTROAIMANT = 0; // Deverouillage
/*************************************************************************/
while (A == && B == )
; // Phase 1 attente phase suivante
if (!(A == && B == )) // Test verification passage à la phase 2
{
continue; // Retour au verouillage
}
/*************************************************************************/
while (A == && B == )
; // Phase 2 attente phase suivante
if (!(A == && B == )) // Test verification passage à la phase 3
{
continue; // Retour au verouillage
}
/*************************************************************************/
while (A == && B == )
; // Phase 3 attente phase suivante
if (!(A == && B == )) // Test verification passage à la phase 1
{
continue; // Retour au verouillage
}
Fin_Cycle = 1;
} while (??);
CDE_ELECTROAIMANT = ?;
Passage_OK = ?;
Delay_ms(1000);
Passage_OK = ?;
}
} |
A+
Partager