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

appel aux specialistes ASM decalage 96 bits
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#71 Message par satinas » ven. 15 nov. 2019 12:47

OK, c'est bon, à 4h j'étais pas net, je pensais même que la boucle éclatait le tableau.
Le fait de stocker en octet, c'est parce que au départ la font et à l'arrivée les matrices travaillent en octets.

Par contre tu as mis en commentaire l'insert _asm, qui n'est donc pas dans le LST, c'est lui que je voulais :)
J'ai MikroC mais je peux pas recompiler, il me manque des fichiers include.

appel aux specialistes ASM decalage 96 bits
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#72 Message par paulfjujo » ven. 15 nov. 2019 14:18

OK, j'ai rajouté les fichiers manquants
et j'ai mis la version utilisant le decalage en asm

j'espere ne rien oublier ...
MikroC ne sait pas gerer l'exportation d'un projet ! il met tout ce qui est dans le directory de travail
ou alors il faudrait gerer un autre directory à chaque variante de compilation !

PIC18F27K42_Test_Defilement_8_Reverse_Matrices_Max7219_Horiz_191112.zip
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

appel aux specialistes ASM decalage 96 bits
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#73 Message par satinas » ven. 15 nov. 2019 15:36

Le tableau temps est à l'adresse 0x800 en bank 8. Pour y accéder il faut sélectionner la bank8 dans le registre BSR.
Tu l'as fait dans la routine _asm commentée, mais pas dans celle qui est compilée.
Donc sauvegarder BSR au départ dans une variable 8 bits save_bsr.
Ensuite le passer à 8, et recharger la sauvegarde à la fin de la routine.
En espérant que ça règle le problème, bien que cela aurait dû faire beaucoup plus de dégât.
Je peux compiler, mais "Demo Limit !"
Pour assurer le coup, il vaut mieux aussi sauvegarder le registre W

"save_w" et "save_bsr" peuvent être n'importe où en ram.
"sortie" doit être en bank 8 (ou en access ram < 0x60)

Code : Tout sélectionner

   _asm {
      movffl WREG,save_w       ; sauvegarder W
      movffl BSR,save_bsr      ; sauvegarder BSR
      movlb  8                 ; sélectionner bank8, BSR = 8

      movlw 63
      movwf _sortie            ; 8 matrice x 8 points = 64  (8 bits  x  Nombre de Matrice) = sortie

   tourne:
      bcf STATUS,C             ; positionnement à priori de Report à 0
      btfsc _temps+7,7         ; regarder si le bits 7, de la variable "temps+11" est 1
      bsf STATUS,C             ; si oui, positionnement de Report à 1
      rlcf _temps+0,F
      rlcf _temps+1,F
     ...
      rlcf _temps+62,F
      rlcf _temps+63,F

      decfsz _sortie,F
      bra tourne

      movffl save_bsr,BSR      ; recharger BSR
      movffl save_w,WREG       ; recharger W
  }

En envoyant par spi après chaque décalage tu pourrais profiter du temps de transmit pour faire le décalage suivant, Temps-x avait abordé ce sujet.
Le principe est là, durant cette routine, toute variable supplémentaire doit être déclarée en bank8 ou en access ram.

appel aux specialistes ASM decalage 96 bits
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#74 Message par paulfjujo » ven. 15 nov. 2019 20:05

bonsoir,


J'ai refait un test, cette fois avec un 18F26K22 et avec un programme minimaliste
utilisant seulement l'UART pour afficher les 8 mots de 64 bits.
Je precharge au depart les 8 registre LSB avec la lettre A ...
Lettre "A" qui defile bien sur les 8 lignes en boucle , sans alterations . (voir le fichier resultat : Test_191115_log.txt)

le probleme n'est donc pas dans le code ASM, mais un probleme de perturbation externe
le code en C , 18F26K22 + asm +LST + decalage en asm
test_decalage_64bits_asm_minimaliste_18F26K22.zip


SATINAS : je vais tester ta solution qui preserve les registre W et BSR
qui doivent etre poluées par les fonctions en C utilisées par ailleurs ..

test avec sauvegarde et restitution de WREG et BSR sur mon appli basée sur 18F27K42
car c'est sur celle ci que je veux du défilement ..
=> idem problemo ... interferences ???
maintenant, il y a aussi des registres SHADOW !!! :mur: des shadocks ,oui !
au vu des STATISTICS
la sequence de decalage et les varaibles de stockage sont bien dans la banque 0x800
j'ai ensuite , aussi deplacé une table de 768 bytes dans 0x900
ça ne change rien ..

Stat_RAM_et_registers.JPG
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

appel aux specialistes ASM decalage 96 bits
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#75 Message par Temps-x » lun. 18 nov. 2019 19:34

paulfjujo a écrit :Source du message maintenant, il y a aussi des registres SHADOW !!! :mur: des shadocks ,oui !


4.jpg


Voila pourquoi ça fonctionne pas .... dehors!!

==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

appel aux specialistes ASM decalage 96 bits
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#76 Message par satinas » lun. 18 nov. 2019 20:14

Bonsoir
Est-ce possible de faire une version avec bank8 qui passe dans la version limitée de MikroC, qui montrerait le problème ?
S'il y a un debugger pas à pas permettant de suivre le C et l'asm, on doit pouvoir trouver où cela coince.
Sinon passe à C18, y a pas mieux, le Professeur Shadoko te le confirmera ...

appel aux specialistes ASM decalage 96 bits
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#77 Message par paulfjujo » lun. 18 nov. 2019 20:41

bonsoir,

mon test de decalage avec la lettre A , qui circulait bien , mais de gauche à droite (??) , sur le terminal
m'a mis la puce à l'oreille :
cette lettre est symetrique
j'ai donc re testé avec la lettre E , et là : SHADOCKERIE !
elle est à l'envers sens horizontal !

* apparté sur les 2 versions d'horloge
du fait que ces matrices circulent en sens inverse ! connectique d'entree à droite sur l'horloge V2 ( à gauche sur l'horloge version 1)
si j'envoie 0123 sur la Version 1 , j'obtiens 0123 affiché
sur la version 2 j'obtiens 3210
(au point de vue horloge je traite les afficheurs differement , pas d'usage de la font_8x8
mais des chiffres 0 à 9 centré à droite et 0 à 9 centres à Gauche
et routine d'affichage chiffre modifiée.

il faut que j'utilise une Font avec les caracteres inversés entre MSB et LSB de chaque byte
ce qui montre la complication , en voulant decaler le texte ( les 8 lignes de 64 octests pour 8 matrices)
à gauche et la matrice qui va dans l'autre sens..
bref il faut que je remette tout cela à plat ..

sous debugger , le decalage 96 bits fonctionne OK , en visualisant les 8 entiers longs.
le probleme ne serait donc pas au niveau du decalage pur sur 96 bits en ASM
car là, je ne preoccupe pas de l'affichage sur terminal ou l'affichage matrice.

je sais .. c'est vraiment capilotracté!
je vais laisser reposer tout ça pendant une semaine ... pour repartir à zero
Aide toi, le ciel ou FantasPic t'aidera

appel aux specialistes ASM decalage 96 bits
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#78 Message par paulfjujo » mer. 20 nov. 2019 19:03

Test avec un texte un peux particulier pour mieux comprendre ce qu'il se passe
à priori c'est le report de carry qui ne se passe pas correctement au vu de ce test :

Test_191120.jpg

sur les lignes 1,2,3 on voit bien se decaler les bits à gauches mais
sur la ligne 4
des que le caractere a un bit qui tombe dans le carry , il est reporté sur la position homoloque
du byte de la ligne suivante ?
à suivre...
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

appel aux specialistes ASM decalage 96 bits
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#79 Message par satinas » mer. 20 nov. 2019 21:21

Tu peux pas suivre au debugger ces 2 instructions asm ?

*(temps+25) = 0xFC, *(temps+26) = 0x00, C = 0
rlcf _temps+25,F
*(temps+25) = 0xF8, *(temps+26) = 0x00, C = 1
rlcf _temps+26,F
*(temps+25) = 0xF8, *(temps+26) = 0x01, C = 0

appel aux specialistes ASM decalage 96 bits
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#80 Message par paulfjujo » ven. 22 nov. 2019 18:21

bonsoir à tous,

Ouf ! probleme résolu !
il a fallu que j'ajoute la representation de ma matrice d'affichage terminal, avec les adresse de chaque ligne de matrice
( qui est le pendant de l'affichage sur matrice reelle ! )
pour voir enfin que l'ordre de decalage était OUT !


Organisation_Matrice_8cars.jpg


Code : Tout sélectionner




void New_decalage_64bits
(void)
{
// rev 22-11-2019
      _asm{
      nop               ;// pour pose point d'arret au debut
      bcf STATUS,C      ;// positionne Carry à 0
      btfsc _temps+0,7  ;// regarder si le bits 7, de la variable "temps+7" est 1
      bsf STATUS,C      ;// si oui, positionne Carry à  1

      rlcf _temps+56,F
      rlcf _temps
+48,;
      rlcf _temps+40,;
      rlcf _temps+32,;
      rlcf _temps+24,;
      rlcf _temps+16,;
      rlcf _temps+08,;
      rlcf _temps+00,F
   
//2em
      bcf STATUS,C
      btfsc _temps
+1,7
      bsf STATUS
,C
      rlcf _temps
+57,;
      rlcf _temps+49,;
      rlcf _temps+41,;
      rlcf _temps+33,;
      rlcf _temps+25,;
      rlcf _temps+17,;
      rlcf _temps+09,;
      rlcf _temps+01,;
    //3em
      bcf STATUS,C
      btfsc _temps
+2,7
      bsf STATUS
,C
      rlcf _temps
+58,;
      rlcf _temps+50,;
      rlcf _temps+42,;
      rlcf _temps+34,;
      rlcf _temps+26,;
      rlcf _temps+18,;
      rlcf _temps+10,;
      rlcf _temps+02,;
   //4em
      bcf STATUS,C
      btfsc _temps
+3,7
      bsf STATUS
,C
      rlcf _temps
+59,;
      rlcf _temps+51,;
      rlcf _temps+43,;
      rlcf _temps+35,;
      rlcf _temps+27,;
      rlcf _temps+19,;
      rlcf _temps+11,;
      rlcf _temps+03,;
    //5em
      bcf STATUS,C
      btfsc _temps
+4,7
      bsf STATUS
,C
      rlcf _temps
+60,;
      rlcf _temps+52,;
      rlcf _temps+44,;
      rlcf _temps+36,;
      rlcf _temps+28,;
      rlcf _temps+20,;
      rlcf _temps+12,;
      rlcf _temps+04,;
    //6em
      bcf STATUS,C
      btfsc _temps
+5,7
      bsf STATUS
,C
      rlcf _temps
+61,;
      rlcf _temps+53,;
      rlcf _temps+45,;
      rlcf _temps+37,;
      rlcf _temps+29,;
      rlcf _temps+21,;
      rlcf _temps+13,;
      rlcf _temps+05,;
    //7em
      bcf STATUS,C
      btfsc _temps
+6,7
      bsf STATUS
,C
      rlcf _temps
+62,;
      rlcf _temps+54,;
      rlcf _temps+46,;
      rlcf _temps+38,;
      rlcf _temps+30,;
      rlcf _temps+22,;
      rlcf _temps+14,;
      rlcf _temps+06,;
      //8em
      bcf STATUS,C
      btfsc _temps
+7,7
      bsf STATUS
,C
      rlcf _temps
+63,;
      rlcf _temps+55,;
      rlcf _temps+47,;
      rlcf _temps+39,;
      rlcf _temps+31,;
      rlcf _temps+23,;
      rlcf _temps+15,;
      rlcf _temps+07,;
      nop  ; // pour point d'arret
    }
}


 


la suite .. longueur de message 128 cars maxi

C'est dommage , je n'ai pas de 3em board de 4 matrice idem aux 2 presentes ,
mais je vais passer à la version 96 bits , au moins en affichage terminal .
en attendant une 3me , voir 4em board !

projet complet mikroc .. demain
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera


Retourner vers « Langage ASM »

Qui est en ligne

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