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 ---
- 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 ---
Modérateur : Jérémy
Fonctionnement des "FONT" sur écran OLED
-
Jérémy

Administrateur du site- Messages : 2750
- Âge : 46
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Ok programme de test fini !
Avant "d’automatiser" la chose, il faudrait déjà réussir a ecrire correctement . Partons d'un exemple simple le "4" .
Il fait 16x8 parfait :
On voit trés bien que le premier chiffre hexa correpsond à la ligne tout en haut du chiffre. donc = 0x00 car aucun pixel d'allumé.
La deuxieme ligne il allume l'avant dernier bit . soit le 2, en binaire 0b00000010 et en hexa 0x02
et ainsi de suite jusqu'en bas du chiffre . Ils empilent donc les lignes du haut vers le bas .
Mais le SSD1306 ne sait pas faire cela. lui les données qu'on lui envoie sont en colonne . Pour faire le même chiffre il faudrait obtenir ceci :
Il faut donc transformer les valeurs du dessus pour obtenir celle-ci .
Avant "d’automatiser" la chose, il faudrait déjà réussir a ecrire correctement . Partons d'un exemple simple le "4" .
Il fait 16x8 parfait :
Code : Tout sélectionner
# @352 '4' (8 pixels wide)
0x00, #
0x02, # O
0x06, # OO
0x0A, # O O
0x12, # O O
0x12, # O O
0x22, # O O
0x42, # O O
0x82, # O O
0xFF, # OOOOOOOO
0x02, # O
0x02, # O
0x02, # O
0x00, #
0x00, #
0x00, #
On voit trés bien que le premier chiffre hexa correpsond à la ligne tout en haut du chiffre. donc = 0x00 car aucun pixel d'allumé.
La deuxieme ligne il allume l'avant dernier bit . soit le 2, en binaire 0b00000010 et en hexa 0x02
et ainsi de suite jusqu'en bas du chiffre . Ils empilent donc les lignes du haut vers le bas .
Mais le SSD1306 ne sait pas faire cela. lui les données qu'on lui envoie sont en colonne . Pour faire le même chiffre il faudrait obtenir ceci :
Code : Tout sélectionner
0x00
0x80
0x40
0x30
0x08
0x04
0xFE
0x00
0x00
0x03
0x02
0x02
0x02
0x02
0x1F
0x02
1 #
2 # O
3 # OO
4 # O O
5 # O O
6 # O O
7 # O O
8 # O O
9 # O O
10# OOOOOOOO
11# O
12# O
13# O
14#
15#
16#
Il faut donc transformer les valeurs du dessus pour obtenir celle-ci .
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Fonctionnement des "FONT" sur écran OLED
-
Jérémy

Administrateur du site- Messages : 2750
- Âge : 46
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
en lisant mon petit graphique je comprends .
Que chaque bit de la valeur reçue ( correspondant à la premier ligne) doit aller dans le LSB de chaque nouvelle valeur . 0b 0000000x
Chaque bit de la deuxième ligne doit aller dans 0b 000000x0 de la nouvelle valeur
Non je suis regarde ce qu'est un tableau à deux dimensions !
Stop ! 
Que chaque bit de la valeur reçue ( correspondant à la premier ligne) doit aller dans le LSB de chaque nouvelle valeur . 0b 0000000x
Chaque bit de la deuxième ligne doit aller dans 0b 000000x0 de la nouvelle valeur
c'est bon pour les tableaux?
et on a extrait le premier octettu suis sinon stop
Stop ! Fonctionnement des "FONT" sur écran OLED
Fonctionnement des "FONT" sur écran OLED
je suis retourne a mes origines ASM voici le code
deja plus de tableau a 2D
2 tableaux 1 matrice pointeur FSR0 l'autre resultat pointeur FSR1
2 boucles la J 16 passes la i 8 passes imbriquées.
explications:
on charge J
_____dans J
on charge 1 de 8
et on initialise le pointeur matrice
_____dans i
on récupère la donnée FSR0 pointeur0+1
on fait une rotation a gauche avec CARRY
on fait une rotation a gauche de carry avec pointeu1
fin de I
on boucle sur dans ______i
oui
pointeur1+1
fin de J non retourne dans _____J
oui fin
le problème en C c'est que tu ne peut pas faire des rotation avec CARRY
tu peux faire des tests sur des bits et en fonction de ces tests, tu positionnes le bit a 1 ou zéro de pointeur1(resultat)
Code : Tout sélectionner
LFSR FSR1,TableauB
MOVLW 0XF
MOVWF j
Bou LFSR FSR0,TableauA
MOVLW 0x08
MOVWF i
Bou1 BCF STATUS,C
RLCF POSTINC0,F
RLCF INDF1,F
DECFSZ i
BRA Bou1
MOVF POSTINC1,W
BRA Bou
DECFSZ j
BRA Bou
deja plus de tableau a 2D
2 tableaux 1 matrice pointeur FSR0 l'autre resultat pointeur FSR1
2 boucles la J 16 passes la i 8 passes imbriquées.
explications:
on charge J
_____dans J
on charge 1 de 8
et on initialise le pointeur matrice
_____dans i
on récupère la donnée FSR0 pointeur0+1
on fait une rotation a gauche avec CARRY
on fait une rotation a gauche de carry avec pointeu1
fin de I
on boucle sur dans ______i
oui
pointeur1+1
fin de J non retourne dans _____J
oui fin
le problème en C c'est que tu ne peut pas faire des rotation avec CARRY
tu peux faire des tests sur des bits et en fonction de ces tests, tu positionnes le bit a 1 ou zéro de pointeur1(resultat)
Fonctionnement des "FONT" sur écran OLED
Jérémy a écrit :Nous devons extraire chaque bit du premier octet reçue pour les mettre dans un tableau , c'est ca ?
Je pense que mon probléme est de savoir comment extraire chaque bit d'un octet pour le placer dans une case d'un tableau
oui c'est le problème en C, tu n'as par de rotation avec la retenue ,donc il faut passer par des test sur bit et en fonction du test tu positionnes le bit adéquate du résultat a zero ou 1
Fonctionnement des "FONT" sur écran OLED
premier boulot
faire une bout de code ou tu fais des tests SUR BIT et fonction tu positionnes le bit x a 1 ou 0 du resultat dans mon code c'est :
le reste
gestion de pointeur, et boucle imbriquées
faire une bout de code ou tu fais des tests SUR BIT et fonction tu positionnes le bit x a 1 ou 0 du resultat dans mon code c'est :
Code : Tout sélectionner
Bou1 BCF STATUS,C
RLCF POSTINC0,F
RLCF INDF1,Fle reste
Fonctionnement des "FONT" sur écran OLED
tient voila par exemple un test sur bit
Code : Tout sélectionner
res=res+1;
if (ClavCol & (1u<<5))
Fonctionnement des "FONT" sur écran OLED
-
Jérémy

Administrateur du site- Messages : 2750
- Âge : 46
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Oui comme je disais je pense uqe c'est prématuré pour moi de faire cela .
je ne sais pas ce qu'est un CARRY , je m'embrouille encore avec les pointeurs , alors mélangez tous ca et les imbriqués ..... je pense pas .
Moi je pensais faire 8 tableaux correspondant à mes colonnes .
A chaque valeur reçue( valeur en ligne) , je prends le premier bit et je le stock dans mon premier tableau a la première place, puis je prends le deuxième bit et je le stock dans mon deuxième tableau a la première place aussi , puis mon troisième bit à la première place de mon troisième tableau etccc .
La deuxième valeur reçue ( correspondant a la deuxième ligne en partant du haut), est décortiquée et mise dans la deuxième case de chacun de mes tableaux ...
Et ainsi de suite . jusqu'a reconstitué les 8 valeurs dans les 8 tableaux
Maintenant je ne sais pas comment extraire un bit d'un octet pou le placer dans un tableau
je ne sais pas ce qu'est un CARRY , je m'embrouille encore avec les pointeurs , alors mélangez tous ca et les imbriqués ..... je pense pas .
Moi je pensais faire 8 tableaux correspondant à mes colonnes .
A chaque valeur reçue( valeur en ligne) , je prends le premier bit et je le stock dans mon premier tableau a la première place, puis je prends le deuxième bit et je le stock dans mon deuxième tableau a la première place aussi , puis mon troisième bit à la première place de mon troisième tableau etccc .
La deuxième valeur reçue ( correspondant a la deuxième ligne en partant du haut), est décortiquée et mise dans la deuxième case de chacun de mes tableaux ...
Et ainsi de suite . jusqu'a reconstitué les 8 valeurs dans les 8 tableaux
Maintenant je ne sais pas comment extraire un bit d'un octet pou le placer dans un tableau
Fonctionnement des "FONT" sur écran OLED
-
Jérémy

Administrateur du site- Messages : 2750
- Âge : 46
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
J'ai pensé à un truc dans ce genre .
352 c'est la valeur ou commence le chiffre "4" .
352 c'est la valeur ou commence le chiffre "4" .
Code : Tout sélectionner
const code char font16x8[] =
{
-
-
-
// @352 '4' (8 pixels wide)
0x00, //
0x02, // O
0x06, // OO
0x0A, // O O
0x12, // O O
0x12, // O O
0x22, // O O
0x42, // O O
0x82, // O O
0xFF, // OOOOOOOO
0x02, // O
0x02, // O
0x02, // O
0x00, //
0x00, //
0x00, //
-
-
-
Code : Tout sélectionner
for (i=0;i<7;i++){
tableau_0[i] = ( (font16x8[352+i])>>7) && 0x01) ;
tableau_1[i] = ( (font16x8[352+i])>>6) && 0x01) ;
tableau_2[i] = ( (font16x8[352+i])>>5) && 0x01) ;
tableau_3[i] = ( (font16x8[352+i])>>4) && 0x01) ;
tableau_4[i] = ( (font16x8[352+i])>>3) && 0x01);
tableau_5[i] = ( (font16x8[352+i])>>2) && 0x01) ;
tableau_6[i] = ( (font16x8[352+i])>>1) && 0x01) ;
tableau_7[i] = ( (font16x8[352+i]) && 0x01) ;
}Fonctionnement des "FONT" sur écran OLED
moi je suis resté tient tu as tout pour finir
ici
ici
Code : Tout sélectionner
NB= NB & ~(1<< i); // bit en fonction de i a zero
NB=NB | (1<< i); // bit en fonction de i a 1
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 16 invités

