1) Mais j'ai toujours des problèmes dans la simulation sur proteus au niveau des LEDs LES et LAT (qui se trouvent à droite), ils ne s'allument pas (je pense qu'ils s'allument mais non visibles à l'oeil nu) et moi j'ai besoin que LAT soit allumé tout au long de la simulation tant que MICON=1 et que LES soit toujours allumé tant que le test d'étanchéité est bon (la variable pka soit dans l'intervalle [min;max])
2) autre problème, le programme ne fonctionne pas en temps réel, càd si au cours de la simulation je modifie l'état des entrées MICON, MIDET1, MIDET2 ... ça ne change rien et n'applique pas l'algorithme du programme
3) autre chose que je n'ai pas encore programmé, en appuyant sur le bouton "BTN" l'EVCON doit s'arrêter et par la suite tout le programme doit s'arrêter et toutes les variables reviennent à l'état initial: est-ce que nécessite une interruption?
Merci énormément pour votre aide et votre temps, j'espère que c'est assez clair pour que vous comprenez mon travail.
Je vais vous laisser le fichier de simulation sur isis dans un lien puisque ça ne s'attache pas ici: https://www.transfernow.net/dl/2021060523DpJAiR
Vous trouverez une capture de ma simulation en cas d'incapacité de télécharger le fichier.
voici le code:
Code : Tout sélectionner
#define MICON portB.f3
#define MIDET1 portB.f2
#define MIDET2 portB.f1
#define MIDET3 portB.f0
#define MIDET4 portB.f3
#define MIV1 portA.f1
#define MIV2 portA.f2
#define MIV3 portA.f3
#define MIV4 portA.f4
#define DET4 PORTC.f0
#define DET3 portC.f1
#define DET2 portC.f2
#define DET1 portC.f3
#define PRE portC.f4
#define EVCON portG.f4
#define EVDET1 portG.f3
#define EVDET2 portF.f7
#define EVLTD portF.f6
#define D1 portE.f4
#define D2 portE.f5
#define D3 portE.f6
#define D4 portE.f7
#define LES portF.f4
#define LAT portf.F5
#define BTN porta.f5
unsigned finale=4,chance=0,etape=1,pka=2000;
const t1=2,t2=2,min=0,max=5000;
void main() {
trisb.f0=1;trisb.f1=1;trisb.f2=1;trisb.f3=1; //configuration des pins d'entrées du port B
trisc.f0=0;trisc.f1=0;trisc.f2=0;trisc.f3=0;trisc.f4=0; //configuration des pins de sortie du port C
trisA=0xFF; //configuration du port A comme entrée
trisE=0x00; //configuration du port E comme entrée
trisF=0x00; //configuration du port F comme sortie
trisg=0b11100001; //configuration des pins du port G
porta=0x00;portb=0x00;portc=0x00;portd=0x00;porte=0x00;portf=0x00;portg=0x00;
if(MICON==1&EVCON==0){
PRE=1;LAT=1;EVCON=1;
}
// etape++;
//1ère étape: det1
while(EVCON==1 & etape==1 & chance<=finale){
LAT=1;
if (MIDET1==1){
DET1=1;etape++;chance=0;}
else {D1=1;chance++;}
if (chance>finale){
D1=1;etape++;chance=0;}
}
//2ème étape: det2
while(EVCON==1 & etape==2 & chance<=finale){
LAT=1;
if (MIDET2==1){
DET2=1;etape++;chance=0;}
else {D2=1;chance++;}
if (chance>finale){
D2=1;etape++;CHANCE=0;}
}
//3ème étape: det3
while(EVCON==1 & etape==3 & chance<=finale){
LAT=1;
if (MIDET3==1){
DET3=1;etape++;chance=0;}
else {D3=1;chance++;}
if (chance>finale){
D3=1;etape++;chance=0;}
}
//4ème étape: activation EV d'étanchéité
while(EVCON==1 & etape==4){
LAT=1;
EVLTD=1;delay_ms(1000*t1);
etape++;
}
//5ème étape: test d'étanchéité
while(EVCON==1 & etape==5 & chance<=finale){
LAT=1;
EVLTD=1;
delay_ms(1000*t2);
if (pka>min & pka<max){
LES=1;DET4=1;etape++;
}
else {D4=1;chance++;}
if (chance>finale){
D4=1;etape++;CHANCE=0;}
}
//6ème étape: EV étanche OFF et fin du cycle
while(EVCON==1 & etape==6){
LAT=1;
EVLTD=0;
}
//calcul nombre de voies
//calcul nombre de détections
//interruption: button release?? 

