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 l'Assembleur !

Modérateur : mazertoc

Challenge Temps-X
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#21 Message par JMarc » mar. 9 janv. 2018 09:03

Bonjour tout le monde

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 :sifflotte:

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

Challenge Temps-X
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#22 Message par F6FCO » mar. 9 janv. 2018 09:13

Mon init est la base de Bigonoff que j'ai déjà bien simplifiée, j'avais laissé tout ce dont je n'étais pas sur sans avoir suivi le cours 16F876. Mais il y a un truc qui me perturbe dans ce fichier et on le retrouve dans d'autres fichiers de Bigonoff: Normalement pour assigner les ports en sortie ou en entrée on passe en Banque1 pour modifier TRISA, B ou C et on revient en banque 0 pour faire le job.
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.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Challenge Temps-X
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#23 Message par JMarc » mar. 9 janv. 2018 11:52

non il est bien en bank1 regarde

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

Challenge Temps-X
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#24 Message par F6FCO » mar. 9 janv. 2018 13:46

Ah oui effectivement, j'avais lu trop vite :roll: . Après avoir utilisé la macro BANK0 je m'attendais à ce qu'il utilise BANK1 et non écrit en littéral. Je ferai plus attention la prochaine fois.

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
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Challenge Temps-X
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#25 Message par JMarc » mar. 9 janv. 2018 14:57

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é

Challenge Temps-X
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#26 Message par F6FCO » mar. 9 janv. 2018 15:58

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 çà.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Challenge Temps-X
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#27 Message par JMarc » mar. 9 janv. 2018 18:10

Quand tu lances debug et que le pickit n'est pas branché, j'ai une fenetre qui apparait et demande de choisir le pickit ou le mode simulator,c'est celui la que j'utilise pour vérifié mon programme et que bigonoff parle dans ces cours du 16f84

Challenge Temps-X
F6FCO
Avatar de l’utilisateur
Expert
Expert
Messages : 1413
Âge : 70
Enregistré en : décembre 2017
Localisation : Furtif je suis.
Contact :

#28 Message par F6FCO » mar. 9 janv. 2018 23:56

J'ai trouvé une piste : Pour débugger in-situ avec le Pickit3 il faut charger Rb6 et Rb7 avec des pull-down de 100k (datasheet du Pickit). J'ai fais l'adaptation et çà a l'air de se passer mieux, pas le temps de me plonger plus dedans pour le moment il fait sommeil.
Une porte nand prend 2 bits en entrée... la cochonne !!! :langue:

Challenge Temps-X
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#29 Message par Temps-x » mer. 10 janv. 2018 02:56

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. 8-)
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. :wink:

==> A+
Modifié en dernier par Temps-x le mer. 10 janv. 2018 17:47, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Challenge Temps-X
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#30 Message par Gérard » mer. 10 janv. 2018 08:52

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. 8-)
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. :wink:

==> A+


Bonjour à tous,
Vivement que tu nous en dises plus sur cette matrice.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.


Retourner vers « Langage ASM »

Qui est en ligne

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