flowcode une solution ?

< Sujet précédent  Sujet suivant >
Index du Forum -> Forum des Projets fin d'études, mini-projets et des réalisations electroniques -> Réalisations générales
AuteurMessage
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 07/08/2011 17:05  
flowcode une solution ?
salut a tous


je fais appel a vos connaissances car je n'y arrive vraiment pas

je voulais faire un programme simple ayant le fonctionnement suivant
(voir la vidéo)
cela fonctionne , j'ais utilisé flowcode.
mais l'interruption sur rb0 n'a jamais fonctionné , quand elle est activée
elle éteint bien la led qui est allumée , mais fige le programme
plus aucune action n'est possible par la suite , inutile de vous dire que plusieurs personnes ont éssayés de trouvé une solution sans aucun succé
je me suis rabattu sur une interruption du "pauvre" a savoir un reset des leds
via des portes logiques (vidéo)

je me suis rappelé du forum ou quelques uns içi semblent de taille a peut être
résoudre ce problème de RB0

question comment gerer une interruption (avec flowcode ou sans) pour avoir
le programme que je veux ? (et me passé de ces portes logiques)

fonctionnement -->

chaque switch allume sa led
un switch qui a été activé ne le pourra pas deux fois de suite (il faut que l'autre switch
est été activé pour un deuxième cycle.
si une des leds est allumée et si RB0 actif reset des leds et tempo 3 secondes
apres les switchs seront de nouveaux opérationnels


merci

la vidéo Mon http://www.wideo.fr/video/iLyROoaf24J6.html

le fichier flowcode en question ou l'interruption fonctionne en simulation (pas comme voulu)
mais lors de l'essaie sur isis et sur plaque d'éssaie l'interruption fait bien le reset
mais fige le programme

le lien ci dessous du programme en vidéo avec son "bug"
des que rb0 devient actif ,le programme se fige.

(attendre 10 secondes pour que la vidéo s'ouvre)

http://www.wideo.fr/video/iLyROoaf26zT.html


le fichier en question http://dl.free.fr/c3N1NKp54

Edité par max le 09/08/2011 00:11
Revenir en haut | Permalien
Tunisia.png Technologuepro
Administrator



Messages : 446
Inscrit(e) le: 15/11/2007
Posté le 09/08/2011 01:38  
RE : flowcode une solution ?
Salut,
Ajoute à la fin de la routine d'interruption l'instruction suivante :
INTCON reçoit la valeur en hexa 0x90
et reviens ici si ça marche pas je vais t'aider à faire fonctionner ce programme
j'ai pas pus ouvrir le fichier flowcode sous la version 4, quelle version utilise tu ?
sinon ton programme est très simple en mikropascal je peux le faire rapidement
Bonne chance

Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres...
Revenir en haut | Permalien
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 09/08/2011 12:51  
RE : flowcode une solution ?

Technologuepro a écrit :

sinon ton programme est très simple en mikropascal je peux le faire rapidement




simple ?..(voila pourquoi je fais appel a toi !! )
tu vas sourire sans doute , ce problème a tenu 3 pages de poste dans un forum anglais sans trouvé de solution !

j'ais essayé intcon , sans résultat , peut importe la façon dont tu pourrais le faire fonctionné ,mais j'aimerais bien le voir tourné ce programme ensuite je prendrais le temps qu'il faut pour essayé de comprendre pourquoi flowcode n'arrive pas a gérer ce genre de fonctionnement

pour flowcode j'ais la version 4.3
si tu arrive a le faire avec ta version flowcode ,je pourrais l'ouvrir (l'inverse n'est sans doute pas possible...? version plus ancienne ?..)
le lien de mon fichier flowcode

http://www.cijoint.fr/cjlink.php?file=cj201108/cijjiwGEvJ.zip

merci beaucoup

Edité par max le 09/08/2011 12:08
Revenir en haut | Permalien
Tunisia.png Technologuepro
Administrator



Messages : 446
Inscrit(e) le: 15/11/2007
Posté le 10/08/2011 01:06  
RE : flowcode une solution ?
Ok, je vais t’écrire un programme sous Mikropascal 8 et une simulation sous ISIS 7 , tu pourras t'inspirer de l'algorithme pour l’écrire sous flowcode ou c ou tous que tu veux,
Alors à très bientôt

Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres...
Revenir en haut | Permalien
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 10/08/2011 12:09  
RE : flowcode une solution ?
génial ! j'attends ça avec impatience.

Revenir en haut | Permalien
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 13/08/2011 12:32  
RE : flowcode une solution ?
...je crois que le "patron" m'a oublié..

Revenir en haut | Permalien
Tunisia.png Technologuepro
Administrator



Messages : 446
Inscrit(e) le: 15/11/2007
Posté le 18/08/2011 08:57  
1313650633.zip (19 Ko)
RE : flowcode une solution ?
Bonjour,
Non je t'ai pas oublié, j'avais un empêchement. Bon voila ton code d'après le fonctionnement que tu as demandé, tu trouvera la simulation sous ISIS et le programme en mikropascal jette un coup d’œil et dis moi si il ya des conditions à ajouter. ???
voici un aperçu rapide du code :

Code :


var jeton: byte ;
procedure interrupt;
begin
portb.6:=0;
portb.7:=0;
delay_ms(3000);
INTCON:=$90;
end;
begin
jeton:=0;
trisa.0:=1; ///SW1
trisa.1:=1; /// SW2
trisb.0:=1; /// INT
trisb.6:=0; /// LED1
portb.6:=0;
trisb.7:=0; /// LED2
portb.7:=0;
INTCON:=$90;
while true do
begin
if ((porta.0 = 1) and ((jeton = 0) OR (jeton = 2))) then
begin
portb.6:=1;
jeton:=1;
end;
if ((porta.1 = 1) and ((jeton = 0) OR (jeton = 1)))then
begin
portb.7:=1;
jeton:=2;
end;
end;
end.



à très bientôt

Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres...
Revenir en haut | Permalien
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 18/08/2011 12:45  
RE : flowcode une solution ?
salut

d'abord merci.(je savais que tu devais être pris)

le fonctionnement recherché est un peux différent.

si une led est allumée (led1 ou led2) aucune action ne sera possible
sur l'un ou l'autre switch ,il faut que la temporisation soit terminée
et que la led qui est allumée soit éteinte pour donné la possibilitée
a l'autre inter d'activé sa led

que ce soit sw1 ou sw2 en premier peux importe celui qui a commuté
le premier active sa led .

exemple.(dans l'ordre)

sw1 activé --> led 1..tempo 20 secondes...extinction led1
sw2 activé --> led 2..tempo 20 secondes...extinction led2
sw2 activé ---> rien ne se passe.
sw1 activé ---> led1..tempo 20 secondes...extinction led1.
sw1 activé (de nouveau) -->rien ne se passe.

si INT (rb0) activé a n'importe quel moment , extinction de la led en service.(reset)

autrement dit , si un inter viens d'être activé , pour qu'il le soit une nouvelle fois il faut que l'autre inter est fait un cycle.

comme tu le vois simple comme fonctionnement ,mais cela ma tenu en échec ainsi que le forum ou nous en avons débattu.

merci

Revenir en haut | Permalien
Tunisia.png Technologuepro
Administrator



Messages : 446
Inscrit(e) le: 15/11/2007
Posté le 19/08/2011 03:12  
1313716334.zip (23 Ko)
RE : flowcode une solution ?
Bonjour,
Je trouve ça très facile il suffit d'ajouter quelques lignes :

Code :


program LEDINT;
var jeton, interuption: byte ;
i: integer;
procedure interrupt;
begin
interuption :=1;
portb.6:=0;
portb.7:=0;
delay_ms(3000);
INTCON:=$90;
end;
Procedure attente;
begin
for i:=0 to 20000 do
begin
delay_ms(1);
if interuption = 1 then break;
end;
interuption :=0;
end;
begin
jeton:=0;
interuption:=0;
trisa.0:=1; ///SW1
trisa.1:=1; /// SW2
trisb.0:=1; /// INT
trisb.6:=0; /// LED1
portb.6:=0;
trisb.7:=0; /// LED2
portb.7:=0;
INTCON:=$90;
while true do
begin
if ((porta.0 = 1) and ((jeton = 0) OR (jeton = 2))) then
begin
portb.6:=1;
jeton:=1;
attente;
portb.6:=0;
end;
if ((porta.1 = 1) and ((jeton = 0) OR (jeton = 1)))then
begin
portb.7:=1;
jeton:=2;
attente;
portb.7:=0;
end;
end;
end.


si tu ne veux plus de l'attente de 3 secondes lorsqu’il y a une INT alors supprime la ligne delay_ms(3000); dans la procédure interrupt

@+

Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres...
Revenir en haut | Permalien
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 19/08/2011 17:20  
RE : flowcode une solution ?
que dire....IMPEC !! voila pourquoi il y'a des éléves et le..MAITRE !

j'ais créer un projet avec le soft Micropascal et me suis amusé a changer les tempos ,histoire de comprendre le fonctionnement de ce soft et surtout la manière dont tu t'y est pris pour faire cela.

Micropascal est assez déroutant quand on ne le connait pas , mais grace au tuto du site , je vais essayé de "joué" avec ce soft histoire de maitrisé un peux mieux .

meci beaucoup.

je compléte mon post apres quelques manipulations sur ce programme
exemple je veux allumer une led qui se trouve sur le portB5 , au moment ou interviens RB0 (l'interruption) et elle s'éteind apres 6 secondes.

j'écrit la chose suivante ?

procedure interrupt;
begin
interuption :=1;
portb.6:=0;
portb.7:=0;
portb.5:=1; // allume la led de défaut
delay_ms(6000);
portb.5:=0; //éteind la led de défaut
INTCON:=$90;
end;

pourtant cela ne fonctionne pas ?






Edité par max le 19/08/2011 18:56
Revenir en haut | Permalien
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 20/08/2011 12:49  
RE : flowcode une solution ?
ou est je la tête ?
apres "cojitation" (désolé je ne connais pas du tout la programmation en micropascal (mais ca commence a me parlé...)

alors si je veux allumée une led sur le portB5 ,lorsque l'interruption est la..et que celle ci s'éteigne au bout de 6 secondes...
voila ce qu'il faut faire comme modification.

mes commentaires sont bons ? (dans le programme)

autres chose , si je veux paramétrer des résistances en pull down sur les ports non utilisés ? quels sont les lignes de programme ?

et enfin..(désolé) comment tu fait pour programmer le microcontroleur avec micropascal ?
le soft a la possibilité de le faire , j'ais un pickit2 , mais le logiciel ne semble pas le detecter ?
j'ais aussi un programateur JDM (rs232)..

merci


Citation :
program LEDINT;
var jeton, interuption: byte ;
i: integer;
procedure interrupt;
begin
interuption :=1;
portb.6:=0; /// SI INTERRUPTION RESET LED 1
portb.7:=0; /// SI INTERRUPTION RESET LED 2
portb.5:=1; /// SI INTERRUPTION ON ALLUME LA LED DEFAUT
delay_ms(6000); /// APRES 6 SECONDES
portb.5:=0; /// ON RESET LA LED DEFAUT
INTCON:=$90;
end;
Procedure attente;
begin
for i:=0 to 20000 do
begin
delay_ms(1);
if interuption = 1 then break;
end;
interuption :=0;
end;
begin
jeton:=0;
interuption:=0;
trisa.0:=1; ///SW1 EN ENTREE
trisa.1:=1; /// SW2 EN ENTREE
trisb.0:=1; /// INT EN ENTREE
trisb.6:=0; /// LED1 EN SORTIE
portb.6:=0; /// RESET LED1
trisb.7:=0; /// LED2 EN SORTIE
portb.7:=0; /// RESET LED2
trisb.5:=0; /// PORTB.5 EN SORTIE
portb.5:=0; /// LED DEFAUT RESET
INTCON:=$90;
while true do
begin
if ((porta.0 = 1) and ((jeton = 0) OR (jeton = 2))) then
begin
portb.6:=1;
jeton:=1;
attente;
portb.6:=0;
end;
if ((porta.1 = 1) and ((jeton = 0) OR (jeton = 1)))then
begin
portb.7:=1;
jeton:=2;
attente;
portb.7:=0;
end;
end;
end.



Edité par max le 20/08/2011 14:26
Revenir en haut | Permalien
Tunisia.png Technologuepro
Administrator



Messages : 446
Inscrit(e) le: 15/11/2007
Posté le 17/09/2011 13:37  
RE : flowcode une solution ?
Bonjour,
Ahhh désolé pour le retard, c'est la rentrée scolaire
je vois que tu commence à maitriser Mikropascal les commentaires sont bons,
pour le transfert du programme utilise ton pickit ou le jdm comme tu veux, après compilation mikropascal générera un fichier .hex alors ouvre le programmateur et ensuite choisi le type du µcontroleur et charge le fichier .hex qui se trouvera dans le dossier de ton projet c'est simple
pour le pullup c'est le registre OPTION qui controle ça par le bit RBPU
OPTION.RBPU := 0 ;


@+

Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres...
Revenir en haut | Permalien
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 19/09/2011 15:23  
RE : flowcode une solution ?
merci , mais c'est grace a toi que j'ais aussi évolué..(un peux)

Revenir en haut | Permalien
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 24/10/2011 18:42  
RE : flowcode une solution ?
la maquette fonctionne je suis entrain de faire le circuit imprimé
les premiers essaies semblent concluants , a un détail pres...
des que le volet (alors qu'il est en bas commence a monté , il s'arréte ?...
mais cela ne mle fait pas a tout les coups...?
parfois tout fonctionne correctement , c'est a dire
un appuie sur le BP descente le volet descend et s'arréte une seconde apres que le contact en bas est activé , (cela permet de fermer les lames de volet "ajourées" )
un appuie sur BP montée ,le volet monte et idem s'arréte des que le capteur haut est détecté.
a cela j'ais ajouté pour plus de sécurité un temps de fonctionnement montée et descente c'est a dire que le moteur ne fonctionnera pas plus de 23 secondes , si un capteur est vu avant il y'aura arrêt si par "accident" aucun capteurs n'est détecté il y'aura arr^ét quand même grace au temps de fonctionnement maximum.
mais ce soucis quand le volet est en bas et qu'il est commandé pour le haut m'ennuie
de temps en temps des que le capteur bas n'est plus activé , la commande haut (levée se coupe).... je ne vois pas ou ça "cloche"..désolé mais j'en appel a ton savoir si cela t'est possible
merci d'avance


Code :

prog.
program LEDINT;
var jeton, interuption: byte ;
i: integer;
procedure interrupt;
begin
interuption :=1;
portb.7:=0; /// SI FCourse haut stop montée
portb.5:=1; /// SI FCourse (s) ON ALLUME LA LED rouge (arrêt volet)
delay_ms(1000); /// 1 SECONDE (ferme les lames ajourées en FC bas)
portb.5:=0; /// ON RESET LA LED rouge (arrêt volet)
portb.6:=0; /// SI FCourse stop descente apres 1 seconde (retard)
INTCON:=$90;
end;
Procedure attente;
begin
for i:=0 to 20000 do
begin
delay_ms(1);
if interuption = 1 then break;
end;
interuption :=0;
end;
begin
jeton:=0;
interuption:=0;
trisa.0:=1; /// A0 EN ENTREE
trisa.1:=1; /// A1 EN ENTREE
trisb.0:=1; /// INT BO EN ENTREE
trisb.6:=0; /// B6 EN SORTIE
portb.6:=0; /// RESET position basse
trisb.7:=0; /// B7 en SORTIE
portb.7:=0; /// RESET position haute
trisb.5:=0; /// PORTB.5 EN SORTIE
portb.5:=0; /// LED rouge RESET
INTCON:=$90;
while true do
begin
if ((porta.0 = 1) and ((jeton = 0) OR (jeton = 2))) then
begin
portb.6:=1;
jeton:=1;
delay_ms(23000); /// temps de fonctionnement montée
portb.6:=0; /// arrêt descente du volet
end;
if ((porta.1 = 1) and ((jeton = 0) OR (jeton = 1)))then
begin
portb.7:=1;
jeton:=2;
delay_ms(23000); /// temps de fonctionnement decente
portb.7:=0; /// arrêt montée du volet
end;
end;
end.
Citation :
prog



Le schéma (en partie pour se repérer)


Uploaded with ImageShack.us


Edité par max le 24/10/2011 19:12
Revenir en haut | Permalien
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 26/10/2011 14:22  
RE : flowcode une solution ?
presque 800 lectures et pas un seul qui ne puisse répondre a la question ou est le "bug" de ce programme ?....
ok ,........ attendons le patron s'il repasse par la .

Revenir en haut | Permalien
Zimbabwe.png cccc
Newbie



Messages : 2
Inscrit(e) le: 22/03/2016
Posté le 22/03/2016 11:29  
RE : flowcode une solution ?

max a écrit :
ou est je la tête ?
apres "cojitation" (désolé je ne connais pas du tout la programmation en micropascal (mais ca commence a me parlé...)

alors si je veux allumée une led sur le portB5 ,lorsque l'interruption est la..et que celle ci s'éteigne au bout de 6 secondes...
voila ce qu'il faut faire comme modification.

mes commentaires sont bons ? (dans le programme)

autres chose , si je veux paramétrer des résistances en pull down sur les ports non utilisés ? quels sont les lignes de programme ?

et enfin..(désolé) comment tu fait pour programmer le microcontroleur avec micropascal ?
le soft a la possibilité de le faire , j'ais un pickit2 , mais le logiciel ne semble pas le detecter ?
j'ais aussi un programateur JDM (rs232)..

merci


-----------------------------------------------------------------------------------------------


Alors, tout d'abord j'aimerai monter une pétition ainsi qu'une levée de fonds pour pouvoir offrir à ce jeune individu défavorisé une éducation valable, et des cours de français, j'ai pris la liberté de corriger ce commentaire comme suit :


"Où ai-je la tête ?
Après "cogitation" (désolé, je ne connais pas du tout la programmation en microPascal (mais ça commence à me parler...))

Alors si je veux allumer une LED sur le port B5 ,lorsque l'interruption est là, et qu'elle s'éteigne au bout de 6 secondes...
Voilà ce qu'il faut modifier.

Mes commentaires sont-ils bons ? (dans le programme)

Autre chose: si je souhaite paramétrer des résistances en pull down sur les ports non-utilisés ? Quelles sont les lignes de programme ?

Et enfin..(désolé) comment fais-tu pour programmer le microcontrôleur avec micropascal ?
Le soft a la possibilité de le faire, j'ai un pickit2, mais le logiciel ne semble pas le détecter...
J'ai aussi un programmateur JDM (rs232)..

Merci"



Revenir en haut | Permalien
Zimbabwe.png cccc
Newbie



Messages : 2
Inscrit(e) le: 22/03/2016
Posté le 22/03/2016 11:29  
RE : flowcode une solution ?

max a écrit :
ou est je la tête ?
apres "cojitation" (désolé je ne connais pas du tout la programmation en micropascal (mais ca commence a me parlé...)

alors si je veux allumée une led sur le portB5 ,lorsque l'interruption est la..et que celle ci s'éteigne au bout de 6 secondes...
voila ce qu'il faut faire comme modification.

mes commentaires sont bons ? (dans le programme)

autres chose , si je veux paramétrer des résistances en pull down sur les ports non utilisés ? quels sont les lignes de programme ?

et enfin..(désolé) comment tu fait pour programmer le microcontroleur avec micropascal ?
le soft a la possibilité de le faire , j'ais un pickit2 , mais le logiciel ne semble pas le detecter ?
j'ais aussi un programateur JDM (rs232)..

merci


-----------------------------------------------------------------------------------------------


Alors, tout d'abord j'aimerai monter une pétition ainsi qu'une levée de fonds pour pouvoir offrir à ce jeune individu défavorisé une éducation valable, et des cours de français, j'ai pris la liberté de corriger ce commentaire comme suit :


"Où ai-je la tête ?
Après "cogitation" (désolé, je ne connais pas du tout la programmation en microPascal (mais ça commence à me parler...))

Alors si je veux allumer une LED sur le port B5 ,lorsque l'interruption est là, et qu'elle s'éteigne au bout de 6 secondes...
Voilà ce qu'il faut modifier.

Mes commentaires sont-ils bons ? (dans le programme)

Autre chose: si je souhaite paramétrer des résistances en pull down sur les ports non-utilisés ? Quelles sont les lignes de programme ?

Et enfin..(désolé) comment fais-tu pour programmer le microcontrôleur avec micropascal ?
Le soft a la possibilité de le faire, j'ai un pickit2, mais le logiciel ne semble pas le détecter...
J'ai aussi un programmateur JDM (rs232)..

Merci"



Revenir en haut | Permalien
France.png Claudine75
Member



Messages : 142
Inscrit(e) le: 26/11/2015
Posté le 02/11/2016 16:07  
RE : flowcode une solution ?
Je félicite beaucoup toutes les personnes qui veille au bon déroulement de ce FORUM purement sensationnel et intéressant.


voyance gratuite par email

Revenir en haut | Permalien

Haut de page

© 2017 Technologue pro, cours électricité électronique informatique · © 2007 - 2017 Technologue pro - Ressources pédagogiques pour l'enseignement technologique en Tunisie
Usage dans un cadre strictement académique

Technologue: cours en ligne gratuit en électricité, électronique, informatique industrielle et mécanique pour l'enseignement technologique en Tunisie et offre des cours en ligne en génie électrique, informatique, mécanique, une base de données de TP, projets fin d'études et un annuaire de ressources pédagogiques
Licence - Sitemap - Qui somme nous ? - confidentialité- Tunisie Index - Annuaire Tunisie -