niveau du serial tx?

Bonjour a tous

j'aimerais savoir comment on peut déterminer si il y'a une entrée de bits, dans mon port RX1, donc une

succession de valeurs 5 ou 0 V, je parle bien du niveau de l'entrée et pas de la présence de données dans

le buffer, et aussi comment savoir que cette entrée est au niveau 0V.

Faut t'il la traiter comme une entrée digitale normale en lui attribuant un pin IN, je pense que c'est déjà

fait dans le fichier hardware, non?

Bonjour,

Il suffit de faire un digitalRead(0) mais je ne vois pas bien ce que tu vas en tirer.

C'est pour la surveillance d'un bus qui doit être au niveau bas pendant au moins 2 ms pour que je sois sur

qu'il soit libre, donc je place la valeur de retour de digitalread(0) dans une variable et je la teste? j je vais essayer, je te remercie de ta réponse rapide

Tu n'as pas besoin de placer la valeur dans une variable, tu peux la tester directement. Par exemple:

if (digitalRead(0)==LOW)

Mais tu n'auras qu'une valeur instantanée, il faut répéter le test pendant 2 ms.

Merci a tous les deux pour vos explications, j'ais fait un calcul de la durée d"instruction d'une

incrémentation d'une variable dans une boucle for pour obtenir mes 2 ms, tout en surveillant mon Rx, ça a

l'air de marcher, peut être vais je me pencher sur l'utilisation d'une interruption sur changement de

niveau,ça fait plus pros et ça me rappelleras mes cours de PIC.

à Kamill Pour poursuivre le concours d'optimisation mes maigres moyens me permettent (je saute sur l'occase) de dire qu'on peut remplacer :

if (digitalRead(0)==LOW)

par

if (~digitalRead(0) )

On doit gagner quelques cycles horloges :D

Sinon pour les interruptions PCINT j'ai mis en forme mes notes perso : http://forum.arduino.cc/index.php?topic=100906.0

Bonjour 68tjs,

Ce serait plutot

if (!digitalRead(0))

Je ne suis pas sur que ça gagne quelques cycles, car un compilateur digne de ce nom :) doit optimiser quand il voit une comparaison avec une constante 0

Bonjour, la confusion "~" et "!" n'a ... d'égale que la confusion "=" et "==" une grosse perte de temps pour un petit instant d'inattention

OK je note, Si c'est vous qui le dites je prend sur parole.

Mais quand même bien que l'assembleur cause clairement je ne comprends pas tout. Le résultat de la condition dans le if c'est : - si ce qui est entre parenthèse est égal à 0 le résultat logique est faux - si ce qui est entre parenthèse est différent de 0 (quelque soit la valeur positive ou négative) le résultat est vrai. Indépendamment des optimisations du compilateur que je ne connais pas dans le détail, si je fourni au if un résultat déjà calculé je devrais lui mâcher le travail et donc gagner quelque chose (toujours sans faire intervenir les optimisations).

A titre personnel (il ne faut oublier les formules de précautions et sortir le parapluie) je considère que moins je donne à optimiser au compilateur plus sa tâche sera facilitée et mieux il fera mieux ce qui lui reste à optimiser.

C'est toujours cette démarche que j'ai appliquée en électronique avec les logiciels de simulation et c'était payant à 100 %. Les compilateurs je ne sais pas comment ils fonctionnent mais j'ai l'intime conviction que grosso modo la problématique est la même.

Je serais curieux de voir si on trouve une différence avec les gros programmes où le compilateur à beaucoup de travail a effectuer.

Je ne parle pas pas de "LOW" ou "HIGH" qui sont des arduineries ou plutôt une wiring_neries. Je n'ai strictement rien à faire de Wiring/Arduino, je me met, dans la mesure de mes moyens, dans un cas général.

Je parle du principe de mâcher le travail du compilateur en lui fournissant directement le résultat de l'égalité plutôt que de lui demander de le faire. Et j'ajoutais que plus on lui facilite la tâche plus il aura de facilité à mieux optimiser ce qui reste à optimiser.

Je ne comprend pas cette histoire "d'environnement de dev strict". Strict cela veut dire quoi ? Ce que j'ai compris c'est que ce qu'il y a dans les parenthèses du if c'est un booléen : c'est vrai ou c'est faux. Faux en C, et sans doute dans d'autres langages, par convention corespond à 0 et vrai, toujours par convention, correspond à toutes les autres valeurs. Et ça si j'ai bien compris c'est dans la norme du C/C++. En quoi la notion de strict se branche dessus ?

Nb le parapluie c'est du deuxième degrés. C'est par précaution pour ne pas être accusé de vouloir imposer un point de vue comme cela m'est arrivé alors que je n'exprimais qu'un avis personnel.

Je parlais d'environnements professionnels où certaines règles de production sont imposées afin de garantir la conformité et la qualité du produit logiciel.

Ce forum n'est pas un forum pour les pros et les pros qui sont ici savent ce qu'ils doivent faire en environnement pro et culture d'entreprise. Si on veut rester cohérent avec tes propos il faut mettre l'IDE arduino. à la poubelle Rien qu'un point : il obligatoire de prédéclarer les fonctions avant de les utiliser, l'IDE arduino fait le travail en douce SANS qu'on puisse vérifier que le travail est bien fait : il est à bannir. Personnellement je n'ai pas compris cet extrèmisme dans la simplification : dans n'importe quel tuto d'initiation au C on trouve cette information. c'est prendre les artistes (les premiers destinataires de Wiring) pour des boulets.

Pour le reste tu es en train de me dire que malgré qu'il y ait des spécifications approuvées par des organismes de normalisation les concepteurs de compilateurs n'en font qu'à leur tête (ou comme ils peuvent). Bref c'est le bor*el.

Bon on s'arréter là. Trop de justification tue la justification.

Je vais donc suivre des règles strictes au sein de mon entreprise. Je vais réunir l'ensemble du personnel : c'est à dire moi et moi.

Aprés une discussion entre moi et moi, qui je l'espère ne sera pas trop houleuse, nous allons décider de mâcher le travail au compilateur chaque fois que ce sera possible. Appliquant ainsi des règles apprises dans un autre domaine de la Physique.