Sujet Le pub des programmeurs
- 1 925 réponses
- 117 participants
- 123 031 vues
- 130 followers
Anonyme
521410
Sujet de la discussion Posté le 25/08/2005 à 17:21:03Le pub des programmeurs
Salut y a des programeurs sur AF si oui vous bossez sous quoi ?
redpill
2341
AFicionado·a
Membre depuis 17 ans
1861 Posté le 13/01/2020 à 22:34:39
une methode qui marche super bien je trouve c'est le debounce qu'on trouve sur les modules mutable instruments. une loop a 1Khz et un ring buffer traité dans la while loop.
rumorofsmoke.github.io/
Anonyme
30851
1862 Posté le 13/01/2020 à 22:47:23
Pouet > Non dans l'appliction finale, le cpu fera autre chose durant ce laps de temps (la je cherche juste à valider l'idée)
redpill > Merci pour l'idée du debounce ! Je n'y avais pas pensé en effet ca va m'être utile. J'avais essayé de basculer le tout dans la fonction d'interruption, mais ca ne fonctionnais pas mieux.
redpill > Merci pour l'idée du debounce ! Je n'y avais pas pensé en effet ca va m'être utile. J'avais essayé de basculer le tout dans la fonction d'interruption, mais ca ne fonctionnais pas mieux.
redpill
2341
AFicionado·a
Membre depuis 17 ans
1863 Posté le 13/01/2020 à 22:54:18
essayes peut etre plutot un truc comme ca.
toto = 0;
main()
{
pin_setup(bouton);
interuption_setup(#pin)
while(
new_toto = toto; //fais le code uniquement si toto a changé
if(new_toto != old_toto)
{
send_to_UART(toto);
old_toto = new_toto; //pour éviter l'envoi continuel
}
}
interuption_pin{
clean_inter; //important !!
if(PIN == 0) toto = 0; //lis l'état de la pin
else toto = 1;
}
rumorofsmoke.github.io/
[ Dernière édition du message le 13/01/2020 à 23:03:24 ]
static volatile
1793
AFicionado·a
Membre depuis 7 ans
1864 Posté le 14/01/2020 à 09:50:49
Citation de Patrick :
J'ai paramétré le type de detection sur front montant et descendant
Le code tel quel fonctionne à peu près. C'est à dire que quand je presse le bouton, j'ai sur mon terminal "B=1" mais quand je le relache... aussi. Je ne comprends pas pourquoi... Quelqu'un a une idée ?
Si tu n'as besoin de l'interruption que sur un seul front (montant ou descendant), pourquoi diable configurer l'EXTI pour faire péter une interruption sur les deux fronts?
Sinon, +1 pour le debounce aussi, quoiqu'il faudrait avoir le schéma de la connexion du bouton à la GPIO pour savoir si c'est vraiment nécessaire.
Resistance is not futile... it's voltage divided by current
miles1981
8345
Je poste, donc je suis
Membre depuis 20 ans
1865 Posté le 14/01/2020 à 10:27:41
Citation de aaB :
Citation de Patrick :
J'ai paramétré le type de detection sur front montant et descendant
Le code tel quel fonctionne à peu près. C'est à dire que quand je presse le bouton, j'ai sur mon terminal "B=1" mais quand je le relache... aussi. Je ne comprends pas pourquoi... Quelqu'un a une idée ?
Si tu n'as besoin de l'interruption que sur un seul front (montant ou descendant), pourquoi diable configurer l'EXTI pour faire péter une interruption sur les deux fronts?
Sinon, +1 pour le debounce aussi, quoiqu'il faudrait avoir le schéma de la connexion du bouton à la GPIO pour savoir si c'est vraiment nécessaire.
C'est clair, je comprends pas pourquoi tu es etonne d'avoir les 2 quand tu demandes a avoir les deux ?
Audio Toolkit: http://www.audio-tk.com/
Anonyme
30851
1866 Posté le 14/01/2020 à 10:33:27
aaB > non je voudrais avoir une interruption lorsque le bouton est appuyé puis quand il est relâché, pour faire des traitements diffèrents dans les deux cas. Pour ça j'ai essayé de checker l'interruption ET la valeur du bouton mais ça ne fonctionne pas (ça me renvoie toujours le même résultat c'est ce que je décris dans mon premier message)
Miles > ce qui m'étonne c'est d'avoir la même valeur alors que je m'attends dans le premier cas (bouton appuyé) je m'attends a recevoir B=1 et dans le second (bouton relâché) B=0 mais c'est peut être un problème de debouncing
Miles > ce qui m'étonne c'est d'avoir la même valeur alors que je m'attends dans le premier cas (bouton appuyé) je m'attends a recevoir B=1 et dans le second (bouton relâché) B=0 mais c'est peut être un problème de debouncing
static volatile
1793
AFicionado·a
Membre depuis 7 ans
1867 Posté le 14/01/2020 à 10:39:51
Dans ton code, tu initialises toto à 1, mais je ne vois nulle part de code qui modifie cette valeur.
La manière habituelle pour ce genre de truc, c'est d'aller lire l'état de la pin dans le registre de la GPIO pour déterminer si ton interruption a pété sur un front montant ou descendant.
Il devrait y avoir quelque part une ligne de code qui assigne à toto la valeur du bit adéquat dans le registre d'état de la GPIO.
La manière habituelle pour ce genre de truc, c'est d'aller lire l'état de la pin dans le registre de la GPIO pour déterminer si ton interruption a pété sur un front montant ou descendant.
Il devrait y avoir quelque part une ligne de code qui assigne à toto la valeur du bit adéquat dans le registre d'état de la GPIO.
Resistance is not futile... it's voltage divided by current
redpill
2341
AFicionado·a
Membre depuis 17 ans
1868 Posté le 14/01/2020 à 13:47:44
un truc qui n'engage que moi, tu devrais peut etre coder sans les librairies tiers genre HAL, cubeX et compagnie. Tu comprendrais bien mieux ce que tu fais et ce qui se passe. C'est pas plus compliqué, c'est bien plus formateur et la methode est ensuite transposable a tout les micros que tu vas utilisé.
rumorofsmoke.github.io/
miles1981
8345
Je poste, donc je suis
Membre depuis 20 ans
1869 Posté le 14/01/2020 à 17:37:20
Citation de aaB :
Dans ton code, tu initialises toto à 1, mais je ne vois nulle part de code qui modifie cette valeur.
La manière habituelle pour ce genre de truc, c'est d'aller lire l'état de la pin dans le registre de la GPIO pour déterminer si ton interruption a pété sur un front montant ou descendant.
C'est ce qui a l'air d'etre fait, le toto n'est utilise que pour transmettre la valeur une fois et la pin est lue pour verifier.
if (toto && !HAL_GPIO_ReadPin(B1_Pin, B1_GPIO_Port))
{
HAL_UART_Transmit(&huart2, "B=0\r\n", 6, 10);
}
toto = 0;
Audio Toolkit: http://www.audio-tk.com/
[ Dernière édition du message le 14/01/2020 à 17:37:54 ]
miles1981
8345
Je poste, donc je suis
Membre depuis 20 ans
1870 Posté le 14/01/2020 à 17:40:13
Vu que HAL_GPIO_ReadPin retourne un enum, je comparerai directement a l'enum pour etre sur de ce que je fais. On ne sait jamais.
Audio Toolkit: http://www.audio-tk.com/
- < Liste des sujets
- Charte