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

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#141 Message par francois77 » sam. 23 juil. 2022 12:59

Bonjour,

Merci pour ce message extrêmement agréable …

Pour Q1, je ne sais pas, pas trouvé sur mon schéma, mais j'ai des problèmes de vue

Pour SDA en open drain, je ne connais pas

Pour le résultat en réel cela fonctionne bien ..

Amicalement

Francois

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#142 Message par Temps-x » sam. 23 juil. 2022 16:38

Bonsoir francois77, paulfjujo, et tout le forum,

paulfjujo a écrit :Source du message Que vient faire Q1 dans ce schema ?


Le schéma c'est ce qu'on trouve sur l'arrière des écrans Oled, par curiosité j'ai contrôlé avec le mon écran oled, et j'en conclus qu'on bougeons les
2 résistances de 0 ohm on n'a plus besoin de mettre des résistances sur notre microcontrôleur quand on fait de I2C

Les valeurs de mes résistances ne son pas 4700 Ohms, mais 10000 ohms, j'en ai bien quatre 910k, 10k, 10k, 10k, les condensateurs son bien au nombre de sept, et j'ai bien un régulateur de tension(ce n'est pas un transistor 662k), avec une diode(T4)

Bien sur j'ai, exclus les résistances de 0 ohm, qui son au nombre de trois.

Voici mon écran vu de l'arrière

Écran oled.JPG


Merci pour le retour francois77, je vais essayer de bouger les straps au fer à soudé......

==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Temps-x le sam. 23 juil. 2022 17:12, modifié 2 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#143 Message par francois77 » sam. 23 juil. 2022 17:10

Bonjour Temps-X et tout le forum

Ma carte est différente, pas de résistance de 10k sur celle-ci, voir la photo

je suis bloqué actuellement sur la compréhension des modes plusieurs commandes / plusieurs données et je suis preneur de toutes proposition sur le sujet

A+
Francois


https://iotexpert.com/debugging-ssd1306 ... -problems/

Pour le reste de cet article, je me concentrerai sur l'interface série, I2C. Comment envoyez-vous des commandes et des données ? Simple. Lorsque vous démarrez une transaction, vous envoyez un octet de contrôle qui indique au contrôleur à quoi s'attendre ensuite. Il y a quatre octets de contrôle légaux.

0b10000000 = 0x80 = plusieurs commandes
0b00000000 = 0x00 = une commande
0b11000000 = 0xC0 = plusieurs données
0b01000000 = 0x40 = un octet de données
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#144 Message par Temps-x » sam. 23 juil. 2022 17:18

Re

Ton adresse c'est 0x3C, sur le schéma il y a une erreur, c'est pas un transistor, c'est un régulateur de tension 662K

Pour le reste je t'explique tous de suite, le temps de rédiger....

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

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#145 Message par Temps-x » sam. 23 juil. 2022 17:31

Re

il y a 2 modes, les commandes, et les données, il ne faut pas les confondes,


Voici le mode commande

Code : Tout sélectionner

;----------------- "fonction pour mettre l'écran oled 128x64 en mode commande" -----------------

i2c_commande
      call i2c_start                      
; 

      movf i2c_adresse
,W                  ; 8 bits à écrire (7 bits d'adresse+RW) 
      call i2c_ecrit                      ; RW = 0 écriture, RW = 1 lecture

      movlw 0x00                          ; mode commande
      call i2c_ecrit                      ; 

      return





Voici le mode donnée


Code : Tout sélectionner

;------------------ "fonction pour mettre l'écran oled 128x64 en mode donnée" ------------------ 
i2c_donner
      call i2c_start                      
; 

      movf i2c_adresse
,W                  ; 8 bits à écrire (7 bits d'adresse+RW) 
      call i2c_ecrit                      ; RW = 0 écriture, RW = 1 lecture

      movlw 0x40                          ; mode donnée
      call i2c_ecrit                      ; 

      return



Ce qui change entre la commande et donnée, c'est 0x00 (mode commande), 0x40(mode donnée) c'est tout, pas la peine d'aller plus loin.

Une fois que tu as ouvert le mode commande tu envois tes commandes, avec la fonction i2c_ecrit quand c'est fini tu envois un i2c_stop, même chose pour le mode donnée.


Pour le i2c_ecrit, je l'ai modié pour un 18F, pour toi il faudra que tu changes de bank

Code : Tout sélectionner



i2c_ecrit  
     call i2c_clean                       
; on attend que le bus I2C soit prêt

    movwf SSP1BUF                         
; envoyé la donnée  

i2c_ack 
     call i2c_clean                       
; on attend que le bus I2C soit prêt

i2c_ack_reception
    btfsc SSP1CON2
,ACKSTAT 
    goto i2c_ack_reception                
; attend le retour d'un accusé de reception 

    return  


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

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#146 Message par francois77 » sam. 23 juil. 2022 17:58

Re bonjour,

1 ) l'adresse indiquée sur la carte n'est pas la bonne, c'est bien #DEFINE SDD1306_Adress 0x78 ( testé et validé en réel )

2) Pour les modes de commandes et données en 00 et 40 c'est ok , testé et validé depuis hier

Dans un précèdent message je parle de cela, lu sur le lien internet joint :

https://iotexpert.com/debugging-ssd1306 ... -problems/

Pour le reste de cet article, je me concentrerai sur l'interface série, I2C. Comment envoyez-vous des commandes et des données ? Simple. Lorsque vous démarrez une transaction, vous envoyez un octet de contrôle qui indique au contrôleur à quoi s'attendre ensuite. Il y a quatre octets de contrôle légaux.

0b10000000 = 0x80 = plusieurs commandes
0b00000000 = 0x00 = une commande
0b11000000 = 0xC0 = plusieurs données
0b01000000 = 0x40 = un octet de données

on retrouve bien les modes commande et données en 0c00 et 0x40, mais ce qui m'intrigue c'est le mode 0x80 et 0c0 qui pourrait peut être faire tourner plus vite nos macros

Pour info, il faut 100ms pour remplir l'écran complet

A+
Francois

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#147 Message par Temps-x » sam. 23 juil. 2022 18:22

re

francois77 a écrit :Source du message Pour info, il faut 100ms pour remplir l'écran complet


0x80 et 0xC0 jamais vu sur la datasheet, indique la page avec la datasheet que tu regardes, de plus même si c'est faisable tu n'auras pas plus vite

Les commandes une fois l'écran configurer, on sen sert quasiment plus.

Tu peux augmenter la vitesse jusqu'à 1M/B

Avec quartz 20 Mhz dans le registre SSPADD tu mets 00000100 tu tourneras à 1M/B si ton écran le supporte

==> A+
Modifié en dernier par Temps-x le dim. 24 juil. 2022 11:32, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#148 Message par Temps-x » sam. 23 juil. 2022 21:46

Re

francois77 a écrit :Source du message 1 ) l'adresse indiquée sur la carte n'est pas la bonne, c'est bien #DEFINE SDD1306_Adress 0x78 ( testé et validé en réel )


J'ai trouvé le pourquoi...

Tu as raison est tord... :-D c'est bien 0x3C, mais comme on rajoute le zéro pour écriture, pour ton cas, ça fait 0x78

Ne pas oublié pour un I2C en huit bits que l'adresse fait 7 bits le 0 c'est pour écrire et le 1 c'est pour lire, dans notre cas on fait juste de l'écriture .

0x3C (0111100 + 0) = 0x78

Pour nous facilité la vie certain concepteur nous mette directement l'adresse en i2c, malheureusement ça n'a pas était ton cas... :wink:

==> A+
Modifié en dernier par Temps-x le dim. 24 juil. 2022 10:42, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#149 Message par francois77 » dim. 24 juil. 2022 06:32

Bonjour a tous ,

j'avais déjà lu cette info sur un autre site, mais je n'ai pas penser a la remonter dans un message.
c'est un vrai piège a C..

Pour dédouaner mon adresse j'avais utiliser ton petit programme de test des adresses I2C, qui est bien pratique

Mon programme tourne en I2C pour l'écriture d'un message , voir la photo
le but était de tester le fonctionnement et pas la police!

Il me reste a le mettre au propre

Ce matin, sortie velo, cela va me permettre de de faire une raz du cerveau !!!

Bonne journée a tous
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
francois77
Passioné
Passioné
Messages : 307
Enregistré en : avril 2022

#150 Message par francois77 » mar. 26 juil. 2022 06:42

Bonjour à tous

Petit rex perso du matin sur Proteus en mode I2C

J’ai voulu faire un test simple sur la gestion des commandes : Inversion du fond d’écran


call SDD1306_commande_I2C ( 0x78 0x00)
movlw 0xa7
movwf Val_Tab
call i2c_write
call i2c_stop
call Tempo_10ms

call Tempo_1s
call Tempo_1s

call SDD1306_commande_I2C
movlw 0xa6
movwf Val_Tab ;
call i2c_write
call i2c_stop ; fin du transfert
call Tempo_10ms

call Tempo_1s
call Tempo_1s


L’essai sur Proteus c’est soldé sur un échec.
L’essai en réel est conforma à l’attendu
Par contre si je définie un écran inversé en phase Init cela fonctionne

Conclusion, je pense que l’on atteint les limites du simulateur

A+
Francois


Retourner vers « Langage ASM »

Qui est en ligne

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