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
Ecran OLED rond GC9A01
Bonsoir paulfjujo, francois77, et tout le forum,
Ça me fait ça aussi, sur certain écran.... c'est magique
A+
paulfjujo a écrit :Source du message C'est à croire qu'à chaud , il avait de bon parametres stockés quelque part
Ça me fait ça aussi, sur certain écran.... c'est magique
A+
Ecran OLED rond GC9A01
-
francois77
Passionné- Messages : 307
- Enregistré en : avril 2022
Bonjour Paul,
Lors de la phase initialisation tu utilises ma séquence mini ou tu utilises la séquence d’init complète ?
Ayant eu des soucis il y a quelques années avec des écrans 2 et 4 lignes, j’avais résolu mon problème en jouant sur les tempos de la phase d’initialisation. Cela m’avait solutionné ce type de problème
Lors de tes essais tu passes par un écran plein de pixel aléatoire ou pas ?
Courage l’Ami, on ne va pas ce faire embêter par un petit écran !!
A+
Francois
Lors de la phase initialisation tu utilises ma séquence mini ou tu utilises la séquence d’init complète ?
Ayant eu des soucis il y a quelques années avec des écrans 2 et 4 lignes, j’avais résolu mon problème en jouant sur les tempos de la phase d’initialisation. Cela m’avait solutionné ce type de problème
Lors de tes essais tu passes par un écran plein de pixel aléatoire ou pas ?
Courage l’Ami, on ne va pas ce faire embêter par un petit écran !!
A+
Francois
Ecran OLED rond GC9A01
- paulfjujo
Expert- Messages : 2836
- Âge : 74
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour à tous,
J'ai strictement utilisé l'init de Francois ( ou la tienne ?) puisque la version ASM tourne OK avec un 18F26K22 ( en ASM)
Par contre je suis en SPI Hardware et de plus sur le 18F27K42 ...
et sous MikroC (... avant de repasser en XC8 )
dommage que mon analyser logique SQA 50MHz ne puisse pas suivre l'init avec ESP32 .. qui tourne OK
visu signal clock SPI à 10MHz !, mais pas de decodage data affiché ( tout à 0) ..
futur choix analyser , prevoir plutot à 200MHz !
la suite ... coté C
J'ai strictement utilisé l'init de Francois ( ou la tienne ?) puisque la version ASM tourne OK avec un 18F26K22 ( en ASM)
Par contre je suis en SPI Hardware et de plus sur le 18F27K42 ...
et sous MikroC (... avant de repasser en XC8 )
dommage que mon analyser logique SQA 50MHz ne puisse pas suivre l'init avec ESP32 .. qui tourne OK
visu signal clock SPI à 10MHz !, mais pas de decodage data affiché ( tout à 0) ..
futur choix analyser , prevoir plutot à 200MHz !
la suite ... coté C
Ecran OLED rond GC9A01
Ecran OLED rond GC9A01
-
francois77
Passionné- Messages : 307
- Enregistré en : avril 2022
Ecran OLED rond GC9A01
- paulfjujo
Expert- Messages : 2836
- Âge : 74
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour Francois,
vitesse SPI Clock verifié 8MHZ OK à l'oscillo
periode mesurée =126 nS (125nS theorique) avec OSCTUNE=0 pas de correction oscillateur interne 64MHZ
(08:38:05.902) Test duree Ecran Noir (SPI 8MHz!)
(08:38:06.197) Stop. SMT1=4666010 ,soit 291625 uS <--292mS
(08:38:06.232)
pour quelle vitesse SPI ?
francois a écrit :Quels fonction tu utilises pour effacer l'écran ?
Code : Tout sélectionner
void Ecran_Noir(void)
{ Word i;
SendCmd(0x2A);
SendData(0);SendData(0); SendData(0);SendData(0xEF);
SendCmd(0x2B);
SendData(0);SendData(0); SendData(0);SendData(0xEF);
SendCmd(0x2C);
for (i=0;i<57600;i++)
{ SendData(0x00);SendData(0x00);
}
}
vitesse SPI Clock verifié 8MHZ OK à l'oscillo
periode mesurée =126 nS (125nS theorique) avec OSCTUNE=0 pas de correction oscillateur interne 64MHZ
(08:38:05.902) Test duree Ecran Noir (SPI 8MHz!)
(08:38:06.197) Stop. SMT1=4666010 ,soit 291625 uS <--292mS
(08:38:06.232)
francois a écrit : pour écrire un écran noir de 249 *249 = 670ms
pour quelle vitesse SPI ?
Ecran OLED rond GC9A01
-
francois77
Passionné- Messages : 307
- Enregistré en : avril 2022
Bonjour Paul,
Pour te répondre avec mes faibles connaissances
Tu parles d'effacement d'écran alors que c'est plutôt l'écriture d'un écran avec un couleur fixe.
Ta procédure est identique a la mienne, envoi de de 2 octets * 240 *240 et en préalable définition de la zone d'écriture (qui ne doit pas modifier beaucoup le temps de traitement)
Pour la vitesse aucune idée, j'utilise la fonction SPI Bit-bang de Temps-x
Je doit avouer que je ne comprends toujours pas comment on peut aller plus vite que le mode SPI Bit-bang avec un 18f26k22 en ASM.
La vitesse de transfert est lié uniquement a la fréquence d'horloge du pic ?
Temps d'écriture d'un octet 5.6875µS * 240 *240 *2 = 0.6552 seconde
Je suis preneur de toute explication sur le sujet
A+
Francois
Pour te répondre avec mes faibles connaissances
Tu parles d'effacement d'écran alors que c'est plutôt l'écriture d'un écran avec un couleur fixe.
Ta procédure est identique a la mienne, envoi de de 2 octets * 240 *240 et en préalable définition de la zone d'écriture (qui ne doit pas modifier beaucoup le temps de traitement)
Pour la vitesse aucune idée, j'utilise la fonction SPI Bit-bang de Temps-x
Je doit avouer que je ne comprends toujours pas comment on peut aller plus vite que le mode SPI Bit-bang avec un 18f26k22 en ASM.
La vitesse de transfert est lié uniquement a la fréquence d'horloge du pic ?
Temps d'écriture d'un octet 5.6875µS * 240 *240 *2 = 0.6552 seconde
Je suis preneur de toute explication sur le sujet
A+
Francois
Ecran OLED rond GC9A01
- paulfjujo
Expert- Messages : 2836
- Âge : 74
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
francois77 a écrit :
Je doit avouer que je ne comprends toujours pas comment on peut aller plus vite que le mode SPI Bit-bang avec un 18f26k22 en ASM.
La vitesse de transfert est lié uniquement a la fréquence d'horloge du pic ?
Temps d'écriture d'un octet 5.6875µS * 240 *240 *2 = 0.6552 seconde
Oui, surtout de la frequence d'horloge du SPI ...mais pas seulement !
et accessoirement lié aussi à la frequence du PIC (FOSC) qui pilote les envois successif de data en SPI
en bit bang ,on a en plus ,les decalages à gerer ...qui prend du temps
d'ou vient cette valeur de 5.6875µS ?
du comptage de nombre d'instructions (en mode SPI bit bang) ?
si SPI speed = 8MHz
1 byte -> 8x 0,125µS=> 1µS (au niveau SPI HARDWARE)
mais il faut quelques BAUDS ( pour la detection de fin transfert des 8 bits)
et aussi des cycles MCU pour la boucle d'ecriture des 115200 envois
raisonnement uniquement au niveau SPI (theorique seulement) :
240x240x2 x 1µS =>115200µS --> 115mS
hors le chrono donne 291mS
(09:33:59.947) Test duree Ecran Noir (SPI 8MHz!)
(09:34:00.247) Stop. SMT1=4666010 ,soit 291625 uS 291mS !
291625 /115200 => moyenne de 2,53µS/byte
On va donc bien moins vite que la theorie ideale, meme en SPI hardware !
Ecran OLED rond GC9A01
- paulfjujo
Expert- Messages : 2836
- Âge : 74
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
.. bon, j'ai cherché moi-meme ..
donner_oled:
1 bsf LCD_DC ; DC = 1 en mode donnée
2 bra spi ; ecriture des données
spi: ;
1 movwf envoyer ;
1 movlw D'8' ; envoies de 8 bits
1 movwf bits ;
ev1_oled: ;
1 ou 2 btfss envoyer,7 ; 1 lecture sur le bit 7
1 bra ev2_oled ;
1 bsf LCD_MOSI ; envoie 1
1 bsf LCD_SCK ;
1 bcf LCD_SCK ;
2 bra ev3_oled ;
ev2_oled: ;
1 bcf LCD_MOSI ; envoie 0
1 bsf LCD_SCK ;
1 bcf LCD_SCK ;
ev3_oled: ;
1 rlncf envoyer,F ; rotation des bits à gauche sans carry
1 decfsz bits,F ;
2 bra ev1_oled ;
2 return ;
95 cycles * 0.0625 = 5.9375 µS
donner_oled:
1 bsf LCD_DC ; DC = 1 en mode donnée
2 bra spi ; ecriture des données
spi: ;
1 movwf envoyer ;
1 movlw D'8' ; envoies de 8 bits
1 movwf bits ;
ev1_oled: ;
1 ou 2 btfss envoyer,7 ; 1 lecture sur le bit 7
1 bra ev2_oled ;
1 bsf LCD_MOSI ; envoie 1
1 bsf LCD_SCK ;
1 bcf LCD_SCK ;
2 bra ev3_oled ;
ev2_oled: ;
1 bcf LCD_MOSI ; envoie 0
1 bsf LCD_SCK ;
1 bcf LCD_SCK ;
ev3_oled: ;
1 rlncf envoyer,F ; rotation des bits à gauche sans carry
1 decfsz bits,F ;
2 bra ev1_oled ;
2 return ;
95 cycles * 0.0625 = 5.9375 µS
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 8 invités