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 le langage C !

Modérateur : Jérémy

Ecran Easy TFT
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#11 Message par Guest » mar. 3 nov. 2015 10:08

NON c'est une fonction je peux ne tromper, en fonction du chronographe ca donne cela: JE SUIS SUR LA DATASHEET

Pour
write_cmd(0x01); //software reset
delay(5);
write_cmd(0x28); // display off

placer les données D0:D7->0x01
pin 38 CSX=0
pin 37 D/CX=0
pin 35 RD=1
pin 36 WR est équivalant de ENABLE sur les LCD c'est a dire a 1 pendant 15ns puis 0 pendant 15ns .je ne sais pas si tu peux mettre des NOP si oui tu places 4 nop

le delay(5)

D0:D7->0x28

CSX=0
D/CX=0
RD=1

WR=1
NOP
NOP
NOP
NOP
WR=0
NOP
NOP
NOP
NOP

Tu as tout cela en pages 13 du datasheet
viens de faire:
Software Reset
Display OFF

Tu fais pareil pour trouver les autres fonctions .Tu as tout pour faire la demo du datatsheet maintenant a toi de monter cela en C .
ATTENTIOn sur write_data ils sont sur 16 bits donc répéter l’opération
AMHA c'est tres formateur de ne pas travailler avec les LIB :-)

A+

Ecran Easy TFT
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#12 Message par Jérémy » mar. 3 nov. 2015 20:03

Ok les LIB, je les ferais plus tard ! comme tu dis , c'est nickel pour apprendre .

Par contre je ne sais pas faire ta démarche, car je n'ai pas accés aux broches CSx et D/CX ?

En effet je dispose physiquement que des broches RD, WR , RS, CS et RST.

JE peux faire faires de NOP avec les codes asm .

J'ai mis en concordences toutes les broches physiquement et avec le soft ca donne ceci .

Code : Tout sélectionner

// easy TFT connexions ----------------------------------------------
sbit TFT_RD at LATB0_bit;
sbit TFT_WR at LATB1_bit;
sbit TFT_RS  at LATB2_bit;
sbit TFT_CS  at LATB4_bit;
sbit TFT_RST at LATB5_bit;

char TFT_DataPort at PORTD//donnée sur le PORTD de D0:D7

sbit TFT_RD_Direction at TRISB0_bit;
sbit TFT_WR_Direction at TRISB1_bit;
sbit TFT_RS_Direction  at TRISB2_bit;
sbit TFT_CS_Direction  at TRISB4_bit;
sbit TFT_RST_Direction at TRISB5_bit;
// End easy TFT connexions ----------------------------------------------


void main() {

  
ANSELB 0;  // Configure le PORTB en digital 
  
ANSELD 0;  // Configure le PORTD en digital


  
while(1) {

      
TFT_CS=;
      
TFT_RS=;
      
TFT_RD;

      
TFT_WR ;
      
asm {nop}
      
asm {nop}
      
asm {nop}
      
asm {nop}
      
TFT_WR ;
      
asm {nop}
      
asm {nop}
      
asm {nop}
      
asm {nop}

      
delay_ms(2000);

  }

C'est en faisant des erreurs, que l'on apprend le mieux !!!

Ecran Easy TFT
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#13 Message par Guest » mer. 4 nov. 2015 09:26

Bonjour
jeremy ici http://www.mikroe.com/downloads/get/192 ... l_v101.pdf .Tu as le schéma et la correspondance en page 3

CN1:
LCD_RD pin1 correspond a :R/D
LCD_WR pin2 correspond a: WR

Dans ton code je ne vois pas le chargement de la donnée 0x1dans TFT_DataPort pour le rest dans D0:D7?

sinon c'est dans la bonne Voie tu viens ici de faire le rest, après a toi de rassembler cela dans des SPG puis dans des fonctions.


A+

Ecran Easy TFT
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#14 Message par Jérémy » mer. 4 nov. 2015 09:34

Bonjour,
Dans ton code je ne vois pas le chargement de la donnée 0x1dans TFT_DataPort pour le rest dans D0:D7?

Ben oui mais je ne sais pas comment envoyer le (0x01) !

C'est ca mon grand probléme ? je ne sais pas sur quel BUS je dois dialoguer ? Si j'avais des broches SCLa SDA j'enverrai ça par I2C , ou des broches MISO/MOSI sur le SPI Mais la ???

Ça doit vous paraitre con je pense ,désolé !

Il faudrait réussir déjà avant d’écrire des pixels activé avec la commande display OFF et display ON . avant de vérifier que j'arrive à écrire dessus : Comme ça ,je me passe de toute la configuration pour le moment !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Ecran Easy TFT
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#15 Message par Guest » mer. 4 nov. 2015 09:36

c'est du C charger une variable TFT_DataPort de la valeur 0X1 .
c'est du même style charger un compteur J de la valeur 3

Ecran Easy TFT
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#16 Message par Jérémy » mer. 4 nov. 2015 09:50

J'ai peut être compris ce que tu voulais dire .

Ça donnerais ceci :

Code : Tout sélectionner

// easy TFT connexions ----------------------------------------------
sbit TFT_RD at LATB0_bit;
sbit TFT_WR at LATB1_bit;
sbit TFT_RS  at LATB2_bit;
sbit TFT_CS  at LATB4_bit;
sbit TFT_RST at LATB5_bit;

char TFT_DataPort at PORTD; //donnée sur le PORTD de D0:D7

sbit TFT_RD_Direction at TRISB0_bit;
sbit TFT_WR_Direction at TRISB1_bit;
sbit TFT_RS_Direction  at TRISB2_bit;
sbit TFT_CS_Direction  at TRISB4_bit;
sbit TFT_RST_Direction at TRISB5_bit;
// End easy TFT connexions ----------------------------------------------


void main() {

  ANSELB = 0;  // Configure le PORTB en digital
  ANSELD = 0;  // Configure le PORTD en digital


  while(1) {

      TFT_DataPort = 0x01;  //  Met la valeur sur le PORTD (0x01= RESET)

      TFT_CS=;    // Chip select , actif à l'etat bas
      TFT_RS=;    // Register Select, a determiner ????

      TFT_WR = 1 ;  // Actif la broche WR pendant 15ns
      asm {nop}
      asm {nop}
      asm {nop}
      asm {nop}
      TFT_WR = 0 ;  // Désactive la Pin WR, pour ercire la valeur du PORTD sur dans le registre
      asm {nop}
      asm {nop}
      asm {nop}
      asm {nop}

      delay_ms(2000);

  }



je ferais les focntions plus tard! pense tu que le cheminement serait bon ?

Je met mon PORT D a la bonne valeur que je souhaite envoyer . Par exemple un reset qui correspond au code 0x01 . Donc je met 0x01 sur mon PORTD.
Ensuite j'active l'ecran sur le BUS en mettant la pin_CS à 0 .
Ensuite je dois choisir un registre pour savoir si c'est une commande ou une donnée ? La je sais pas a quoi correspond 1 ou 0 , Data ou commande .
et la partie la plus délicate a comprendre .

Je dois envoyer une impulsion de 15ns sur le brcohe WR pour ecrire ma donnée ?
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Ecran Easy TFT
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#17 Message par Guest » mer. 4 nov. 2015 09:54

YES

allez bon courage pour le reste


A+

Ecran Easy TFT
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#18 Message par Guest » mer. 4 nov. 2015 14:19

Je reprends le WR et RD car j'ai dis une connerie OUPS

C'est pas WR=1 nop WR=0 nop mais:
WR=0 nop WR=1 NOP
Avec tes 4 nop a 20Mhz tu es tres largement dans les clous donc pas dAvec tes 4 nop a 20Mhz tu es tres largement dans les clous donc pas de problème cote tempoe problème cote tempo
Le contenue de D0:D7 est validé par:

lorsque tu es en ecriture c'est WR avec RD=1
lorsque tu es en lecture c'est RD avec WR=1
cette validation ce passe voir le chronographe page 12
pour WR : WR=0 WR=1 avec un temps bas et temps haut d'un MINI de 15ns
pour RD: RD=0 RD=1 avec temps bas 355ns et temps haut 90ns au MINI

désole pour cette inversion

Ecran Easy TFT
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#19 Message par Guest » mer. 4 nov. 2015 15:09

Je reprends le WR et RD car j'ai dis une connerie OUPS

C'est pas WR=1 nop WR=0 nop mais:
WR=0 nop WR=1 NOP

Le contenue de D0:D7 est validé par:

Lorsque tu es en ecriture c'est WR avec RD=1
Lorsque tu es en lecture c'est RD avec WR=1
cette validation ce passe voir le chronographe page 12
pour WR : WR=0 WR=1 avec un temps bas et temps haut d'un MINI de 15ns
pour RD: RD=0 RD=1 avec temps bas 355ns et temps haut 90ns au MINI

désole pour cette inversion

Ecran Easy TFT
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#20 Message par Jérémy » mer. 4 nov. 2015 15:44

J'ai planché aussi sur le Probléme . J'ai reussis je pense à eclaircir plusieurs points pour ma part ! . Tiens ce n'est pas évident de jongler entre la DS du MODULE Easy TFT + la ds du MI0283QT-9 + celle du driver ILI9341 .

Le nom des Broches change a chaque fois lol .
Image

Pour remettre tout dans le bon ordre, je recapépéte :

-Broches RS sur l'écran = Registrer Select = choix d’écrire donnée ou data = broche 37 D/CX (SCL) du module ===> d’après la DS du ILI9341 1=Data, 0=Command
-La broche CS = Chip select , doit être mis à 0 , pour activer l'écran.
- Les broches RD et WR me servent en quelques sortes a acquitter l'information des broches que forme le PORTD .
Comme j'ai pas besoin de lire l'écran ( pas d'utilisation du tactile pour le moment), je n'utiliserai que l’écriture .
Il faut que j'utilise un front sur WR . Pour être certain du timing je ferais une pause de 1µs pendant les phases de tests .

Ce soir afin de valider nos réflexions communes , j'essayerais de faire activer l’écran et le désactiver . Si j'arrive à faire ça c'est gagné :

Les commandes à envoyer sont :
Image

Code : Tout sélectionner

// easy TFT connexions ----------------------------------------------
sbit TFT_RD at LATB0_bit;
sbit TFT_WR at LATB1_bit;
sbit TFT_RS  at LATB2_bit;
sbit TFT_CS  at LATB4_bit;
sbit TFT_RST at LATB5_bit;

char TFT_DataPort at PORTD//donnée sur le PORTD de D0:D7

sbit TFT_RD_Direction at TRISB0_bit;
sbit TFT_WR_Direction at TRISB1_bit;
sbit TFT_RS_Direction  at TRISB2_bit;
sbit TFT_CS_Direction  at TRISB4_bit;
sbit TFT_RST_Direction at TRISB5_bit;
// End easy TFT connexions ----------------------------------------------


void main() {

  
ANSELB 0;  // Configure le PORTB en digital
  
ANSELD 0;  // Configure le PORTD en digital


  
while(1) {

      
TFT_DataPort (0x28);  //  Met la valeur sur le PORTD (0x28= Display off)

      
TFT_CS=;    // Chip select , actif à l'etat bas
      
TFT_RS=;    // Register Select, 1=Data, 0=Command

      
TFT_RD=1;
      
      
TFT_WR ;  // Broche à l'état bas pendant 1µs
      
delay_us(1);
      
TFT_WR ;  // // Broche à l'état haut pendant 1µs
      
delay_us(1);

      
delay_ms(2000);


      
TFT_DataPort (0x29);  //  Met la valeur sur le PORTD (0x29= Display on)

      
TFT_CS=;    // Chip select , actif à l'etat bas
      
TFT_RS=;    // Register Select, 1=Data, 0=Command

      
TFT_RD=1;

      
TFT_WR ;  // Broche à l'état bas pendant 1µs
      
delay_us(1);
      
TFT_WR ;  // // Broche à l'état haut pendant 1µs
      
delay_us(1);

      
delay_ms(2000);
  }

C'est en faisant des erreurs, que l'on apprend le mieux !!!


Retourner vers « Langage C »

Qui est en ligne

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