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

Ecran LCD ILI9341 pour les nuls en assembleur
francois77
Passionné
Passionné
Messages : 307
Enregistré en : avril 2022

#21 Message par francois77 » mer. 15 févr. 2023 11:49

Bonjour Satinas et tout le forum

Merci pour le lien , cette doc est top

Je viens d'acheter une boite d'aspirine pour moi aussi

A+

Francois

Ecran LCD ILI9341 pour les nuls en assembleur
francois77
Passionné
Passionné
Messages : 307
Enregistré en : avril 2022

#22 Message par francois77 » mer. 15 févr. 2023 20:48

Bonsoir a tous

pour lire un tableau j'utilise

tableau T_G_calibri_10pt ; macro : qui permets de se positionner à l'adresse demandé
tblrd* ; effectue la lecture,
movff TABLAT,Taille_Espace
tblrd*+ ;
movff TABLAT,Nbre_Colonne_Max

Cela me permet de lire mes valeurs d'init de ma police
Est il possible avec un 18f d'avoir un "système/commande" pour lire un autre tableau en même temps sans passer par des sauvegardes des adresses de TBLPTRH et TBLPTRL

J'attaque les polices et je doit jongler avec mes connaissances du 16f et intégrer tout cela :sifflotte:

Pas facile de devenir grand :sifflotte:

A +
Francois

Ecran LCD ILI9341 pour les nuls en assembleur
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2889
Enregistré en : juillet 2016
Localisation : Terre

#23 Message par Temps-x » jeu. 16 févr. 2023 03:12

Bonsoir francois77, satinas, et tout le forum,

Merci ! satinas pour ton implication et tes explications, je vais faire des tests dans Mplab 8.92, histoire de bien comprendre, ça ouvre pas mal de possibilité cette technique, il faut que j'arrive à assimilé cette méthode et surtout de bien la comprendre.

francois77 a écrit :Source du message Temps-x : dans tes programmes tu initialise les variables de la bank0 en 0X20 pourquoi ?


:+1: Bonne question, et voici la réponse : c'est vrai que la bank0, commence à 0x000, mais...je me suis aperçu quand mettant mes variables à 0x000 j'avais des problèmes lors de la relecture, ou stockage, je ne sais pas pourquoi....

francois77 a écrit :Source du message Est il possible avec un 18f d'avoir un "système/commande" pour lire un autre tableau en même temps sans passer par des sauvegardes des adresses de TBLPTRH et TBLPTRL


Non, on ne peut lire qu'un seule tableau à la fois, par contre tu peux utiliser ce que tu connais sur les Pic16F



Code : Tout sélectionner



affiche_ascii                  
      movlw HIGH
(message)                 ; adresse du message
      movwf PCLATH                        
;

lire_oled
      call message                        
;
      movwf lettre

;******************************************************************************************************
suite
      tblrd
*+                             ; effectue la lecture, et ensuite incrémente TBLPTR  
      movf TABLAT
,W                       ; 
      movwf fonts                         
; 


Dans cette exemple tu peux ouvrir 2 tableaux, le premier et limité à 255 caractères, quand à l'autre il y a aucune limite

Attention, toutefois sur la première méthode, il faut écrire sur un 18F comme ceci

Code : Tout sélectionner


    ORG H
'6000'                           ; message

message
      rlncf WREG
,F
      addwf PCL
,F

       dt 
"    Valeur Osctune   "         ; ‚  0  
       dt 
"   Ecriture eeprom ok"         ; ‚  22
       dt 
"                     "         ; ‚  44  
       dt 
"                     "         ; ‚  66  
       dt 
"                     "         ; ‚  88
       dt 
"                     "         ; ‚  110
       dt 
"                     "         ; ‚  132
       dt 
"                     "         ; ‚  154 
       dt 
"                     "         ; ‚  176           



Fait une comparaison avec un 16F tu pourras t'apercevoir qu'il y a une petite différence.


==> A+
Modifié en dernier par Temps-x le ven. 17 févr. 2023 02:08, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Ecran LCD ILI9341 pour les nuls en assembleur
satinas
Expert
Expert
Messages : 1489
Enregistré en : novembre 2015

#24 Message par satinas » jeu. 16 févr. 2023 06:47

Bonjour,
Maintenant que j'ai compris ce qui bloquait :)
Dans le programme de l'horloge, il y a des choses similaires.

Code : Tout sélectionner

  #define FIX         1000100   ; nombre de us par seconde avec correction

  #define SEC_U       (FIX>>16)          ; ou upper FIX
  #define SEC_H       ((FIX>>8)&0xff)    ; ou high  FIX
  #define SEC_L       (FIX&0xff)         ; ou low   FIX
  ...
  movlw   SEC_U+1       ; cpt = 1000100 + 65536
  movwf   cpt_u
  movlw   SEC_H
  movwf   cpt_h
  movlw   SEC_L
  movwf   cpt_l
  ...

Sans les defines, on aurait pu et dû écrire :

Code : Tout sélectionner

  movlw   (1000100>>16)+1     ; cpt = 1000100 + 65536
  movwf   cpt_u
  movlw   (1000100>>8) & 0xff
  movwf   cpt_h
  movlw   1000100 & 0xff
  movwf   cpt_l

  movlw   (upper 1000100)+1   ; cpt = 1000100 + 65536
  movwf   cpt_u
  movlw   high 1000100
  movwf   cpt_h
  movlw   low 1000100
  movwf   cpt_l

Ecran LCD ILI9341 pour les nuls en assembleur
francois77
Passionné
Passionné
Messages : 307
Enregistré en : avril 2022

#25 Message par francois77 » jeu. 16 févr. 2023 17:38

Bonjour A tous,

Panique a bas bord :furieux: :furieux: :furieux: :furieux:

j'ai un tableau de X données qui a l'origine était de la forme

DB 0x0A, 0x0B, 0x0C
DB 0x01, 0x02, 0x03
DB 0x00, 0x00, 0x00
DB 0x00, 0x00, 0x00
DB 0x00, 0x00, 0x00
DB, 0x00, 0x00, 0x00

Et j'ai eu une grosse surprise car il me rajoute un 0X00 a chaque DB :geek: :geek:

Conclusion il faut que mes tableaux de données soit pair pour que cela fonctionne correctement

DB 0x0A, 0x0B, 0x0C , 0x01, 0x02, 0x03
DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
DB 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

Avez vous une idée ?

Satinas : je viens de voir ton sujet, je regarderais, tes macros c'est tip top pour les 16bits

A+
Francois

Ecran LCD ILI9341 pour les nuls en assembleur
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2889
Enregistré en : juillet 2016
Localisation : Terre

#26 Message par Temps-x » jeu. 16 févr. 2023 17:57

Bonsoir francois77, satinas, et tout le forum,

francois77 a écrit :Source du message Conclusion il faut que mes tableaux de données soit pair pour que cela fonctionne correctement


Exact, toujours écrire par paire, les Pic18Fxxxx son plus facile quand tu connais leurs faiblesse, je voulais t'en parler, mais vu l'heure qu'il était, j'ai
préféré aller me coucher.

==> A+
Modifié en dernier par Temps-x le jeu. 16 févr. 2023 19:48, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Ecran LCD ILI9341 pour les nuls en assembleur
francois77
Passionné
Passionné
Messages : 307
Enregistré en : avril 2022

#27 Message par francois77 » jeu. 16 févr. 2023 18:10

Temps-x

C'est un beau piège a C....

Va falloir que je reprenne mon petit logiciel pour mes polices

A+
Francois

Ecran LCD ILI9341 pour les nuls en assembleur
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2889
Enregistré en : juillet 2016
Localisation : Terre

#28 Message par Temps-x » jeu. 16 févr. 2023 19:39

francois77 a écrit :Source du message C'est un beau piège a C


humour!! ici c'est ASM

==> A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Ecran LCD ILI9341 pour les nuls en assembleur
francois77
Passionné
Passionné
Messages : 307
Enregistré en : avril 2022

#29 Message par francois77 » jeu. 16 févr. 2023 20:09

Bonsoir a tous

Trop fort Temps-x …

Arrêt du projet ASM pour l’instant cependant je vais tenter d’expliquer mon idée sur les polices

Je définie une zone d’écriture exemple = 15pixels sur 200
15 pixel = hauteur de ma police
200 pixel = c’est la longueur de ma chaine composé de caractère +espace

Pour chaque caractère de mon texte je vais écrire de bas en haut (15pixel) * X fois la largeur de mon caractère + un espace de x pixel et ainsi de suite

Pour faire cela j’utiliserais une macro Excel qui me permet de générer mes polices
- Un fichier sur les généralités de la police
- Un fichier qui donne les adresses de chaque caractère dans un fichier des données
- Un fichier données qui contient les valeurs des caractères

Les avantages par rapport à un écran SDD1306
La couleur
La taille 360 * 240
La possibilité d’écrire du texte a une position de 1 pixel près en XY
Les inconvénients
La vitesse d’écriture et l’abandon d’un pic 16F876
Mon Ecran est toujours sur la route mais devrait arriver la semaine prochaine

Le choix du Pic
18f26k22 que j’ai en ma possession (merci Jérémy)
Possibilité de fonctionner 3.3V
Facilité de gestion sur les accès mémoire (merci Temps-x)
Facilité sur la gestion de valeurs 16Bits (Merci Satinas)

Retour sur le sujet dans quelques jours ou semaines, le temps de mettre à jours mon fichier Excel

L’inconvénient majeur du 18f , c'est le format des fichiers de données obligatoirement en pseudo 16bits

A+
Francois

Ecran LCD ILI9341 pour les nuls en assembleur
francois77
Passionné
Passionné
Messages : 307
Enregistré en : avril 2022

#30 Message par francois77 » sam. 18 févr. 2023 18:16

Bonjour,

Apres avoir galéré avec le format de tableaux pairs pendant quelques heures ...... pour mes fichiers de données

Passer un peut temps sur l'Asm

Je me contenterais pour ce soir, l'affichage d'un modeste "0"


exit

Bon Week-end

Francois
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.


Retourner vers « Langage ASM »

Qui est en ligne

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