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 : mazertoc
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
-
francois77
Passioné- Messages : 307
- Enregistré en : avril 2022
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Bonsoir francois77, paulfjujo, et tout le forum,
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
Merci pour le retour francois77, je vais essayer de bouger les straps au fer à soudé......
A+
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
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.
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
-
francois77
Passioné- Messages : 307
- Enregistré en : avril 2022
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
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)
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+
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+
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Re
il y a 2 modes, les commandes, et les données, il ne faut pas les confondes,
Voici le mode commande
Voici le mode donnée
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
A+
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+
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
-
francois77
Passioné- Messages : 307
- Enregistré en : avril 2022
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
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)
re
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+
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.
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Re
J'ai trouvé le pourquoi...
Tu as raison est tord... 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...
A+
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... 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...
A+
Modifié en dernier par Temps-x le dim. 24 juil. 2022 10:42, modifié 1 fois.
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
-
francois77
Passioné- Messages : 307
- Enregistré en : avril 2022
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
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é- Messages : 307
- Enregistré en : avril 2022
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
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