Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

detection d'un front et incrementation d'un compteur

70 views
Skip to first unread message

michel hindy

unread,
Jul 25, 2002, 11:59:07 AM7/25/02
to
Boujour,
est ce quelque pourrais me donner un bout de code
qui detecte un front descendant.
en fait je ne suis pas tres fort en C
donc soyez sympa
merci

Erwann ABALEA

unread,
Jul 25, 2002, 2:15:30 PM7/25/02
to
On 25 Jul 2002, michel hindy wrote:

> est ce quelque pourrais me donner un bout de code
> qui detecte un front descendant.

De tête (sans jeu de mot):

-----
#include <stdio.h>

/* 1024, ça devrait être suffisant pour saisir un peu de texte */
#define BUFSIZE 1024

int main(void)
{
char saisie[BUFSIZE];
/* Par défaut, on n'a pas de front descendant */
int frontdescendant=0;

/* On s'affranchit des fflush() */
setbuf(stdout, NULL);

/* Demandons à l'utilisateur comment est son front... */
printf("Comment est votre front?");
fgets(saisie, sizeof saisie, stdin);
if (saisie[strlen(saisie)] != '\n')
{
/* Rhaaa... Il a voulu déborder du buffer... Heureusement que fgets()
a fait attention... */
printf("Si grand que ca, vous etes sur?\n");
}
else
{
/* On supprime le '\n' final, et on compare */
saisie[strlen(saisie)]='\0';
if (!strcmp(saisie, "descendant"))
{
/* C'est bon, le front est descendant! */
frontdescendant=1;
/* ... on peut ajouter d'autres trucs à faire ... */
}
}
return 0;
}
-----

Ca marche aussi avec les front bas, dégarnis, ...

> en fait je ne suis pas tres fort en C

Je veux bien le croire. Tu débutes la programmation aussi, je me trompe?

> donc soyez sympa

On peut bien rigoler un peu, non? ;)

Bon. Sans rigoler, il faudrait plus d'explication, au moins pour te
rediriger vers le bon newsgroup, puisque je crois comprendre que ta
question ne concerne pas le *langage* C, mais soit de l'algorithmique,
soit du système, soit du matériel... Explique donc un peu mieux ton
problème, et on t'enverra vers les gens qui savent.

--
Erwann ABALEA <erw...@abalea.com> - RSA PGP Key ID: 0x2D0EABD5
-----
``Average programmers should be rounded up and placed in internment
camps to keep them away from keyboards.''
Well known Linux personage

Emmanuel Delahaye

unread,
Jul 25, 2002, 4:17:02 PM7/25/02
to
In 'fr.comp.lang.c', mich...@caramail.com (michel hindy) wrote in
news:8e91b52b.0207...@posting.google.com:

> est ce quelque pourrais me donner un bout de code
> qui detecte un front descendant.

J'ai rien compris.

> en fait je ne suis pas tres fort en C
> donc soyez sympa

Alors tu postes ton code, et on t'aide ą le mettre au point.

--
-ed- emdel at noos.fr
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
C-library: http://www.dinkumware.com/htm_cl/index.html
"Mal nommer les choses c'est ajouter du malheur au monde."
Albert Camus.

Le Thioud

unread,
Jul 25, 2002, 5:13:08 PM7/25/02
to
Emmanuel Delahaye wrote:

> In 'fr.comp.lang.c', mich...@caramail.com (michel hindy) wrote in
> news:8e91b52b.0207...@posting.google.com:
>
>> est ce quelque pourrais me donner un bout de code
>> qui detecte un front descendant.
>

<HS>
je te filerai pas le code, parce que:

1_ il vaut mieux que tu apprennes un peu (cf. liens donnes par E. Delahaye
en fin de message) et experimentes par toi-meme ,
2_ je suis a peu pres aussi debutant que toi,
3_ si un codeur en langage C veut bien traduire ce que je decris en
francais ci-apres, ce sera 1000 fois mieux que ce que je pourrais poster.

Donc, un front descendant ca peut aussi se decrire comme cela (methode par
scrutation ou "polling" comme disent les grands-bretons):

front_dexcendant vaut faux
initialiser compteur_front
faire tant que front_descendant vaut faux
{
si variable_a_detecter est au niveau haut
{
variable_haut vaut vrai
}
sinon
{
si variable_haut vaut vrai
{
mettre front_descendant a vrai
}
}
}
compteur_front vaut compteur_front + 1


Attention, ne fonctionne pour la detection que d'un seul front descendant.
Tous les noms avec un _ sont des variables, et variable_a_detecter doit
representer un signal, si je ne m'abuse (?)....

PS: je poste du <HS> parce que le sujet me semble tellement a la frontiere
entre pleins de domaines, que le pauvre Michel risque de se faire jeter de
partout.

<\HS>

Frédéric JARDON

unread,
Jul 26, 2002, 3:40:44 AM7/26/02
to
J'ai l'impression que tu essaies de programmer un microcontroleur, ou du
moins un composant electronique. Peut etre meme une machine embarquee.
Saches que le langage C utilise dans ce cas est tres particulier et si tu ne
donnes pas plus d'information personne ne pourra t'aider.

Ce newsgroup s'occupe du C comme definit par la norme ANSI. Le langage C que
tu utilises est surement un langage qui en derive mais n'est pas dans la
norme. (notamment parceque le concept de printf/scanf sur un uC n'est pas
clair ;) )

Frederic Jardon

"michel hindy" <mich...@caramail.com> a écrit dans le message de news:
8e91b52b.0207...@posting.google.com...

Emmanuel Delahaye

unread,
Jul 26, 2002, 11:56:53 AM7/26/02
to
In 'fr.comp.lang.c', "Frédéric JARDON" <frederi...@libertysurf.fr>
wrote in news:ahqudi$oc9$1...@wanadoo.fr:

> Ce newsgroup s'occupe du C comme definit par la norme ANSI. Le langage
> C que tu utilises est surement un langage qui en derive mais n'est pas
> dans la norme. (notamment parceque le concept de printf/scanf sur un
> uC n'est pas clair ;) )

Bah il suffit (!) implémenter putchar() et getchar() (ou les fonctions de
bas niveau adéquates) selon les spécifs de la norme, et ensuite ça roule.
Un port série bien configuré est parfait pour ça. Une vieux PC avec un
vieux Procomm ou Qmodem, et on a un système interactif impéccable pour pas
cher.

Cependant, les fonctions printf() & co sont assez complexes, et peuvent
consommer pas mal de pile si rare sur un µC. A manier avec précaution.
Attention aussi à ne pas ralentir tout le bazar par ce qu'on passe son
temps à scruter l'UART. Se renseigner sur l'emission sous IT.

psk

unread,
Jul 27, 2002, 7:43:48 PM7/27/02
to
mich...@caramail.com (michel hindy) wrote in message news:<8e91b52b.0207...@posting.google.com>...

En fait tu auras compris en lisant tous ces reposts que personne n'a
vraiment compris ce que tu voulais faire, et que bien que la bonne
volonté ne manque pas pour t'aider, nous avons vraiment besoin de plus
de précisions ;)

-_-_-_-_-_-_-_-_-_-_-_-_-

psk <p...@akl.fr.st>
www.akl.fr.st www.gtr-valence.fr.fm

michel hindy

unread,
Aug 1, 2002, 9:21:55 AM8/1/02
to
p...@akl.fr.st (psk) wrote in message news:<5a90c7df.02072...@posting.google.com>...

> mich...@caramail.com (michel hindy) wrote in message news:<8e91b52b.0207...@posting.google.com>...
> > Boujour,
> > est ce quelque pourrais me donner un bout de code
> > qui detecte un front descendant.
> > en fait je ne suis pas tres fort en C
> > donc soyez sympa
> > merci
>
> En fait tu auras compris en lisant tous ces reposts que personne n'a
> vraiment compris ce que tu voulais faire, et que bien que la bonne
> volonté ne manque pas pour t'aider, nous avons vraiment besoin de plus
> de précisions ;)

en fait, j'aimerais travailler sur microcontroller
il s'agit de détecter des front descandant en fonction de deux
entrées.
la première est un potentiel haut, la deuxième entrée passe de 5 à 0.
il s'agit de calculer le nombre de front descandant et mettre ce
nombre en memoire afin de le transmettre par liaison série.
voilà
le microcontrolleur est 89C51RD2
merci

Emmanuel Delahaye

unread,
Aug 1, 2002, 1:34:51 PM8/1/02
to
In 'fr.comp.lang.c', mich...@caramail.com (michel hindy) wrote in
news:8e91b52b.0208...@posting.google.com:

> en fait, j'aimerais travailler sur microcontroller
> il s'agit de détecter des front descandant en fonction de deux
> entrées.
> la première est un potentiel haut, la deuxième entrée passe de 5 à 0.
> il s'agit de calculer le nombre de front descandant et mettre ce
> nombre en memoire afin de le transmettre par liaison série.
> voilà
> le microcontrolleur est 89C51RD2
> merci

C'est une question d'algorithme, pas du tout de langage C.

<HS>
Par définition, on ne peut pas detecter de front descendant par scrutation
matérielle (nota, même une interruption "sur front" est detectée par
polling)

Tout ce qu'on peut faire c'est une lecture périodique d'un état, et par
comparaison avec l'état précédant, déterminer que l'état a changé (front
montant ou descendant). Mais ce sera toujours en retard par rapport à la
réalité.

à la barbare:

{
int mem_sts = -1;

for (;;)
{
int status = get_sts();

if (mem_sts != sts)
{
mem_sts = sts;

if (mem_sts)
{
puts ("front montant");
}
else
{
puts ("front descendant");
}
}
}
}

</>

Tobias Oed

unread,
Aug 1, 2002, 1:48:19 PM8/1/02
to
Emmanuel Delahaye wrote:

> In 'fr.comp.lang.c', mich...@caramail.com (michel hindy) wrote in
> news:8e91b52b.0208...@posting.google.com:
>
>> en fait, j'aimerais travailler sur microcontroller
>> il s'agit de détecter des front descandant en fonction de deux
>> entrées.
>> la première est un potentiel haut, la deuxième entrée passe de 5 à 0.
>> il s'agit de calculer le nombre de front descandant et mettre ce
>> nombre en memoire afin de le transmettre par liaison série.
>> voilà
>> le microcontrolleur est 89C51RD2
>> merci
>
> C'est une question d'algorithme, pas du tout de langage C.
>
> <HS>
> Par définition, on ne peut pas detecter de front descendant par scrutation
> matérielle (nota, même une interruption "sur front" est detectée par
> polling)
>
> Tout ce qu'on peut faire c'est une lecture périodique d'un état, et par
> comparaison avec l'état précédant, déterminer que l'état a changé (front
> montant ou descendant). Mais ce sera toujours en retard par rapport à la
> réalité.
>
> à la barbare:
>
> {
> int mem_sts = -1;

amho int mem_sts = get_sts(); sinon tu va tjs detecter un front a la
premiere iteration de la boucle.
Tobias.

> for (;;)
> {
> int status = get_sts();
>
> if (mem_sts != sts)
> {
> mem_sts = sts;
>
> if (mem_sts)
> {
> puts ("front montant");
> }
> else
> {
> puts ("front descendant");
> }
> }
> }
> }
>
> </>
>

--
unix http://www.faqs.org/faqs/by-newsgroup/comp/comp.unix.programmer.html
clc http://www.eskimo.com/~scs/C-faq/top.html
fclc (french): http://www.isty-info.uvsq.fr/~rumeau/fclc/

Emmanuel Delahaye

unread,
Aug 1, 2002, 2:46:49 PM8/1/02
to
In 'fr.comp.lang.c', Tobias Oed <tob...@physics.odu.edu> wrote in
news:aibsns$133i8h$2...@ID-97389.news.dfncis.de:

>> {
>> int mem_sts = -1;
>
> amho int mem_sts = get_sts(); sinon tu va tjs detecter un front a la
> premiere iteration de la boucle.

C'est fait pour!

Tobias Oed

unread,
Aug 1, 2002, 2:56:17 PM8/1/02
to
Emmanuel Delahaye wrote:

> In 'fr.comp.lang.c', Tobias Oed <tob...@physics.odu.edu> wrote in
> news:aibsns$133i8h$2...@ID-97389.news.dfncis.de:
>
>>> {
>>> int mem_sts = -1;
>>
>> amho int mem_sts = get_sts(); sinon tu va tjs detecter un front a la
>> premiere iteration de la boucle.
>
> C'est fait pour!

Ah? J'ai encore du rater un episode...
Tobias.

Emmanuel Delahaye

unread,
Aug 1, 2002, 3:27:51 PM8/1/02
to
In 'fr.comp.lang.c', Tobias Oed <tob...@physics.odu.edu> wrote in
news:aic0na$12qgor$1...@ID-97389.news.dfncis.de:

> Emmanuel Delahaye wrote:
>
>> In 'fr.comp.lang.c', Tobias Oed <tob...@physics.odu.edu> wrote in
>> news:aibsns$133i8h$2...@ID-97389.news.dfncis.de:
>>
>>>> {
>>>> int mem_sts = -1;
>>>
>>> amho int mem_sts = get_sts(); sinon tu va tjs detecter un front a la
>>> premiere iteration de la boucle.
>>
>> C'est fait pour!
>
> Ah? J'ai encore du rater un episode...

Disons que c'est une pratique courante chez moi. J'aime bien qu'au
démarrage, les machines à polling indiquent leur état réel. C'est pour ça
que je choisis un état initial différent des états possible. Comme ça, je
suis sûr d'avoir une information tout de suite.

0 new messages