Sortie du 18F4550

appolofrance Messages postés 46 Date d'inscription mercredi 8 mai 2002 Statut Membre Dernière intervention 26 mars 2008 - 21 mars 2008 à 00:41
 Profil bloqué - 26 mars 2008 à 18:34
Bonjour ,

Je souhaite activer une sortie du pic 18F4550 avec un bouton,
comment l'ecrire en VB ?

Avec le Programme de Rylryl  il faut cliquer sur les led ...
'*****************************************************************
' Controle des 16 Sorties du PIC18F4550
'*****************************************************************
Private Sub Led_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)    If Led(Index).Picture ImageListe.ListImages.Item(3).Picture Then  ' Si Led OFF
        If Index <= 7 Then                          ' Si Led 1..8            PortValA PortValA + Led(Index).Tag    ' Sortie 1, 2 ...,8 1
        Else                                        ' Si Led 9..16            PortValB PortValB + Led(Index).Tag    ' Sortie 9, 10 ...,16 1
        End If
        Led(Index).Picture = ImageListe.ListImages.Item(1).Picture  ' Led (ON)
    Else                                                                ' Si Led = ON
        If Index <= 7 Then          ' Si Led 1..8            PortValA PortValA - Led(Index).Tag    ' Sortie 1, 2 ...,8 0
        Else                        ' Si Led 9..16            PortValB PortValB - Led(Index).Tag    ' Sortie 9, 10 ...,16 0
        End If
        Led(Index).Picture = ImageListe.ListImages.Item(3).Picture  ' Led (OFF)
    End If
       Buffer(0) 0                 ' REPORT-ID 0
   Buffer(1) = WritePortPIC      ' (Commande) d'écriture sur les 16 sorties du PIC18
   Buffer(2) = PortValA          ' Sorties 1..8 du PIC18
   Buffer(3) = PortValB          ' Sorties 9..16 du PIC18
   hidWriteEx VendorID, ProductID, Buffer(0) ' Envoyer la commande
End Sub
'*****************************************************************
Apparement une tranformation du programme ci-dessus est necessaire.

Merci encore pour le coup de pouce !
Paul
appolofrance

12 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 mars 2008 à 10:47
je pense que tu peux passer par un composant MsComm32 pour jouer avec tes ports paralleles et ports COM...

a voir ce que fait hidWriteEx
0
appolofrance Messages postés 46 Date d'inscription mercredi 8 mai 2002 Statut Membre Dernière intervention 26 mars 2008 5
21 mars 2008 à 11:41
le programme est fonctionnel mais je souhaite remplacer le code ci-dessus pour


activer ou desactiver une seule sortie avec un bouton.

Merci.
Paul



appolofrance
0
Profil bloqué
21 mars 2008 à 21:39
Une piste sans certitude que je te fournis
Le 18F4550 est d'après ce que j'ai compris avec le code un interface programmable avec 2 ports 8 bits en sortie
Je pense que la valeur Led(Index).Tag doit contenir l'activation ou non de l'allumage de la LED
Soit B0 à B7 les 8 LEDS du port A de ton 18F4550 par exemple
Pour allumer la LED B3 il faut surement mettre à 1 le bit 3 du mot de 8 bits qui représente Led(index).Tag et le mettre à 0 pour l'éteindre.
Ce mode de fonctionnement rappelle les PIA ( adaptateur d'interface parrallèle) que l'on pouvait coupler avec les microprocesseurs 6809 il y a un peu plus de 20 ans environ.
Cette réponse est sous toute réserve et je décline  toute responsabilité en cas de dommage matériel

bonne prog

GRENIER Alain
0
Profil bloqué
21 mars 2008 à 21:42
J'ai vu que tu avais posé la question pour lire une entrée sur ce même circuit
Son fonctionnement confirme mon précédent post

GRENIER Alain
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
appolofrance Messages postés 46 Date d'inscription mercredi 8 mai 2002 Statut Membre Dernière intervention 26 mars 2008 5
22 mars 2008 à 21:51
Pas de crainte pour me materiel je suis prudent !

Je n' ais pas reussit à piloter ma sortie ....je continue.

appolofrance
0
appolofrance Messages postés 46 Date d'inscription mercredi 8 mai 2002 Statut Membre Dernière intervention 26 mars 2008 5
23 mars 2008 à 17:45
PortValA = PortValA + 0 ' pour activer la sortie 1 du pic de 1 à 8

PortValB = PortValB + 0 ' pour activer la sortie 9 du pic de 9 à 16

PortValA = PortValA - 0 ' pour désactiver la sortie 1 du pic de 1 à 8

PortValB = PortValB - 0 ' pour désactiver la sortie 9 du pic de 9 à 16

(Pour exemple la sortie 0 est utilisee)

Ce qui est noté est à confirmer !

Sinon mes sorties sont actives au demarrage :
 Une reprogrammation de l' HEX s 'impose ?

Merci pour l 'info
Cordiales salutations



appolofrance
0
appolofrance Messages postés 46 Date d'inscription mercredi 8 mai 2002 Statut Membre Dernière intervention 26 mars 2008 5
23 mars 2008 à 19:39
Sa ne marche pas ...quelqu' un aurait une idee ?

appolofrance
0
Profil bloqué
23 mars 2008 à 21:11
A tout hasard essaie ceci

p représente la sortie 0 à 7 du port A
PortValA = 2 ^p     ' pour activer la sortie p ( p allant de 0 a 7) par mise à 1 du bit (les 7 autres sorties sont inactives)
PortValA = 255 - (2 ^p)     ' pour désactiver la sortie p ( p allant de 0 a 7) par mise à 0 du bit ( les 7 autres sorties sont actives)
PortValA = 255     ' pour activer les 8 sorties p ( p allant de 0 a 7) par mise à 1 des 8 bits
PortValA = 0     ' pour désactiver les 8 sorties p ( p allant de 0 a 7) par mise à 0 des 8 bits

GRENIER Alain
0
appolofrance Messages postés 46 Date d'inscription mercredi 8 mai 2002 Statut Membre Dernière intervention 26 mars 2008 5
25 mars 2008 à 10:38
Voila une idee !

Mais lequel est juste ?  C 'est pour l 'ecrire logiquement ...
 
i = 1 'sortie choisie
Bit = 2 ^ i
PortValA = PortValA + Bit     ' active
PortValA = PortValA - Bit      ' desactive

ou

i = 1 'sortie choisie
Bit = 2 ^ i
PortValA = Bit                         ' active
PortValA = Bit - Bit                  ' desactive

Les deux fonctionnent !
Merci
appolofrance
0
Profil bloqué
25 mars 2008 à 21:09
Salut Appolofrance
Les entrées ou sorties de chacun de 2 ports 8 bits vont de 0 à 7 et non de 1 à 8 ( en informatique on compte très souvent de 0 à 7 : prends les 8 bits d'un octet par exemple)

- Pour activer une sortie il faut mettre le bit associé à cette sortie à 1 : exemple pour la sortie 3 du port A cela donne  PortvalA = 00001000 en binaire soit 8 en décimale  ou 2 ^3 ( on retrouve ici le 2 ^p de mon post précédent)
- Pour désactiver une sortie il faut mettre le bit associé à cette sortie à 0 : exemple pour la sortie 3 du port A cela donne PortValA 11110111en binaire soit soit 247 : or 247 255 - 8 soit encore 255 - (2 ^3 )et on retrouve ici le 225 - (2^p) de mon post précédent

Je ne peux pas être plus clair

GRENIER Alain
0
appolofrance Messages postés 46 Date d'inscription mercredi 8 mai 2002 Statut Membre Dernière intervention 26 mars 2008 5
26 mars 2008 à 12:18
Merci , j' avais compris.
Mais 255  coupe toutes les autres sorties.

Je vais rester sur  :
i = 3
Bit = 2 ^ i
PortValA = PortValA + Bit        ' pour activer
PortValA = PortValA - Bit        ' pour desactiver

Salutations
Paul

appolofrance
0
Profil bloqué
26 mars 2008 à 18:34
Ok Appolofrance

Ton raisonnement permet de laisser le port dans l'état où il était et n'agit que sur la sortie spécifiée

A+ et bonne prog

GRENIER Alain
0
Rejoignez-nous