Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Button et MCP23s17
folkeu08
Débutant
Débutant
Messages : 64
Âge : 59
Enregistré en : novembre 2017
Localisation : Ardennes (08)
Contact :

#1 Message par folkeu08 » lun. 19 août 2024 03:40

Bonjour,
J'essayue de me remettre au C et au PIC.
Pour sortir de la simple led à allumer, je passe par un MCP23s17. J'arrive à allumer les leds en sortie en l'indiquant en dur sans le soft.
Je suis passé à l'étape suivant à allumer la led qui correspond au même bit du button.
Et là, je calle !
J'ai repris vos bouts de code et les tutos, ca ne donne rien.
Je dois mal déclarer mon port D en entrée !
Je fais court car il est déjà bientôt 4h du mat et je coupe mes moteurs pour ce soir. Je oturne en rond avec ce truc. La nuit porte peut-être conseil.
Merci
François
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Button et MCP23s17
Jérémy
Administrateur du site
Administrateur du site
Messages : 2750
Âge : 46
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#2 Message par Jérémy » lun. 19 août 2024 09:17

Salut folkeu08,

J'ai regarder vite fait le code et le schéma .

C'est normal que rien ne fonctionne.

Ta boucle principale n'est jamais appelée ( void test) . elle est en commentaire. Même sans commentaire on appelle pas ça boucle principale, sinon on risque d'avoir des surprise de plantage. C'est la boucle principale qui appelle des fonctions.

De plus l'expander n'est pas bien configurer, Peut être que je ne l'ai pas vu mais par exemple la PIN reset de celui n'est jamais mis à 1 ?
Pareil pour la broche "CS" ( chip select)" qui doit etre à 0 pour activer le device.

Je ne vois rien non plus le SPI . On ne voit pas se que fais la fonction "expander" , je pense que c'est interne à mikroC ?

MISE A JOUR : tes interrupteurs sont aussi mal câblés. Ils doivent être à la masse avec les resistances de pull down et apres l'interrupteur on vient les mettre à Vcc . Actuellement quand le BP est ouvert tes entrées sont dans le vide.

Je ne vois pas la broche SCK clignoter. j'imagine que comme c'est une horloge on devrait observer un changement d'état cyclique ? avec un oscillo peut etre ?
Désolé je n'ai jamais fait de la simulation .

essaye de partir sur ces quelques infos cela devrait s'arranger !

A+
Jérémy
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Button et MCP23s17
folkeu08
Débutant
Débutant
Messages : 64
Âge : 59
Enregistré en : novembre 2017
Localisation : Ardennes (08)
Contact :

#3 Message par folkeu08 » lun. 19 août 2024 11:17

Bonjour Jeremy,

J'ai a revoir mes classiques ! Ca fait longtemps que j'ai pas touché à l'électronique.Je suis partis de ce scgéma pour mes boutons mais c'est faux donc : Image
C'est juste mes boutons mal câblés. Je les ai remis comme montré ici : Image
J'ai remis le source de l'aide des button de MikroC et ca fonctionne maintenant.
le MCP23S17 est normalement bien cablé car lorsque je lui dde en dur d'afficher par cette commande

Code : Tout sélectionner

Expander_Write_PortA(0, 0b10000000)
, il m'éclaire le bonne led.

Maintenant étape suivante, le MCP23s17 en entrée avec les switch pour piloter des leds en direct sur un port.
Est-il nécessaire d'activer les interruptions lorsque l'on appuie sur un button ?
François

Button et MCP23s17
LP_2
Amateur
Amateur
Messages : 141
Enregistré en : août 2022
Localisation : Haute-Loire

#4 Message par LP_2 » lun. 19 août 2024 11:27

Si tu as besoin d'une interruption, oui !
Par exemple pour éliminer les rebonds et les "parasites".
J'y arriverai . . .

Button et MCP23s17
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3256
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#5 Message par paulfjujo » lun. 19 août 2024 13:44

folkeu08 a écrit :Est-il nécessaire d'activer les interruptions lorsque l'on appuie sur un button ?
François


Pourquoi gerer des boutons (SW1 et SW2) de maniere differente ?

L'usage d'interruption pour la detection d'appui sur BP
est necessaire suivant l'utilisation qu'on en fait et du contexte ...
si on a besoin d'une grande reactivité (le minimum de temps de reponse à l'appui sur un BP)
et si la boucle principale du programme a une grande durée ( grande = >1 sec)

par exemple, si elle dure 2sec ,
sans interruption il faudra appuyer ou relacher le BP pendant 2sec dans le pire des cas ..
pour tester l'etat des boutons..en mode pooling

ou sinon on bloque l'avancement du programme
pendant une boucle de test de l'etat des boutons
et on ne fait rien d'autre ....ou eventuellement faire un affichage LCD , à la place du delai de scrutation
pendant cette boucle d'attente Test appui BP

nota:
il faut un delai minimum de 20 à 50mS pour supprimer les rebonds de contacts
même avec une detection par interruption !
( ou compter un certain nombre de fois que l'etat logique est stable pour le declarer valable)
* le MCP2317 a une sortie specifique INT pour declarer un changement d'etat sur son port de lecture
Aide toi, le ciel ou FantasPic t'aidera

Button et MCP23s17
folkeu08
Débutant
Débutant
Messages : 64
Âge : 59
Enregistré en : novembre 2017
Localisation : Ardennes (08)
Contact :

#6 Message par folkeu08 » lun. 19 août 2024 14:58

Bonjour LP_2 et paulfjujo,
A partir de vos information, je pense donc avoir besoin des interruptions déclenchées à partir du MCP23s17.
Le projet est de piloter à partir des starts "machine" d'une console (de mélange audio) pour radio (FM) Imagetoute la signalisation antenne ("on air") et de déclencher également les starts des platines CD virtuelles de Mixxxx (https://mixxx.org/).
Je n'ai jamais joué avec les interruptions !
Voici mon schéma du projet (mais certainement avec des erreurs puisque je me suis trompé dans le schéma de proteus ! pour les buttons).
Interface radio.png

Où dois-je connecter l'interruption du MCP23s09 sur le 18f4550 ?
Je vais devoir certainement aussi connecter les start machine sur un MCP23s09 our tout regrouper sur un MCP23s17 et la seconde question, est-ce que je dispose de deux entrées d'interruption distinctes sur le 18f4550 ?
Merci
François

Je me reponds pour votre validation. Il existe bien plusieurs broches d'interruptions sur le 18f4550.
Je serai pour faire une boucle qui scrute continuellement le port B où sont connectées les machines, sollicitées régulièrement. Je ne mettrai qu'une interruption sur les micros. Ce qui fait qu'il me faut redistribuer mon port B pour libérer soit int0, int1 ou int2.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Button et MCP23s17
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3256
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#7 Message par paulfjujo » lun. 19 août 2024 16:33

Ce qui fait qu'il me faut redistribuer mon port B pour libérer soit int0, int1 ou int2.


oui, je le pense aussi,
car sur ce MCU ,il n'y a que le PORTB qui peut etre assigné
nota : sur les nouveaux PIC, comme le 18Fx7K2 on peut changer de port
ou utiliser d'autres pins ..


Où dois-je connecter l'interruption du MCP23s09 sur le 18f4550 ?
si 1 seule source d'interrupt ... RB0
l'interrupt la plus directe
Aide toi, le ciel ou FantasPic t'aidera

Button et MCP23s17
folkeu08
Débutant
Débutant
Messages : 64
Âge : 59
Enregistré en : novembre 2017
Localisation : Ardennes (08)
Contact :

#8 Message par folkeu08 » lun. 19 août 2024 17:44

Bonjour paulfjujo,

nota : sur les nouveaux PIC, comme le 18Fx7K2 on peut changer de port

Je veux bien utiliser un autre PIC tant que j'ai un port USB pour dialoguer avec Mixx pour faire reconnaitre mon interface comme clavier en mode HID

ou utiliser d'autres pins ..

Justement Int0 est aussi sur la pin hardware du SPI, je pensais aussi modifier mon début de code pour utiliser la fonction "soft_spi" de mikroC pour assigner le dialogue spi sur d'autres pins disponibles du 4550.

-> Je regarde donc à une autre référence de pic en x7K2
François

=> J'ai trouvé le PIC18F67K22 mais le PIC18F65K22 devrait me suffire amplement en mémoire (à voir en fonction de prix de vente !)
Je n'ai jamais soudé aussi petit et j'ai pas le matos pour ! D'autres questions arriveront donc avec quel matos souder ces bêtes ? :mur:
Idem pour programmer ces bestioles, j'ai de quoi faire en PDip mais pas en boitier QFN. -> Je veux bien un schéma de base pour lui injecter le prog en 'In Situe". Merci !

Button et MCP23s17
paulfjujo
Avatar de l’utilisateur
Maître
Maître
Messages : 3256
Âge : 75
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#9 Message par paulfjujo » lun. 19 août 2024 19:22

oops

PIC18Fx7K42 et non k22
Aide toi, le ciel ou FantasPic t'aidera

Button et MCP23s17
folkeu08
Débutant
Débutant
Messages : 64
Âge : 59
Enregistré en : novembre 2017
Localisation : Ardennes (08)
Contact :

#10 Message par folkeu08 » lun. 19 août 2024 19:57

Je repars en recherche mais j'ai aussi trouvé un
* PIC18F47K40 qui reste en PDIP et le SPI est remapable (d'après le data). -> Cekui-ci est simulable dans proteus
* PIC18F47K42 qui reste en PDIP et le SPI est remapable (d'après le data). -> Cekui-ci n'est pas simulable dans proteus car n'existe pas dans la bibliothèque.

Est-ce génant que j'utilise un PIC18F47K40 ?


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 6 invités