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

debut avec le debuguer
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#61 Message par Guest » jeu. 22 sept. 2016 10:09

JMarc c'est quoi ton compli ????? je compli mon exemple en 700mS toi en 1S

debut avec le debuguer
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#62 Message par JMarc » jeu. 22 sept. 2016 10:56

Bonjour Maï

J'ai changé en majuscule, le fichier include, j'ai remplacé la ligne config par la mienne, je l'ai a nouveau remplacé par celle que tu as posté et toujours

Code : Tout sélectionner

make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make
[1]: Entering directory 'C:/jmp/pic/fantaspicmai/afficheur/fantaspicmai.X'
make  -f nbproject/Makefile-default.mk dist/default/debug/fantaspicmai.X.debug.cof
make
[2]: Entering directory 'C:/jmp/pic/fantaspicmai/afficheur/fantaspicmai.X'
make[2]: *** [build/default/debug/_ext/1472/fantaspicmai.oError 1
make
[1]: *** [.build-confError 2
make
: *** [.build-implError 2
"C:\Program Files (x86)\Microchip\MPLABX\v3.35\mpasmx\mpasmx.exe" -d__DEBUG -d__MPLAB_DEBUGGER_SIMULATOR=--p16f877 -l"build/default/debug/_ext/1472/fantaspicmai.lst" -e"build/default/debug/_ext/1472/fantaspicmai.err" -o"build/default/debug/_ext/1472/fantaspicmai.o" "../fantaspicmai.asm" 
Error[108]   ..\FANTASPICMAI.ASM 1 Illegal character (*)
Error[113]   ..\FANTASPICMAI.ASM 18 Symbol not previously defined (_FOSC_HS)
Error[113]   ..\FANTASPICMAI.ASM 18 Symbol not previously defined (_WDTE_OFF)
Error[113]   ..\FANTASPICMAI.ASM 18 Symbol not previously defined (_BOREN_OFF)
Error[113]   ..\FANTASPICMAI.ASM 18 Symbol not previously defined (_WRT_OFF)
Message[305] ..\FANTASPICMAI.ASM 157 Using default destination of 1 (file).
Message[305] ..\FANTASPICMAI.ASM 164 Using default destination of 1 (file).
nbproject/Makefile-default.mk:92recipe for target 'build/default/debug/_ext/1472/fantaspicmai.o' failed
make
[2]: Leaving directory 'C:/jmp/pic/fantaspicmai/afficheur/fantaspicmai.X'
nbproject/Makefile-default.mk:84recipe for target '.build-conf' failed
make
[1]: Leaving directory 'C:/jmp/pic/fantaspicmai/afficheur/fantaspicmai.X'
nbproject/Makefile-impl.mk:39recipe for target '.build-impl' failed

BUILD FAILED 
(exit value 2total time1s)
 


avec ma ligne config

Code : Tout sélectionner

make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make
[1]: Entering directory 'C:/jmp/pic/fantaspicmai/afficheur/fantaspicmai.X'
make  -f nbproject/Makefile-default.mk dist/default/debug/fantaspicmai.X.debug.cof
make
[2]: Entering directory 'C:/jmp/pic/fantaspicmai/afficheur/fantaspicmai.X'
make[2]: *** [build/default/debug/_ext/1472/fantaspicmai.oError 1
make
[1]: *** [.build-confError 2
make
: *** [.build-implError 2
"C:\Program Files (x86)\Microchip\MPLABX\v3.35\mpasmx\mpasmx.exe" -d__DEBUG -d__MPLAB_DEBUGGER_SIMULATOR=--p16f877 -l"build/default/debug/_ext/1472/fantaspicmai.lst" -e"build/default/debug/_ext/1472/fantaspicmai.err" -o"build/default/debug/_ext/1472/fantaspicmai.o" "../fantaspicmai.asm" 
Error[108]   ..\FANTASPICMAI.ASM 1 Illegal character (*)
Message[305] ..\FANTASPICMAI.ASM 157 Using default destination of 1 (file).
Message[305] ..\FANTASPICMAI.ASM 164 Using default destination of 1 (file).
nbproject/Makefile-default.mk:92recipe for target 'build/default/debug/_ext/1472/fantaspicmai.o' failed
make
[2]: Leaving directory 'C:/jmp/pic/fantaspicmai/afficheur/fantaspicmai.X'
nbproject/Makefile-default.mk:84recipe for target '.build-conf' failed
make
[1]: Leaving directory 'C:/jmp/pic/fantaspicmai/afficheur/fantaspicmai.X'
nbproject/Makefile-impl.mk:39recipe for target '.build-impl' failed

BUILD FAILED 
(exit value 2total time1s)
 


J'ai

debut avec le debuguer
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#63 Message par JMarc » jeu. 22 sept. 2016 11:12

super ca compile

J'ai changé avec ma config et aussi la toute premiere ligne d'* n'avais pas le ";"

Code : Tout sélectionner

    __CONFIG   _CP_OFF _DEBUG_OFF _WRT_ENABLE_OFF _CPD_OFF _LVP_OFF _BODEN_OFF _PWRTE_ON _WDT_OFF _HS_OSC 


Merci !

debut avec le debuguer
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#64 Message par Guest » jeu. 22 sept. 2016 11:55

C'est bien .Alors si tu veux bien,une petite explication sur le spg LedTable et pourquoi cela plante.

addwf, fait une addition du registre W, avec le pointeur d'instruction PCL.Une fois addition faite ,tu te retrouves sur la ligne(le pointeur instruction, je sais pas toi :sifflotte: ), par exemple 5, la W se charge de la valeur de 5. Jusque la rien de très compliqué. Le problème est que:
/Nous avons fait une addition sur 8 bits, sans propagation de la retenu,
/ET ou se situe cette table ,tout dépend de la longueur de ton programme puisque elle est en fin du programme, ici 2 cas:

1/Fin programme-> milieu segment (segment va de 0x00 a 0xFF) exemple fin programme 0x159, je sais, facile :wink: cela veut dire, début de table 0x159-9 =0x150
La aucun souci avec l'addition, toute les additions sont sans retenue.

2/ Fin programme ->début segment exemple 0x0x203, début de table 0x1FA(0x203-9) si tu fais 0X1FA +2 tu récupères la donnée pas de retenu mais si tu fais 0x1FA+7 cela va te donner, en pointeur instruction 0X101 et oui FA+7= 01 avec carry=1 donc donnée erronée plantage système

ALORS 2 possibilités, soit tu traites la CARRY, soit tu mets ta table sur un bon segment. Perso la 2eme solution. Pour cela tu plantes ta table ici

Code : Tout sélectionner

   SWAPF   Sauv1,0
   MOVWF   STATUS         ;restaure status
   SWAPF   Sauv, 1
   SWAPF   Sauv, 0         ;restaure W
   
   RETFIE            ; retour int
   
;*********************** AFFICHAGE des SECONDES *******************************
;poids fort ComptSd ;poid faible ComptSu
;******************************************************************************   
   
LedTable
    addwf   PCL,f          ; ajout au PC
    retlw   B'00111111'             ; LED allum?es pour afficher 0
    retlw   B'00000110'             ; LED allum?es pour afficher 1
    retlw   B'01011011'             ; LED allum?es pour afficher 2
    retlw   B'01001111'             ; LED allum?es pour afficher 3
    retlw   B'01100110'             ; LED allum?es pour afficher 4
    retlw   B'01101101'             ; LED allum?es pour afficher 5
    retlw   B'01111101'             ; LED allum?es pour afficher 6
    retlw   B'00000111'             ; LED allum?es pour afficher 7
    retlw   B'01111111'             ; LED allum?es pour afficher 8
    retlw   B'01100111'             ; LED allum?es pour afficher 9
    retlw   B'00000000'             ; Effacement toutes LED
   
;*******************************************************************
;               Début du Programme
;*******************************************************************

Principale

;*********************** Mise a zéro de la mémoire RAM banque0 ******

     MOVLW    DRAM
     MOVWF   FSR
Effa   CLRF    INDF
     INCF    FSR,F         ;RAZ RAM
     BTFSS    FSR,7
     GOTO    Effa


Affaire réglé

A+

PS SI tu es ok, suite sur trimer, sinon, pas de problème a ton écoute

oops dans mon explication, j'ai mis la longueur de la table à 9 éléments, alors quelle en a 11. Je me suis planté ,le principe reste le même débordement de l'addition avec carry retenue ou pas
Modifié en dernier par Anonymous le ven. 23 sept. 2016 06:50, modifié 1 fois.

debut avec le debuguer
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#65 Message par JMarc » jeu. 22 sept. 2016 23:29

Gros merci Maï

J'ai bien compris le coup de la retenu pour le tableau, merci.
Je trace ton programme en boucle pour bien me familiariser avec debug. Je rajoute des commentaires pour ne pas me perdre. Je n'ai pas mis en situation réelle car ma platine d'essai, malgré ses 4 afficheurs digital, n'a q'une ligne de commande pour les 4 que je commande les catodes communes à tour de rôle.

Mais si je comprend bien pour l'instant ton prog n'a pas les tempo en fonction



Jean-marc, impatient de voir la suite +1

debut avec le debuguer
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#66 Message par Guest » ven. 23 sept. 2016 07:30

Bonjour

Pour le timer une autre fois :wink:

JMarc a écrit :Mais si je comprend bien pour l'instant ton prog n'a pas les tempo en fonction


heu.... je ne comprend pas ce que tu appels TEMPO, car avec le timer1, nous incrémentons bien notre compteur seconde et cela tout, les secondes donc une tempo de 1S. C'est un compteur temps. Ce que tu as ici est la structure, d'un chronomètre d'un compteur décompteur, tient pour faire cuire des œufs par exemple.(c'est vers cela que j'aimerais bien t"amener :wink: )

Maintenant bien sur et comme dab,si tu le veux bien,
On va voir, une autre facette de l'utilisation d'un timer qui est encore et toujours un compteur Temps.Mais avant on va régler le problème de ta platine, avec ses 4 digits et pousser le programme sur le comptage des unités,dizaines de secondes et unités dizaines de minutes, facile tu as la trame seconde.Le problème, on va vite être confronté au manque de sortie donc de ports.La solution le multiplexage

c'est quoi, je passe sur la rétine de l’œil etc etc,
Je prend les 2 digits Secondes pour 4 ,le principe est le même.il faut :
allumer digit unite seconde ,envoyer la donnée unité seconde, éteindre digit unité seconde ,allumer dizaine digit seconde, envoyer la donnée dizaine seconde, éteindre dizaine digit seconde et recommencer,recommencer avec et cela va te faire plaisir une autre façon de faire des tempos

Alors déjà un PORT va faire la sélection des digits, c'est lui qui allume et éteint et un PORT qui commande les 7 segments de tes afficheurs.

A toi de me proposer le code pour faire fonctionner ta platine.



A+

PS il serai bien de changer de sujet on est plus sur debug, mais plutôt compteur décompteur sur 7 segments et ouvrir un nouveau fil.Sinon ce qui vont nous lire, vont être perdu :wink:

debut avec le debuguer
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#67 Message par JMarc » ven. 23 sept. 2016 18:46

Bonjour,

Les tempo, j'avais vu que tu utilisé tmr1 et non tmr0 mais j'avais l'impression en traçant pas a pas le programme que je passais pas par tmr1. Je vais continuer a observer et a me familiariser avec debug. J'ai compris pour les variable, vu qu'elle ne sont pas déclaré en globale, était dans l'ordre de leur déclaration et avec un peu de réflexion , je retrouve leur adresse et leurs valeur dans le tableau, que le registre w et noté wreg du. Coup je peu bien suivre leur valeur, si je laisse le pointeur de la souris sur un registre déclaré, le nom des bits apparais, plus besoin de rechercher dans le data sheet.

Tu as entièrement raison, je vais créé un nouveau post mais après réflexion sur le multiplexage, car ce sujet me convient parfaitement.

Jean-Marc, le cerveau en surchauffe :-D

debut avec le debuguer
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#68 Message par Guest » ven. 23 sept. 2016 19:22

Pour les variables et bien oui c'est ce que je te proposais en #6. si tu as des problèmes pour retrouver leurs adresses.
Une fois compilé, sous simulateur, tu vas dans window->debugging->desassembely et la tu as non plus le nom de la variable mais sa position en RAM.

A+ dans un nouveau post

debut avec le debuguer
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#69 Message par Guest » sam. 24 sept. 2016 08:16

Bonjour

JMarc a écrit :Bonjour,

Les tempo, j'avais vu que tu utilisé tmr1 et non tmr0 mais j'avais l'impression en traçant pas a pas le programme que je passais pas par tmr1.

Perso, je fais comme cela: je vire touts les points d'arrets .Place un point d’arrêt sur 1er ligne de int, puis un reset debug bouton bleu il faut aussi bien configurer le debugger notamment la Fcyc pour cela tout en image :wink:
Capture 1.png

menu deroulant defaut->prendre customize

puis
Capture2.png


Dans instruction Frequency mettre ici 5 qui correspond a une fréquence quartz de 20MHz (20/4=5) car dans mon assignation, j'ai un Fosc de 20MHz qui aussi correspond à la config de mes fuses "_FOSC_HS",tout ce tient. Attention!! à la configuration pour ta platine d'essai, que je ne connais pas.

Code : Tout sélectionner

;*********************** Assignations *******************************

DRAM   EQU 0x20         ;début Mémoire Ram banque0
FRAM    EQU 0X7F         ;fin Mémoire Ram banque0
Fosc   EQU .20            ;Valeur du quartz en MHz
   
;********************** calcul pour une boucle de temporisation ****************
; a 2 niveaux sur un 16F boucle secondaire en 756 cycles
;*******************************************************************************   
TEMPS1   EQU .2000000         ;en ns a modifier suivant besoin ici 2ms
TEMPO   EQU ((TEMPS1/(.4000/Fosc))/.756)

;********************** calcul pour timer1 *************************************   
DIVISEUR1   equ   .8         ;ici 8 du TMR
TEMPS   EQU .100000         ;Valeur en µs a modifier suivant besoin
TIMER1   EQU .65535-((Fosc*TEMPS)/(.4*DIVISEUR1)-2);les-2 pour temps chargement timer1
TIMER1L   EQU LOW TIMER1         ;valeur
TIMER1H   EQU HIGH TIMER1         ;pour 100 ms qu'il faudra incorporer dans le timer 1



et touts les calculs pour le timer 1 se font pour une Fosc de 20MHz.

Calcul si tu veux bien que je reprendrais un peu plus tard ainsi que le calcul de TEMPO.

Je pense que je vais trop vite, on va ralentir.On va laisser le multiplexage, toujours si tu le veux bien. Le problème, c'est qu'il y a une somme incroyable à voir sous simulateur( debug )et que l'on peut, les voir que sur des cas bien précis, comme ici, qui éventuellement peut, déboucher, sur un autre sujet par exemple combien de temps met ma tempo, cela peut ce faire par calcul, il y a un outil, pour cela dans le simulateur,c'est plus rapide et précis.Pas pour le moment plus tard :wink:

A+

PS dit moi ou en es-tu, tu as fini d'analyser le code ????
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

debut avec le debuguer
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#70 Message par JMarc » sam. 24 sept. 2016 16:16

Bonjour Maï

Je bloque dans la boucle BouP. J'ai chargé le pic et le comptage fonctionne par sacade. :mur: Pour l'instant j'ai un quartz de 4 mHertz mais j'aurais pensé que le prog aurai fonctionné 4 fois moins vite. puis avec debug je me suis appercu que la variable Temp, une fois a 0x0A rien ne la remettais a zéro, du coup la boucle BouP ne servait a plus rien. J'ai rajouté

Code : Tout sélectionner

  BSF   T1CON,TMR1ON      ;arrêt TMR1    bit a 1
   
;********************** Boucle principale *************************************
   
AFFI
   clrf    Temp        
j'ai rajouté l'effacement de Temp


pour la remettre a Zéro apres la sorti de l'interruption et la sa fonctionne avec un seul chiffre. ai-je bien fais ?

J'ouvre l'autre post pour la suite


Retourner vers « Langage ASM »

Qui est en ligne

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