- 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 ---
Modérateur : mazertoc
Ma config 6 led avec anode sur portB cathode GND, quartz 4 mhz
compilation MPLABX OK, pickit3 OK
Platine, mise sous tension=> led PORTB4 => on => ok youppi
appuis sur le bouton 1 (ou 2) du portA => catastrophe=> toutes les leds allumées
Je ne sais pas si je peut donné la solution car je n'ai pas encore copié mes lignes
PS, enlève tout ce qui ne sert a rien dans ton fichier ini pour y voir plus clair, déclare les ports sans les assignations
trace ton programme avec debug de mplab
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Bigonoff lui, il reste en banque 0 tout le temps, j'ai déjà remarqué çà dans son cours sur le 16F84. Quelqu'un peut m'expliquer ?
On le voit ici, copie de son code de base m18976.asm fourni dans son cours:
Code : Tout sélectionner
init
; initialisation PORTS (banque 0 et 1)
; ------------------------------------
BANK0 ; sélectionner banque0
clrf PORTA ; Sorties PORTA à 0
clrf PORTB ; sorties PORTB à 0
clrf PORTC ; sorties PORTC à 0
bsf STATUS,RP0 ; passer en banque1
movlw ADCON1VAL ; PORTA en mode digital/analogique
movwf ADCON1 ; écriture dans contrôle A/D
movlw DIRPORTA ; Direction PORTA
movwf TRISA ; écriture dans registre direction
movlw DIRPORTB ; Direction PORTB
movwf TRISB ; écriture dans registre direction
movlw DIRPORTC ; Direction PORTC
movwf TRISC ; écriture dans registre direction
; Registre d'options (banque 1)
; -----------------------------
movlw OPTIONVAL ; charger masque
movwf OPTION_REG ; initialiser registre option
Pour utiliser les 64 leds de la matrice (je le ferai quand j'aurai reçu les16F877), je jouerai sur l'état des cathodes en changeant de ligne par test en remontant d'une ligne si on a le mot b'10000000' ou en descendant d'une ligne si b'00000001' sur le PORTB. Arrivé à la dernière ligne on repart en haut de la matrice.
Code : Tout sélectionner
bsf STATUS,RP0 ; passer en banque1
puis aprés il tripote TrisB
le probleme c'est qu'il utilise un coup les macros
Code : Tout sélectionner
BANK0 ; sélectionner banque0
puis un coup il fait en direct
Code : Tout sélectionner
bcf STATUS,RP0 ; sélectionner banque 0
moi je te propose dans un premier temps de virer les macros de ton init
Code : Tout sélectionner
BANK0 macro ; passer en banque0
bcf STATUS,RP0
bcf STATUS,RP1
endm
BANK1 macro ; passer en banque1
bsf STATUS,RP0
bcf STATUS,RP1
endm
BANK2 macro ; passer en banque2
bcf STATUS,RP0
bsf STATUS,RP1
endm
BANK3 macro ; passer en banque3
bsf STATUS,RP0
bsf STATUS,RP1
endm
et de le faire en direct pour que cela soit bien clair dans ton esprit, de plus il n'y a qu'un seul bit a changer
donc pour passer en bank0 bcf STATUS,RP0 ; sélectionner banque 0
et pour passer en bank1 bsf STATUS,RP0 ; sélectionner banque 1
de plus quand tu configures tes sorties tu ne met pas tout les bits PortB en sortie
Code : Tout sélectionner
movlw DIRPORTB ; Direction PORTB
movwf TRISB ; écriture dans registre direction
en référence a l'assignation DIRPORTB EQU B'11000000'
cela correspond a faire
Code : Tout sélectionner
movlw B'11000000' ; Direction PORTB
movwf TRISB ; écriture dans registre direction
tu vois l'erreur ?
change ces deux lignes en clrf TRISB
Aller essai cela
Code : Tout sélectionner
init
; initialisation PORTS (banque 0 et 1)
; ------------------------------------
bcf STATUS,RP0 ; passer en banque0
clrf PORTA ; Sorties PORTA à 0
clrf PORTB ; sorties PORTB à 0
clrf PORTC ; sorties PORTC à 0
bsf STATUS,RP0 ; passer en banque1
movlw ADCON1VAL ; PORTA en mode digital/analogique
movwf ADCON1 ; écriture dans contrôle A/D
movlw DIRPORTA ; Direction PORTA
movwf TRISA ; écriture dans registre direction
clrf TRISB ; portB en sortie
movlw DIRPORTC ; Direction PORTC
movwf TRISC ; écriture dans registre direction
; Registre d'options (banque 1)
; -----------------------------
movlw OPTIONVAL ; charger masque
movwf OPTION_REG ; initialiser registre option
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Code : Tout sélectionner
et de le faire en direct pour que cela soit bien clair dans ton esprit
C'est moi qui ai rajouté ces macros, ainsi que les #DEFINE je les utilise souvent dans les autres langages, je trouve que çà éclaircit et simplifie beaucoup la programmation.
Code : Tout sélectionner
movlw B'11000000' ; Direction PORTB
movwf TRISB ; écriture dans registre direction
Là encore je l'ai fait volontairement, les bits 6 et 7 étant utilisés par le Pickit pour le débogage alors je me suis dit qu'il serait peut-être mieux de ne pas s'en servir dans le programme.
De toutes façon je n'arrive pas à déboguer avec le Pickit, d'après la fenetre d'erreur ce serait une histoire de fusibles mal réglés.
Code : Tout sélectionner
PK3Err0040: The target device is not ready for debugging.
Please check your configuration bit settings and program
the device before proceeding.
Stepping target failed
F6FCO a écrit :
Là encore je l'ai fait volontairement, les bits 6 et 7 étant utilisés par le Pickit pour le débogage alors je me suis dit qu'il serait peut-être mieux de ne pas s'en servir dans le programme.
De toutes façon je n'arrive pas à déboguer avec le Pickit, d'après la fenetre d'erreur ce serait une histoire de fusibles mal réglés.
Alors tu ne peut pas utiliser le décalage des bits du portB si tu n’es pas maître des 2 bits en entrée, il y a une autre solution.
Je te parlais du débugeur de mplab qui est virtuel et non avec le pickit d’ailleur Ce dernier je ne sait pas l’utiliser, bigonoff explique dans part3 et part4 mais je n’en ai pour l’instant Pas l’utilitété
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Alors tu ne peut pas utiliser le décalage des bits du portB si tu n’es pas maître des 2 bits en entrée.
C'est vrai.
il y a une autre solution.
Sinon je ferai çà avec des masques et des opérations binaires.
Je te parlais du débugeur de mplab qui est virtuel et non avec le pickit d’ailleur Ce dernier je ne sait pas l’utiliser, bigonoff explique dans part3 et part4
Je vais essayer de trouver çà.
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
écrit par Gérard :
Question pour Temps-x : comment vas-tu piloter la matrice ?
Je sais pas, il faut que je vois comment l'électronique est, car j'ai pas trouvé de datasheet sur cette Matrix 8 x 8 bicolores
mais surement avec seulement un Pic.
Je sais tu vas me dire, que je risque de dépasser le courant max des sorties du PIC, ben non, je compte me servir d'un 16F887.
Sachant qu'il y a 2 LED, le rouge et le vert par point, ce qui double la matrix par 2, c'est pas 64 led, mais 128 led à piloter.
ce qui fait un total de 16 Led à contrôler en PWM sur une ligne, le PWM sert à faire varier la couleur.
Car d'après le datasheet ,ce Pic peu fournir 25 mA par patte, mais il faut pas dépasser 200 mA sur l'ensemble du PORT.
Si tu fais un multiplexage intelligent, tu auras aucun soucis.
Je sais qu'il existe des drivers spécialiser, mais il coute plus cher que le Pic, j'en vois pas l’intérêt, c'est mon point de vue,
et je n'y reviendrai pas.
A+
- Gérard
Expert- Messages : 1644
- Âge : 65
- Enregistré en : septembre 2015
- Localisation : Alsace - Haut-Rhin
Temps-x a écrit :Bonjour F6FCO, JMarc, cyril13110, Gérard, et tout le forum,écrit par Gérard :
Question pour Temps-x : comment vas-tu piloter la matrice ?
Je sais pas, il faut que je vois comment l'électronique est, car j'ai pas trouvé de datasheet sur cette Matrix 8 x 8 bicolores
mais surement avec seulement un Pic.
Je sais tu vas me dire, que je risque de dépasser le courant max des sorties du PIC, ben non, je compte me servir d'un 16F887.
Sachant qu'il y a 2 LED, le rouge et le vert par point, ce qui double la matrix par 2, c'est pas 64 led, mais 128 led à piloter.
ce qui fait un total de 16 Led à contrôler en PWM sur une ligne, le PWM sert à faire varier la couleur.
Car d'après le datasheet ,ce Pic peu fournir 25 mA par patte, mais il faut pas dépasser 200 mA par PORT.
Si tu fais un multiplexage intelligent, tu auras aucun soucis.
Je sais qu'il existe des drivers spécialiser, mais il coute plus cher que le Pic, j'en vois pas l’intérêt, c'est mon point de vue,
et je n'y reviendrai pas.
A+
Bonjour à tous,
Vivement que tu nous en dises plus sur cette matrice.
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 74 invités