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)
Bonsoir francois77, paulfjujo, et tout le forum,
Entre la réalité, et la vrai vie, il y a une marge à franchir, un simulateur est incapable de dire si ta résistance va grillé ....
il va juste appliqué la formule qu'on lui à mi, les concepteurs de t'elle logiciel doivent vraiment souffrir quand il conçoit de t'elle programme, ça demande une connaisance très, très, poussé.
Sinon pour inversion des couleurs, tu mets un xorlw b'11111111'
Exemple
A+
francois77 a écrit :Source du message L’essai sur Proteus c’est soldé sur un échec.
L’essai en réel est conforma à l’attendu
Entre la réalité, et la vrai vie, il y a une marge à franchir, un simulateur est incapable de dire si ta résistance va grillé ....
il va juste appliqué la formule qu'on lui à mi, les concepteurs de t'elle logiciel doivent vraiment souffrir quand il conçoit de t'elle programme, ça demande une connaisance très, très, poussé.
Sinon pour inversion des couleurs, tu mets un xorlw b'11111111'
Exemple
Code : Tout sélectionner
call i2c_donner ; ouverture i2c pour mode donnée
movlw D'4' ; page 4, tableaux "dico" de 255 octets.
movwf PCLATH ;
call dico ; aller chercher la valeur
; au retour la valeur est dans W
btfsc couleur,0
xorlw b'11111111' ; inversion des couleurs si couleur = 1
call i2c_ecrit ; écrire les données sur i2c
call i2c_stop ; stopper i2c
A+
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
-
francois77
Passioné- Messages : 307
- Enregistré en : avril 2022
Bonjour a tous
Mon message précèdent avait pour but d’informer un éventuel lecteur de ce sujet
Les commandes d’inversion fonctionnant correctement en réel, je ne vais pas développer un code supplémentaire
En complément 3 codes qui fonctionnent partiellement sur simu mais correctement en réel
A+
Francois
SDD1306_Arret_Defil_I2C: ;
;
call SDD1306_commande_I2C;
movlw 0x2E ; code d'arrêt du défilement
movwf Val_Tab ;
call i2c_write ;
call i2c_stop ; fin du transfert
call Tempo_10ms ;
return ;
;*******************************************************************************
SDD1306_Defil_H_I2c:
call SDD1306_commande_I2C
movlw 0x27 ; défilement a droite =0x26
movwf Val_Tab ; défilement a gauche =0x27
call i2c_write ;
;
movlw 0x00 ; Bit mort
movwf Val_Tab ;
call i2c_write ;
;
movlw d'2' ; ligne de depart du defilement de 0 à 7
movwf Val_Tab ;
call i2c_write ;
;
movlw d'5' ; 0 a 7 vitesse de defilement
movwf Val_Tab ;
call i2c_write ;
;
movlw 0x05 ; ligne de fin de defilment 0 - 7
movwf Val_Tab ;
call i2c_write ;
; Important : ne fonctionne pas sous proteus mais ok en reel
movlw d'0' ; colonne de debut de defilement
movwf Val_Tab ;
call i2c_write ;
;
movlw D'127' ; colonne de fin de defilement
movwf Val_Tab ;
call i2c_write ; genere un defaut sur proteus non bloqiuant
; [SSD1306 CWR] Dummy byte F[7:0] should be set as FFh. [LCD2_U1_U1]
;
movlw 0x00 ; bit mort
movwf Val_Tab ;
call i2c_write ;
;
movlw 0x2f ; validation defilement
movwf Val_Tab ;
call i2c_write ;
;
call i2c_stop ; fin du transfert
call Tempo_10ms ;
return ;
;*******************************************************************************
SDD1306_Defil_V_I2C:
call SDD1306_commande_I2C;
movlw 0x29 ; defilement a droite =0x26
movwf Val_Tab ; defilement a gauche =0x27
call i2c_write ;
;
movlw 0x00 ; Bit mort
movwf Val_Tab ;
call i2c_write ;
;
movlw d'0' ; ligne de depart du defilement de 0 à 7
movwf Val_Tab ;
call i2c_write ;
;
movlw d'5' ; 0 a 7 vitesse de defilement
movwf Val_Tab ;
call i2c_write ;
;
movlw 0x07 ; ligne de fin de defilment 0 - 7
movwf Val_Tab ;
call i2c_write ;
movlw 0x01 ;
movwf Val_Tab ;
call i2c_write ;
; Important : ne fonctionne pas sous proteus mais ok en reel
movlw d'0' ; colonne de debut de defilement
movwf Val_Tab ;
call i2c_write ;
;
movlw D'127' ; colonne de fin de defilement 0 127
movwf Val_Tab ;
call i2c_write ; genere un defaut sur proteus non bloqiuant
; [SSD1306 CWR] Dummy byte F[7:0] should be set as FFh. [LCD2_U1_U1]
;
movlw 0x00 ; bit mort
movwf Val_Tab ;
call i2c_write ;
;
movlw 0x2f ; validation defilement
movwf Val_Tab ;
call i2c_write ;
;
call i2c_stop ; fin du transfert
call Tempo_10ms ;
return
Mon message précèdent avait pour but d’informer un éventuel lecteur de ce sujet
Les commandes d’inversion fonctionnant correctement en réel, je ne vais pas développer un code supplémentaire
En complément 3 codes qui fonctionnent partiellement sur simu mais correctement en réel
A+
Francois
SDD1306_Arret_Defil_I2C: ;
;
call SDD1306_commande_I2C;
movlw 0x2E ; code d'arrêt du défilement
movwf Val_Tab ;
call i2c_write ;
call i2c_stop ; fin du transfert
call Tempo_10ms ;
return ;
;*******************************************************************************
SDD1306_Defil_H_I2c:
call SDD1306_commande_I2C
movlw 0x27 ; défilement a droite =0x26
movwf Val_Tab ; défilement a gauche =0x27
call i2c_write ;
;
movlw 0x00 ; Bit mort
movwf Val_Tab ;
call i2c_write ;
;
movlw d'2' ; ligne de depart du defilement de 0 à 7
movwf Val_Tab ;
call i2c_write ;
;
movlw d'5' ; 0 a 7 vitesse de defilement
movwf Val_Tab ;
call i2c_write ;
;
movlw 0x05 ; ligne de fin de defilment 0 - 7
movwf Val_Tab ;
call i2c_write ;
; Important : ne fonctionne pas sous proteus mais ok en reel
movlw d'0' ; colonne de debut de defilement
movwf Val_Tab ;
call i2c_write ;
;
movlw D'127' ; colonne de fin de defilement
movwf Val_Tab ;
call i2c_write ; genere un defaut sur proteus non bloqiuant
; [SSD1306 CWR] Dummy byte F[7:0] should be set as FFh. [LCD2_U1_U1]
;
movlw 0x00 ; bit mort
movwf Val_Tab ;
call i2c_write ;
;
movlw 0x2f ; validation defilement
movwf Val_Tab ;
call i2c_write ;
;
call i2c_stop ; fin du transfert
call Tempo_10ms ;
return ;
;*******************************************************************************
SDD1306_Defil_V_I2C:
call SDD1306_commande_I2C;
movlw 0x29 ; defilement a droite =0x26
movwf Val_Tab ; defilement a gauche =0x27
call i2c_write ;
;
movlw 0x00 ; Bit mort
movwf Val_Tab ;
call i2c_write ;
;
movlw d'0' ; ligne de depart du defilement de 0 à 7
movwf Val_Tab ;
call i2c_write ;
;
movlw d'5' ; 0 a 7 vitesse de defilement
movwf Val_Tab ;
call i2c_write ;
;
movlw 0x07 ; ligne de fin de defilment 0 - 7
movwf Val_Tab ;
call i2c_write ;
movlw 0x01 ;
movwf Val_Tab ;
call i2c_write ;
; Important : ne fonctionne pas sous proteus mais ok en reel
movlw d'0' ; colonne de debut de defilement
movwf Val_Tab ;
call i2c_write ;
;
movlw D'127' ; colonne de fin de defilement 0 127
movwf Val_Tab ;
call i2c_write ; genere un defaut sur proteus non bloqiuant
; [SSD1306 CWR] Dummy byte F[7:0] should be set as FFh. [LCD2_U1_U1]
;
movlw 0x00 ; bit mort
movwf Val_Tab ;
call i2c_write ;
;
movlw 0x2f ; validation defilement
movwf Val_Tab ;
call i2c_write ;
;
call i2c_stop ; fin du transfert
call Tempo_10ms ;
return
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
-
francois77
Passioné- Messages : 307
- Enregistré en : avril 2022
Bonjour a tous
Contrairement a ce que j'avais dit, il est possible de piloter un sdd1306 en mode SDI et I2C sous Proteus
Détection du même problème pour l'inversion d'écran qui ne fonctionne pas sur le simulateur mais fonctionne correctement en réel
Il me reste a gratter les fonctions graphiques
A+
francois
Contrairement a ce que j'avais dit, il est possible de piloter un sdd1306 en mode SDI et I2C sous Proteus
Détection du même problème pour l'inversion d'écran qui ne fonctionne pas sur le simulateur mais fonctionne correctement en réel
Il me reste a gratter les fonctions graphiques
A+
francois
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
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Bonjour francois77, et tout le forum,
C'est un très gros sujet que tu attaques, en langage de haut niveau, pas de problème, tout est inclus pour faire un cercle, carré, triangle, ligne droite, etc....
Mais en ASM, il faut relevé les manches, et apprendre les technique de ceux qui vende des fonctions toute faite dans les langages de haut niveau.
La première chose qu'il faut savoir faire, c'est une ligne droite, car pas de ligne droite pas de cercle (la relativité... )
Après on utilise le procéder de Pythagore, on gardant une distance égal à chaque décente, et monté, il y a pas mal de mathématique pour arrivé à un résultat,
je vais voir pour 'une fonction cercle après les essais Dtmf de paulfjujo
A tout hasard, si tu veux vraiment t'accrocher, voici une routine que j'ai écrit en ASM pour pic 16F et 18F, pour une ligne droite,
attention c'est du hard sans X
Je viens de m'apercevoir que j'avais déjà ouvert un post sur l'algorithme de Bresenham, voici le lien pour téléchargement du code + le fichier compiler ICI
Voici un lien qui explique le procéder ICI
Quand tu sais le faire en ASM , ça reste similaire pour tout les écrans à pixel, mais tu n'as pas à sortir le porte monnaie à chaque instant.
A+
C'est un très gros sujet que tu attaques, en langage de haut niveau, pas de problème, tout est inclus pour faire un cercle, carré, triangle, ligne droite, etc....
Mais en ASM, il faut relevé les manches, et apprendre les technique de ceux qui vende des fonctions toute faite dans les langages de haut niveau.
La première chose qu'il faut savoir faire, c'est une ligne droite, car pas de ligne droite pas de cercle (la relativité... )
Après on utilise le procéder de Pythagore, on gardant une distance égal à chaque décente, et monté, il y a pas mal de mathématique pour arrivé à un résultat,
je vais voir pour 'une fonction cercle après les essais Dtmf de paulfjujo
A tout hasard, si tu veux vraiment t'accrocher, voici une routine que j'ai écrit en ASM pour pic 16F et 18F, pour une ligne droite,
attention c'est du hard sans X
Je viens de m'apercevoir que j'avais déjà ouvert un post sur l'algorithme de Bresenham, voici le lien pour téléchargement du code + le fichier compiler ICI
Voici un lien qui explique le procéder ICI
Quand tu sais le faire en ASM , ça reste similaire pour tout les écrans à pixel, mais tu n'as pas à sortir le porte monnaie à chaque instant.
A+
Modifié en dernier par Temps-x le dim. 9 oct. 2022 11:46, modifié 4 fois.
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
-
francois77
Passioné- Messages : 307
- Enregistré en : avril 2022
Bonjour Temps-X
Merci pour ton retour
Dans ma tête, je pensais avoir lu un exemple en ASM sur le forum !!!
Je voulais m’amuser avec un 18f sur le sujet, mais c’est très difficile d’obtenir un pic type 18f26k22 ou un de cousin en ce moment
J’ai fait une commande sur EBay et je suis en attente depuis 15 jours pour un achat en France
J’ai fait une autre commande sur Ali et j’ai reçu un paquet vide !! , réclamation et remboursement, mais toujours pas de pic
A+
Francois
Merci pour ton retour
Dans ma tête, je pensais avoir lu un exemple en ASM sur le forum !!!
Je voulais m’amuser avec un 18f sur le sujet, mais c’est très difficile d’obtenir un pic type 18f26k22 ou un de cousin en ce moment
J’ai fait une commande sur EBay et je suis en attente depuis 15 jours pour un achat en France
J’ai fait une autre commande sur Ali et j’ai reçu un paquet vide !! , réclamation et remboursement, mais toujours pas de pic
A+
Francois
Modifié en dernier par francois77 le sam. 8 oct. 2022 17:04, modifié 1 fois.
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
Re
Ben non, car je suis malheureusement un des seules à diffuser mes sources avec exemple, il y avait bien JJE, et F6FCO, mes on n'a plus de nouvelle d'eux.
Le seule post sur les tracé de ligne droite, c'est moi qui les est mis en ligne ICI
Tu peux le Faire avec un Pic16f876(A), car pas besoin de grosse mémoire ram pour ce genre d'algorithme, je viens de voir qu'il existe un algorithme de Bresenham pour cercle, intéressant tout ça.
A+
francois77 a écrit :Source du message Dans ma tête, je pensais avoir lu un exemple en ASM sur le forum !!!
Ben non, car je suis malheureusement un des seules à diffuser mes sources avec exemple, il y avait bien JJE, et F6FCO, mes on n'a plus de nouvelle d'eux.
Le seule post sur les tracé de ligne droite, c'est moi qui les est mis en ligne ICI
Tu peux le Faire avec un Pic16f876(A), car pas besoin de grosse mémoire ram pour ce genre d'algorithme, je viens de voir qu'il existe un algorithme de Bresenham pour cercle, intéressant tout ça.
A+
Modifié en dernier par Temps-x le sam. 8 oct. 2022 19:47, modifié 1 fois.
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
-
francois77
Passioné- Messages : 307
- Enregistré en : avril 2022
Re Bonjour Temps-X
Pour faire un cercle, c’est peut être possible si tu le pense, mais je ne suis pas sûr que cela sera possible pour plusieurs cercles avec un 16f876 (j’ai pas avec le A, c’était ma commande en chine pour tester la fonction oscillateur)
Je suis entrain de faire un petit programme sous Excel pour faire une image
La partie centrale sera géré par mon petit programme de vu mètre basique
Tracé manuel ….
Et extraction des données sous DA 0X00 0x44 … pour la partie cercle
Je continuer de chercher un pic 18F compatible Mplab et Proteus, mais ce n’est pas gagné…
A+
Francois
Pour faire un cercle, c’est peut être possible si tu le pense, mais je ne suis pas sûr que cela sera possible pour plusieurs cercles avec un 16f876 (j’ai pas avec le A, c’était ma commande en chine pour tester la fonction oscillateur)
Je suis entrain de faire un petit programme sous Excel pour faire une image
La partie centrale sera géré par mon petit programme de vu mètre basique
Tracé manuel ….
Et extraction des données sous DA 0X00 0x44 … pour la partie cercle
Je continuer de chercher un pic 18F compatible Mplab et Proteus, mais ce n’est pas gagné…
A+
Francois
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
Les Pic16F876 et Pic16F876A son tous les deux compatible pour effectuer des cercles, ou plusieurs cercle.
La seule chose que tu ne pourras pas faire, pour les deux Pic, c'est stocker le dessin que tu as dessiné, ce qui engendre une non manipulation du dessins.
Car il faut au moins 1024 octets de sram pour stocker l'écran, Oled 128x64.
Le Pic18F26K22 et compatible pour Mplab 8.92 c'est la dernière version de Microchip à faire de l'assembleur.
Et de plus, il est parfait pour ce que tu veux faire, 3896 de sram, 1024 octets d'éeprom, 65536 octets de mémoire flash...bref de quoi s'amuser un bon moment
Pas mal pour un début tes cercles, bon il faudra arrondir les cotés.... mais bon c'est que le début.
A+
francois77 a écrit :Source du message cela sera possible pour plusieurs cercles avec un 16f876 (j’ai pas avec le A
Les Pic16F876 et Pic16F876A son tous les deux compatible pour effectuer des cercles, ou plusieurs cercle.
La seule chose que tu ne pourras pas faire, pour les deux Pic, c'est stocker le dessin que tu as dessiné, ce qui engendre une non manipulation du dessins.
Car il faut au moins 1024 octets de sram pour stocker l'écran, Oled 128x64.
francois77 a écrit :Source du message Je continuer de chercher un pic 18F compatible Mplab et Proteus, mais ce n’est pas gagné…
Le Pic18F26K22 et compatible pour Mplab 8.92 c'est la dernière version de Microchip à faire de l'assembleur.
Et de plus, il est parfait pour ce que tu veux faire, 3896 de sram, 1024 octets d'éeprom, 65536 octets de mémoire flash...bref de quoi s'amuser un bon moment
Pas mal pour un début tes cercles, bon il faudra arrondir les cotés.... mais bon c'est que le début.
A+
Écran OLED 128x64(Ssd1306) et Écran OLED 132x64(Ssd1106)
-
francois77
Passioné- Messages : 307
- Enregistré en : avril 2022
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 32 invités