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
OLED GC9A01 et SPI Hardw 18F27K42
- paulfjujo
Expert- Messages : 2589
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
Bonjour à tous,
Apres avoir testé avec succes mes 2 ecrans OLED GCA901 ( modele Bleu et modele Rouge)
avec la version ASM de François77 / tempsX
et testé aussi mon écran Rouge avec un ESP32 Wromm DevkitV1 .. super rapide .. SPI 10MHz .. test grafiques.. OK
je galere avec mon 18F27K42
Je n'avais jusqu'alors qu'utilisé l' I2C ... et le SPI bit bang pour lecture Touch screen ILI9341
Je tiens absolument à utiliser le SPI Hardware .. ce qui explique cet acharnement.
En commençant avec MikroC , dont l'aproche SPI Hardware est (apparement) plus facile .
voila la partie "Init Oled" vue avec mon SQA analyser ( SPI à 125Khz)
RST=1
CS=1
code en cours ...
Nota:
sur le chronogramme
le SPI clock est permanent !
le choix Data Commande se ferait sur le 1er front montant de SCLK puis la lecture bit data sur le front descendant ?
La datasheet du GC9A01 est pas tres claire ....
D'autre part , sur ma version ESP32 .. le bit CS reste tout le temps à 1
ou alors c'est mon analyser qui m...de
L'init de CS doit etre CS=1 .. CS=0 front descendant puis retour à 1
à chaque envoi de commande ou data ?
...............à suivre
Apres avoir testé avec succes mes 2 ecrans OLED GCA901 ( modele Bleu et modele Rouge)
avec la version ASM de François77 / tempsX
et testé aussi mon écran Rouge avec un ESP32 Wromm DevkitV1 .. super rapide .. SPI 10MHz .. test grafiques.. OK
je galere avec mon 18F27K42
Je n'avais jusqu'alors qu'utilisé l' I2C ... et le SPI bit bang pour lecture Touch screen ILI9341
Je tiens absolument à utiliser le SPI Hardware .. ce qui explique cet acharnement.
En commençant avec MikroC , dont l'aproche SPI Hardware est (apparement) plus facile .
voila la partie "Init Oled" vue avec mon SQA analyser ( SPI à 125Khz)
RST=1
CS=1
code en cours ...
Nota:
sur le chronogramme
le SPI clock est permanent !
le choix Data Commande se ferait sur le 1er front montant de SCLK puis la lecture bit data sur le front descendant ?
La datasheet du GC9A01 est pas tres claire ....
D'autre part , sur ma version ESP32 .. le bit CS reste tout le temps à 1
ou alors c'est mon analyser qui m...de
L'init de CS doit etre CS=1 .. CS=0 front descendant puis retour à 1
à chaque envoi de commande ou data ?
...............à suivre
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
OLED GC9A01 et SPI Hardw 18F27K42
-
francois77
Passioné- Messages : 307
- Enregistré en : avril 2022
Paul,
init matériel
bsf LCD_CS ; Autorisation ecriture LCD
bsf LCD_RST ; Reset LCD
Temp_ms 250 ;
bcf LCD_RST ;
Temp_ms 20 ;
bsf LCD_RST ;
Temp_ms 20 ;
bcf LCD_CS ;
Apres CS peut rester a 0 en permanence
CS sert uniquement à sélectionner le module a piloter
Dans mon programme, je suis partie sur la gestion d'un seul module en SPI , voir mon programme
en fin de programme je repasse CS a 1 , mais c'est inutile
Si tu utilise 2 écrans avec un pilotage séparé, tu peux sélectionner l'écran par CS
A+
Francois
init matériel
bsf LCD_CS ; Autorisation ecriture LCD
bsf LCD_RST ; Reset LCD
Temp_ms 250 ;
bcf LCD_RST ;
Temp_ms 20 ;
bsf LCD_RST ;
Temp_ms 20 ;
bcf LCD_CS ;
Apres CS peut rester a 0 en permanence
CS sert uniquement à sélectionner le module a piloter
Dans mon programme, je suis partie sur la gestion d'un seul module en SPI , voir mon programme
en fin de programme je repasse CS a 1 , mais c'est inutile
Si tu utilise 2 écrans avec un pilotage séparé, tu peux sélectionner l'écran par CS
A+
Francois
OLED GC9A01 et SPI Hardw 18F27K42
-
francois77
Passioné- Messages : 307
- Enregistré en : avril 2022
Paul,
Ta séquence d'init est déjà différente de la mienne (manque le tempo de 20ms + RST )
_RST=0;
Delay_ms(250);
//power init
_CS=1;
_RST=1;
Delay_ms(120);
_CS=0;
SendCmd(GC9A01A_SWRESET); // software reset
Delay_ms(150);
SQA_Trigger=1;
et tu met beaucoup de commande qui sont inutile a mon avis
Regarde mon programme, j'ai balisé les commandes inutiles
SQA_Trigger=1; c'est quoi ?
A+
Francois
Ta séquence d'init est déjà différente de la mienne (manque le tempo de 20ms + RST )
_RST=0;
Delay_ms(250);
//power init
_CS=1;
_RST=1;
Delay_ms(120);
_CS=0;
SendCmd(GC9A01A_SWRESET); // software reset
Delay_ms(150);
SQA_Trigger=1;
et tu met beaucoup de commande qui sont inutile a mon avis
Regarde mon programme, j'ai balisé les commandes inutiles
SQA_Trigger=1; c'est quoi ?
A+
Francois
OLED GC9A01 et SPI Hardw 18F27K42
- paulfjujo
Expert- Messages : 2589
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
entre temps (sans X) j'avais rectifié
//power init
_CS=1;
_RST=1;
Delay_ms(250);
_RST=0;
Delay_ms(20);
_RST=1;
Delay_ms(20);
_CS=0;
SQA_Trigger=1
c'est une sortie sur RA3 pour declencher la capture des signaux SPI sur mon " logic Analyser SQA"
ce matin ,j'ai adapté la version ASM à mon 18F27K42, donc en SPI bit bang sur le port B
tout est OK , sauf la partie message ? .. donc inhibée ici
.....en SPI Hardware je suis sur le Port C
J'ai fait aussi une capture analyser , en mode ASM
PIC à FOSC 64Mhz -> FOSC/4 > 64/4=16MHz 1 cycle =0,0625µS soit 62.5nS
Mesure Freq. SPI 1,47MHz
SPI clock à 1 pendant 62,5nS seulement , puis à 0 pendant 680nS
data présente 62,5ns AVANT le Clock et pendant > 680nS
zoom
La grosse difference est que le sclk SPI Hardware est un signal carré !
.. issu de FOSC/64 (speed=1Mhz) ou FOSC/16 (Speed=4Mhz) ou de MFINTOSC 500Khz speed=125Khz
....
j'ai inclus le choix SPI Bit_bang ou Hardware ..
avec un Oled sur portB et un autre sur port C pour tester les 2 modes soft bit_bang ou Hardware
en mode Bit_bang j'affiche des rectangles ... ça progresse ...
..à suivre
//power init
_CS=1;
_RST=1;
Delay_ms(250);
_RST=0;
Delay_ms(20);
_RST=1;
Delay_ms(20);
_CS=0;
SQA_Trigger=1
c'est une sortie sur RA3 pour declencher la capture des signaux SPI sur mon " logic Analyser SQA"
ce matin ,j'ai adapté la version ASM à mon 18F27K42, donc en SPI bit bang sur le port B
tout est OK , sauf la partie message ? .. donc inhibée ici
Code : Tout sélectionner
; Zone_XY_Police 10,20,POLICE1,NOIR,VERT ; x,y,police,texte,fond
; Tableau Message_1 ;
; call Ecrit_Chaine ;
; call Tempo_1s
.....en SPI Hardware je suis sur le Port C
J'ai fait aussi une capture analyser , en mode ASM
PIC à FOSC 64Mhz -> FOSC/4 > 64/4=16MHz 1 cycle =0,0625µS soit 62.5nS
Mesure Freq. SPI 1,47MHz
SPI clock à 1 pendant 62,5nS seulement , puis à 0 pendant 680nS
data présente 62,5ns AVANT le Clock et pendant > 680nS
zoom
La grosse difference est que le sclk SPI Hardware est un signal carré !
.. issu de FOSC/64 (speed=1Mhz) ou FOSC/16 (Speed=4Mhz) ou de MFINTOSC 500Khz speed=125Khz
....
j'ai inclus le choix SPI Bit_bang ou Hardware ..
avec un Oled sur portB et un autre sur port C pour tester les 2 modes soft bit_bang ou Hardware
Code : Tout sélectionner
#ifdef SPI_Bit_Bang
void SendData (unsigned char Val)
{ unsigned char i,cx;
cx=Val;
// _CS=0;
_DC=1;
for(i=0;i<8;i++)
{
if((cx&0x80)==0x80)
_MOSI=1;
else
_MOSI=0;
_CLOCK=1; _CLOCK=0;
cx=cx<<1;
}
}
void SendCmd(unsigned char value)
{ unsigned char i,cx;
cx=value;
// _CS=0;
_DC=0;
for(i=0;i<8;i++)
{ if((cx&0x80)==0x80)
_MOSI=1;
else
_MOSI=0;
_CLOCK=1; _CLOCK=0;
cx=cx<<1;
}
// _CS=1;
}
#else
// SPI Hardware
void SendCmd(Byte c)
{
_DC=0; // _RS LATC1_bit //Command =>_DC=0 data => _DC=1
SPI1_Write(c);
}
void SendData(Byte c)
{
_DC=1;
SPI1_Write(c);
}
#endif
en mode Bit_bang j'affiche des rectangles ... ça progresse ...
..à suivre
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
OLED GC9A01 et SPI Hardw 18F27K42
-
francois77
Passioné- Messages : 307
- Enregistré en : avril 2022
OLED GC9A01 et SPI Hardw 18F27K42
Bonsoir paulfjujo, francois77, et tout le forum,
C'est à causse de la gestion de la mémoire Ram de ce Pic18F27K42 qui est différente par rapport à un Pic18F26K22, ou tu n'auras pas de problème.
Depuis le Temps-(x) que je le dis....
A+
paulfjujo a écrit :Source du message ce matin ,j'ai adapté la version ASM à mon 18F27K42, donc en SPI bit bang sur le port B
tout est OK , sauf la partie message ? .. donc inhibée ici
C'est à causse de la gestion de la mémoire Ram de ce Pic18F27K42 qui est différente par rapport à un Pic18F26K22, ou tu n'auras pas de problème.
Depuis le Temps-(x) que je le dis....
A+
OLED GC9A01 et SPI Hardw 18F27K42
-
francois77
Passioné- Messages : 307
- Enregistré en : avril 2022
OLED GC9A01 et SPI Hardw 18F27K42
- paulfjujo
Expert- Messages : 2589
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour à tous ,
J'ai bien avancé ( mais coté MikroC et SPI bit bang seulement)
Quasiment 90% des fonctions de l'ILI9341 tournent .. OK rectangle plein, cercle s, textes de plusieurs tailles...
sur terminal YAT :
reste un bug sur DrawLine ... (apparait sur donc aussi sur Cercle plein)
Je posterais le code complet ici des que ce sera résolu..
la suite ..sous XC8 !
J'ai bien avancé ( mais coté MikroC et SPI bit bang seulement)
Quasiment 90% des fonctions de l'ILI9341 tournent .. OK rectangle plein, cercle s, textes de plusieurs tailles...
sur terminal YAT :
Code : Tout sélectionner
Presentation :
Directory :C:\_MikroC\_MesProjets_MikroC\_LCD_ILLI9341_SPI_Base_18F27K42
MikroC pro 7.60
Projet : PIC18F27K42_UART1_ADC_SPI_LCD_Rond_CGA9A01_2023.mcppi
BASE PIC18F27K42 SPI1 HardW. at 1Mhz ou Bit Bang 1.4MHz
Config bit : P18F27K42_Fosc_Interne_64Mhz_w_Heap2500.cfgsch FOSC: 16x4 =64.0 MHz
Source : PIC18F27K42_UART1_ADC_SPI_LCD_Rond_CGA9A01__2023-0311.c
18F27K42 UART1, ADC, LCD rond CGA901 en SPI
OTHERS TFT_CG9A01_SPI_2023.h
TFT_CG9A01_SPI_2023.c
TFT_Fonts_320x240_ILI9341_2020_11.h
Init Memory Manager
Total RAM Free = 2410
Taille Maxi Heap = 2410
fin d'init LCD
LCD maxX= 239 maxY= 239
Max RAM Buffer into the Lcd = 76800
SetBackgroundColor(COLOR_BLACK)
Clear_LCD()
Put 4 Big Pixels Vert 2x2
Put 4 Pixels
Put 4 Big Pixels Orange
Clear_LCD()
Rectangle_Plein 1,1,238,238,COLOR_BLACK
puis carre avec couleur Verte
Rectangle_Plein x1=40 y1=60 x2=60 y2=120 Bleu
Rectangle_Plein x1=60 y1=60 x2=80 y2=120 Blanc
Rectangle_Plein x1=80 y1=60 x2=100 y2=120 Rouge
Rectangle_Plein x1=120 y1=120 x2=130 y2=130 Jaune
Rectangle x1=40 y1=30 x2=90 y2=80 Indigo
Rectangle x1=160 y1=160 x2=200 y2=180 Indigo
Efface ecran (Noir)
Fonte active #1
Taille Font TerminaL6x8 = 677
Param Font :
cfont.width= 6 , cfont.height= 8 , cfont.nbrows= 1 , cfont.MaxC= 40
Ecritures sur LCD
Presentation YELLOW
LCD GC9A101 240x240 65K c WHITE
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Close Font TerminaL6x8
Efface ecran (Noir)
Fonte active #2
Taille Font TerminaL12x16 = 2405
Param Font :
cfont.width= 12 , cfont.height= 16 , cfont.nbrows= 2 , cfont.MaxC= 18
Close Font TerminaL12x16
Efface ecran (Noir)
Fonte active #3
Taille Font Trebuchet_MS13x21= 1045
Param Font :
cfont.width= 13 , cfont.height= 21 , cfont.nbrows= 3 , cfont.MaxC= 17
Close Font Trebuchet_MS13x21
DrawCircle 120,120,40, COLOR_TURQUOISE
DrawCircle 120,120,60, COLOR_INDIGO
DrawCircle 120,120,80, COLOR_ORANGE
FillCircle 120,120,20, COLOR_YELLOW
reste un bug sur DrawLine ... (apparait sur donc aussi sur Cercle plein)
Je posterais le code complet ici des que ce sera résolu..
la suite ..sous XC8 !
OLED GC9A01 et SPI Hardw 18F27K42
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 44 invités