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
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#81 Message par Temps-x » ven. 22 nov. 2019 19:30

Bonsoir paulfjujo, satinas, et tout le forum,

:bravo: ==> et :+1: Ben figure toi que j'en suis arrivé à la même conclusion que toi, décalage par 8, ben quand on réfléchit c’est logique.

paulfjujo a écrit :Source du message C'est dommage , je n'ai pas de 3em board de 4 matrice idem aux 2 presentes ,


Je mets sur le forum à disposition ICI le fichier de simulation pour Proteus pour 12 matrices.

:roll: Note,.. il y a encore de la place pour y rajouter des matrices .... :sifflotte:

==> A+
: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
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#82 Message par paulfjujo » dim. 24 nov. 2019 12:01

bonjour à tous ,


1er test defilement ... sur 2 blocs soit 8 cars avec un message de 64 cars maxi
defilement OK de tout le message ,mais bug sur le caractere entrant à droite ....
en fait il faut casser le rebouclage 64 bits, qui est sur 8 cars !
car les bits sortant ( à gauche de l'affichage =1er caractere) doivent maintenant se retrouver sur le dernier caractere à afficher ,soit sur le 64em caractere

pour corriger ce bug:
au final, je laisse perdre les bits de sortie et recadre simplement l(affichage modulo 8 cars sur la zone de 64 bytes servant au decalage
l'effet n'est pas aussi pertinent que je le voudrais ,car le 1er car (àdroite) rentre d'un seul coup au lieu de pixel par pixel
tres visible si le programme tourne tres lentement ! par contre ensuite le defilement est Ok.
sinon je vais en rester là (pour l'instant), vu qu'il me manque mon 3em bloc de 4 ..pour 12 cars..

_test_18F26K22_defilement_texte_decalage_64bits_asm_191124.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
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#83 Message par paulfjujo » sam. 7 mars 2020 18:01

bonjour,


J'ai pu récuperer 3 autres blocs de 4 matrices 8x8 H MAX7219 que m'a remis un ami..
et les 3 sont en mode inverse .. entree DIN connecteur à droite des 3 modules ..
pour un defilement de droite à gauche , colonne par colonne ..

J'ai eu à nouveau des surprises ..

sur les 12 digits , que 8 qui défilent correctement à gauche et 9,10 ,11,12 bigornés !
en relisant tous les posts et avec la datasheet RAM BANK du 18F26K22 sous la main
adresse depart pour la zone de travail RAM 0x0016 + 96 = 0x0076
il y a telescopage au dela de 0x5F

:mur: Ce qui est étonnant, c'est que je ne l'ai pas vu avec la version precedente
2 modules 4 xmatrice dans un sens (connecteur à gauche) et le 3em bmoc de 4xMatice sens inverse (connecteur à droite)
La zone 96bits etant déclarée au meme endroit 0x0016

en fait, pourquoi avoir choisi 0x0016, car est située APRES les Regsistre dédiées au Compilateur MikroC R00 à R20
qu'il ne faut absolument pas toucher .. à moins d'etre un supercrak en ASM
et rester en Bank0 accessible de toute part.
pour une appli avec 8 matrices .. ça rentre 0x016 + 64 => 0x56 ( < 0x5F donc OK)


le Probleme est bien visible en activant le mode affichage sur terminal (au lieu des matrices )
les 8 premiers caracteres défilent bien à chaque scan, le '9' est bigorné et les autres '10','A','B' sont figés

Problemo_decalage_96bits_vu_sur_terminal_200307.jpg


:+1: post#73 de Satinas...donne la solution
utiliser bsr pour pointer sur un autre bloc RAM (Bank)

Code : Tout sélectionner

// modif :  declage ASM en Bank 0x0100
// decalage 12 digits OK

unsigned char save_bsr ; // BSR
unsigned char save_w  ; //WREG
#define OFFSET  0x0100
unsigned long temps[24] absolute OFFSET;    // 8 lignes de 3 x (4x8) bits = 8 lignes de 96 bits
char Bouclage absolute OFFSET+96; //  uniquement pour marquage de fin 
 


voir decalage 96 bits , ci dessous ,pour ne décaler qu'une seule colonne à la fois (pixel)
le programme affiche d'abord une trame fixe de 12 caracteres
puis circule en boucle de droite à gauche ..

Code : Tout sélectionner

 
  UART1_Write_CText
(" Clear 12 Matrices MAX7219 \r\n" )  ;
   Clear_12_Matrice() ;
   CRLF1();
   SPI_CS=1;
   CRLF1();
   k=0;
   do
   
{
   UART1_Write_CText(" Test Affichage STATIQUE de 12 cars :<0123456789AB>\r\n");
   strConstRamCpy(CRam1,"0123456789AB");
   remplis_buffer_with_string(CRam1);
   _Affiche_96bits_12_Matrices_H();
   Delay_ms(2000);
   UART1_Write_CText(" Affichage Buffer depuis <OFFSET=0x100h> 24 longs! \r\n");
   pB=OFFSET;
   // Entree= connecteur à droite
    for(j=0;j<8;j++)
     {  SPI_Write_To_12x7219(j+1,
        *(pB+88+j),*(pB+80+j),*(pB+72+j) ,*(pB+64+j),
        *(pB+56+j) ,*(pB+48+j),*(pB+40+j),*(pB+32+j),
          *(pB+24+j) ,*(pB+16+j),*(pB+8+j),*(pB+j));
         Delay_ms(1);
     }
    CRLF1();
    for (j=0;j<96;j++)
    {
      _Affiche_96bits_12_Matrices_H();
     //Affiche_12_Matrices_en_Texte_sur_Terminal();
      _asm{
      movffl WREG,_save_w       ; sauvegarder W
      movffl BSR
,_save_bsr      ; sauvegarder BSR
      movlb  1                 
; sélectionner bank1, BSR = 1
      bcf STATUS
,C
      rlcf _temps
+88,F
      rlcf _temps
+80,F
      rlcf _temps
+72,F
      rlcf _temps
+64,F
      rlcf _temps
+56,F
      rlcf _temps
+48,F
      rlcf _temps
+40,F
      rlcf _temps
+32,F
     rlcf _temps
+24,F
     rlcf _temps
+16,F
     rlcf _temps
+8,F
     rlcf _temps
+0,F
     bcf STATUS
,C
     rlcf _temps
+89,F
     rlcf _temps
+81,F
     rlcf _temps
+73,F
     rlcf _temps
+65,F
     rlcf _temps
+57,F
     rlcf _temps
+49,F
     rlcf _temps
+41,F
     rlcf _temps
+33,F
     rlcf _temps
+25,F
     rlcf _temps
+17,F
     rlcf _temps
+9,F
     rlcf _temps
+1,F
     bcf STATUS
,C
     rlcf _temps
+90,F
     rlcf _temps
+82,F
     rlcf _temps
+74,F
     rlcf _temps
+66,F
     rlcf _temps
+58,F
     rlcf _temps
+50,F
     rlcf _temps
+42,F
     rlcf _temps
+34,F
     rlcf _temps
+26,F
     rlcf _temps
+18,F
     rlcf _temps
+10,F
     rlcf _temps
+2,F
     bcf STATUS
,C
     rlcf _temps
+91,F
     rlcf _temps
+83,F
     rlcf _temps
+75,F
     rlcf _temps
+67,F
     rlcf _temps
+59,F
     rlcf _temps
+51,F
     rlcf _temps
+43,F
     rlcf _temps
+35,F
     rlcf _temps
+27,F
     rlcf _temps
+19,F
     rlcf _temps
+11,F
     rlcf _temps
+3,F
     bcf STATUS
,C
     rlcf _temps
+92,F
     rlcf _temps
+84,F
     rlcf _temps
+76,F
     rlcf _temps
+68,F
     rlcf _temps
+60,F
     rlcf _temps
+52,F
     rlcf _temps
+44,F
     rlcf _temps
+36,F
     rlcf _temps
+28,F
     rlcf _temps
+20,F
     rlcf _temps
+12,F
     rlcf _temps
+4,F
     bcf STATUS
,C
     rlcf _temps
+93,F
     rlcf _temps
+85,F
     rlcf _temps
+77,F
     rlcf _temps
+69,F
     rlcf _temps
+61,F
     rlcf _temps
+53,F
     rlcf _temps
+45,F
     rlcf _temps
+37,F
     rlcf _temps
+29,F
     rlcf _temps
+21,F
     rlcf _temps
+13,F
     rlcf _temps
+5,F
     bcf STATUS
,C
     rlcf _temps
+94,F
     rlcf _temps
+86,F
     rlcf _temps
+78,F
     rlcf _temps
+70,F
     rlcf _temps
+62,F
     rlcf _temps
+54,F
     rlcf _temps
+46,F
     rlcf _temps
+38,F
     rlcf _temps
+30,F
     rlcf _temps
+22,F
     rlcf _temps
+14,F
     rlcf _temps
+6,F
     bcf STATUS
,C
     rlcf _temps
+95,F
     rlcf _temps
+87,F
     rlcf _temps
+79,F
     rlcf _temps
+71,F
     rlcf _temps
+63,F
     rlcf _temps
+55,F
     rlcf _temps
+47,F
     rlcf _temps
+39,F
     rlcf _temps
+31,F
     rlcf _temps
+23,F
     rlcf _temps
+15,F
     rlcf _temps
+7,F
      movffl _save_bsr
,BSR      ; recharger BSR
      movffl _save_w
,WREG       ; recharger W
     
}
     Delay_ms(50);
  }while(1); 
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 39 invités