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 ---
On parle des Pics, sans rapport avec le langage ou la programmation

Modérateur : Jérémy

Configuration 18F46J50
cyril13110
Confirmé
Confirmé
Messages : 724
Âge : 41
Enregistré en : avril 2016
Localisation : 13

#1 Message par cyril13110 » lun. 9 sept. 2019 20:49 lien vers la Data-Sheet : Cliquez ici

Bonsoir a tous,
Je rencontre un probleme avec ma carte 18F46J50.
La carte est equipé de & BP raccordé sur le PortB2 et 2 leds raccordé sur PortE 0 et 1.
Les leds j'ai reussi à les faire clignoter sans probleme par contre je suis bloqué sur la conf du PortB pour faire passer le bit 2 en entrée.
Vous avez la DS en lien et voila mon code test:

Code : Tout sélectionner

program TESTprogboot

' Declarations section 
LED1 Port E 0
' LED2 Port E 1
BP   Port B 2

dim led1 
as sbit at LATE0_bit
    led2 
as sbit at LATE1_bit
    led1_direction 
as sbit at TRISE0_bit
    led2_direction 
as sbit at TRISE1_bit
    bp 
as sbit at LATB2_bit
    bp_direction 
as sbit at TRISB2_bit
  dim x  
as word
      i 
as word
dim compt
,lumiere as byte

main
:
'   Main program 
    ANCON1.0 = 1
    INTCON2.7 = 0
    led1_direction = 0
    led2_direction = 0
    bp_direction = 1
   
    x=1
    i=0
    compt=lumiere=0
    
      while TRUE
            if (bp=1) and (compt<10) then
               inc(compt)
          end if
          if (bp=0)then
             compt=0
          end if
          if (compt=3) then
             inc(lumiere)
          end if
    
             if lumiere = 0 then
               led1=1
               led2=0
            end if
              if lumiere = 1 then
               led1=0
               led2=1
            end if
            if lumiere > 1 then
               lumiere = 0
            end if
                
  wend              ' 
Endless loop
end


Dans la DS le registre ANCON1 indique de passer le bit 0 à l'etat 1 pour mettre PB2 en voie digital.
Chose que j'ai fait mais rien n'y fait la voie 2 reste comme muet.
JE sais que ca fonctionne car avec le code d'origine le BP fonctionnait, il sert de demo.
Merci d'avance pour vos lumieres

Configuration 18F46J50
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#2 Message par Temps-x » lun. 9 sept. 2019 22:33 lien vers la Data-Sheet : Cliquez ici

Bonsoir cyril13110, et tout le forum,

Page 349, if est dit ceci sur le registe ANCON0

bit 7-0 PCFG<7:0>: Analog Port Configuration bits (AN7-AN0)

1 = Pin configured as a digital port
0 = Pin configured as an analog channel – digital input is disabled and reads ‘0’

Donc d'après la datasheet il faudrait mettre le bit 2 à 1 ,à voir aussi si tu as pas oublié de configurer TRISB

Voici un bout de code prie sur la datasheet en ASM :sifflotte:

Code : Tout sélectionner


MOVLW 0x08                                                      
; Initialize output data
MOVWF LATB                                                      
; latch values for digital
                                                                          
; output pins.
MOVLB 0x0F                                                      ; ANCONx registers are
                                                                          
; not in access bank
BSF   ANCON1
, PCFG12, BANKED                       ; Configure RB0/AN12 for digital input mode
BCF ANCON1
, PCFG10, BANKED                        ; Configure RB1/AN10 for analog input mode



Les registres ANCON0 et ANCON1 sont utilisés pour configurer le fonctionnement de la broche d’E / S associée à chaque canal analogique.


Pour le reste je regarde un peu plus tard

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Configuration 18F46J50
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#3 Message par satinas » mar. 10 sept. 2019 08:19 lien vers la Data-Sheet : Cliquez ici

Bonjour tout le monde

Tu testes le poussoir en utilisant LATB, le latch de sortie.
Il faut plutôt utiliser le registre PORTB qui lui retourne l'état des pins programmées en entrée.

Configuration 18F46J50
cyril13110
Confirmé
Confirmé
Messages : 724
Âge : 41
Enregistré en : avril 2016
Localisation : 13

#4 Message par cyril13110 » mar. 10 sept. 2019 09:08 lien vers la Data-Sheet : Cliquez ici

satinas a écrit :Bonjour tout le monde

Tu testes le poussoir en utilisant LATB, le latch de sortie.
Il faut plutôt utiliser le registre PORTB qui lui retourne l'état des pins programmées en entrée.


Bonjour a tous,

oups ma que couillon que je suis, merci satinas de me l'avoir rappeler.
J'oublie souvent ce points, je tombe toujours dedant ca ne rate pas.

en effet temps-x, il faut parametrer ANCON0 ou ANCON1 celon la voie que l'on veut utiliser.
Le portB 2 est la voie AN8 qui est le bit 0 de ANCON1.


Retourner vers « Généralités sur les PICs »

Qui est en ligne

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