Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 34

envoyer une suite d'octet en programme c



  1. #1
    krimo-30

    Exclamation envoyer une suite d'octet en programme c


    ------

    Bonjour à tous !
    Voila je voudrai envoyé une suite d'octet c'est pour un afficheur LCD, sur sa documentation, il m'est di d'envoyé une suite d'octet mais je ne sait pas comment faire avec un programme en C.
    Si vous avez des suggestion je suis preneur !
    Merci d'avance.
    PS: Lien de mon afficheur http://www.lextronic.fr/~lextronic_doc/ELCD.pdf

    -----

  2. Publicité
  3. #2
    PA5CAL

    Re : envoyer une suite d'octet en programme c

    Bonjour

    Le langage C est une norme qui permet de décrire les opérations que tu souhaites faire réaliser à la machine, mais il ne contient pas les éléments spécifiques au matériel que tu utilises.

    Or, pour «envoyer» des octets, tu utilises dois une interface matérielle qui est particulière à ton cas de figure, et qui peut être manipulée de manières très différentes selon le processeur ou microcontrôleur utilisé, le périphérique impliqué et les branchements effectués.

    L'envoi d'un octet s'écrit généralement à l'aide d'une assignation ( symbole « = »), de l'appel d'une fonction appartenant à une librairie spécialisée, ou d'une insertion de commande assembleur. Il s'accompagne le plus souvent d'une opération de contrôle et/ou d'un délai d'attente.

  4. #3
    Jack

    Re : envoyer une suite d'octet en programme c

    tu veux commander le LCD avec quoi? Un PC, un µC? Il suffit ensuite de trouver comment programmer l'uart pour envoyer les données au LCD. Il se peut que les fonctions soient déjà écrites, mais comment savoir vu le peu d'information que tu nous as données.

    A+

  5. #4
    polo974

    Re : envoyer une suite d'octet en programme c

    L'afficheur présenté est déjà un truc "intelligent", c'est à dire que si tu disposes d'un port série rs232, tu le mets en 19200 bps et tu envoies (lire doc du matériel, du compilo, du système, etc...)...

    par contre si tu ne dispose pas de port série à dédier à cette tâche, là ça devient un module chi...t, et le choix d'un module plus trivial te simplifiera (sûrement) le travail et en plus pour moins cher!
    Daudet, tu vas nous manquer...

  6. #5
    krimo-30

    Thumbs up Re : envoyer une suite d'octet en programme c

    Citation Envoyé par Jack Voir le message
    Il se peut que les fonctions soient déjà écrites, mais comment savoir vu le peu d'information que tu nous as données.
    C'est fort possible voila je vais plus détaillé.
    Je dispose d'un pic 18f4620 et d'une liaison serie RS 232 et de l'afficheur en quetion.
    Maintenant je voudrais savoir si c'est possible en conectant les 3 boches à celle de la liaison serie de pouvoir programmer ce "truc" pour qu'il affiche ce que je veux.
    Merci en tout cas pour vos réponse.

  7. A voir en vidéo sur Futura
  8. #6
    ftorama

    Re : envoyer une suite d'octet en programme c

    Citation Envoyé par krimo-30 Voir le message
    C'est fort possible voila je vais plus détaillé.
    Je dispose d'un pic 18f4620 et d'une liaison serie RS 232 et de l'afficheur en quetion.
    Maintenant je voudrais savoir si c'est possible en conectant les 3 boches à celle de la liaison serie de pouvoir programmer ce "truc" pour qu'il affiche ce que je veux.
    Merci en tout cas pour vos réponse.
    Je serais tenté de dire que c'est fait pour..... tu as lu la doc de l'afficheur?

  9. Publicité
  10. #7
    krimo-30

    Re : envoyer une suite d'octet en programme c

    j'ai seulement pu trouver le lien que j'ai mis à mon premier message mais le souci c'est que je ne sait pas piloter ceci avec un pic .

  11. #8
    Jack

    Re : envoyer une suite d'octet en programme c

    s'il existe des fonctions dédiées, je ne vois pas où est le problème, sinon il va falloir te renseigner sur le fonctionnement d'un uart.

    A+

  12. #9
    ftorama

    Re : envoyer une suite d'octet en programme c

    Citation Envoyé par krimo-30 Voir le message
    j'ai seulement pu trouver le lien que j'ai mis à mon premier message mais le souci c'est que je ne sait pas piloter ceci avec un pic .
    Alors ce n'est pas un problème lié à l'afficheur.....Ton compilateur doit avoir une doc, et au moins un exemple sur la gestion d'un port série....

    Sinon, tu peux très bien le faire en bas niveau en accédant aux registres du PIC...et la c'est la doc du micro qu'il faut ouvrir.

    Après ça, le pilotage du LCD sera trivial

  13. #10
    krimo-30

    Thumbs up Re : envoyer une suite d'octet en programme c

    Citation Envoyé par ftorama Voir le message
    Sinon, tu peux très bien le faire en bas niveau en accédant aux registres du PIC...et la c'est la doc du micro qu'il faut ouvrir.

    Après ça, le pilotage du LCD sera trivial
    Ok je dipose de la doc du micro et de la doc de mon compilateur (C18 de microchip) mais je ne vois pas où cherché dans la doc du pic, pourrais-tu m'éclairer sur ce sujet ?

  14. #11
    Jack

    Re : envoyer une suite d'octet en programme c

    mais je ne vois pas où cherché dans la doc du pic
    Tu prends la doc du pic en question et chapitre 18 : Enhanced Universal Synchronous Asynchronous Receiver Transmitter.

    A

  15. #12
    polo974

    Re : envoyer une suite d'octet en programme c

    il y a aussi des fonctions dans c18 toutes prêtes à condition de chercher et lire la doc....

    (la doc des librairies pour préciser...)
    Daudet, tu vas nous manquer...

  16. Publicité
  17. #13
    ftorama

    Re : envoyer une suite d'octet en programme c

    Citation Envoyé par polo974 Voir le message
    à condition de chercher et lire la doc....
    Je crois qu'on a isolé le noeud du problème

  18. #14
    krimo-30

    Post Re : envoyer une suite d'octet en programme c

    Citation Envoyé par Jack Voir le message
    Tu prends la doc du pic[/URL] en question et chapitre 18 : Enhanced Universal Synchronous Asynchronous Receiver Transmitter.
    J'avais deja lu sa et essayé tout ce qui était dit dans la doc, mais bon sa n'a pas fonctionné, je vais pouvoir demandé à un ingénieur de m'eclaircir sur ce sujet demain car il travaille avec moi ^^ mais en tout cas merci quand meme pour vos réponses.

  19. #15
    Jack

    Re : envoyer une suite d'octet en programme c

    J'avais deja lu sa et essayé tout ce qui était dit dans la doc, mais bon sa n'a pas fonctionné
    pourquoi ne postes-tu pas ton code (entre des balises code), je pense qu'il y a ici des gens compétents en pic et interface série.

    A+

  20. #16
    krimo-30

    Re : envoyer une suite d'octet en programme c

    Voici mon programme (l'ingenieur ma aider à le coriger le souci c'était que tout était bon sauf la vitesse donc sa ne communiquer pas)

    PGM:
    Code:
    #include <p18f4620.h>
    #include <usart.h>
    #include<delays.h>
    #pragma config OSC=HS
    #pragma config LVP=OFF
    #pragma config WDT=OFF
    #pragma config DEBUG=ON
    
    
    void main (void)
    {
    	char carac1,carac2,carac3, carac4, carac5, carac6, carac7;
    	TRISC=0x80;
    	carac1=0xA2;
    	carac2 ='H';
    	carac3='e';
    	carac4='l';
    	carac5='l';
    	carac6='o';
    	carac7=0;
    
    	OpenUSART( USART_TX_INT_OFF &
    	USART_RX_INT_OFF &
    	USART_CONT_RX &
    	USART_SYNC_MASTER &
    	USART_EIGHT_BIT &
    	USART_ASYNCH_MODE &
    	BAUD_8_BIT_RATE &
    	BAUD_WAKEUP_OFF &
    	BAUD_AUTO_OFF &
    	USART_BRGH_HIGH ,  
    	128);                          // vitesse de 4800bds
    	do{
    	WriteUSART(carac1);
    	Delay10KTCYx(100);
    	WriteUSART(carac2);
    	Delay10KTCYx(100);
    	WriteUSART(carac3);
    	Delay10KTCYx(100);
    	WriteUSART(carac4);
    	Delay10KTCYx(100);
    	WriteUSART(carac5);
    	Delay10KTCYx(100);
    	WriteUSART(carac6);
    	Delay10KTCYx(100);
    	WriteUSART(carac7);
    	Delay10KTCYx(100);
    	}while(1);
    	
    }
    En tout cas merci à tous pour vos aides précieuse c'est en majorité grâce à vous que j'ai reussi à résoudre mon probleme !
    Dernière modification par Jack ; 05/05/2011 à 17h48. Motif: ajout balises code

  21. #17
    krimo-30

    Re : envoyer une suite d'octet en programme c

    Bonjour,
    Il me reste une derniere question: N'y aurais-t-il pas un moyen d'envoyer tout les caractères à la fois au lieu de les mettre les uns à la suite des autres? Cela prend beaucoup de temps et de place.
    Merci d'avance.

  22. #18
    Jack

    Re : envoyer une suite d'octet en programme c

    Il existe surement une fonction d'envoi par paquet. Il faut que tu épluches la doc. Mais au bout du compte, les octets seront toujours envoyés un après l'autre. Ca t'évitera juste d'écrire cette petite fonction toi-même.

    A+

  23. Publicité
  24. #19
    Jack

    Re : envoyer une suite d'octet en programme c

    Il faut dire également que ta façon de programmer n'est pas idéale. Ca ne se fait pas de déclarer autant de variables que de caractères. On utilise une chaine de caractère stockée dans un tableau et une boucle pour le lire et envoyer les caractères. Remplace
    Code:
    	char carac1,carac2,carac3, carac4, carac5, carac6, carac7;
     	carac1=0xA2;
     	carac2 ='H';
     	carac3='e';
     	carac4='l';
     	carac5='l';
     	carac6='o';
    	carac7=0;
    par
    Code:
    char ligne[20] = "hello";
    et
    Code:
    	WriteUSART(carac1);
     	Delay10KTCYx(100);
     	WriteUSART(carac2);
     	Delay10KTCYx(100);
     	WriteUSART(carac3);
     	Delay10KTCYx(100);
     	WriteUSART(carac4);
     	Delay10KTCYx(100);
     	WriteUSART(carac5);
     	Delay10KTCYx(100);
     	WriteUSART(carac6);
     	Delay10KTCYx(100);
     	WriteUSART(carac7);
     	Delay10KTCYx(100);
    par
    Code:
    writeLine(ligne);
    avec la fonction writeLigne définie comme ceci:
    Code:
    void writeLine(char* ligne){
       WriteUSART(0xA2);
       Delay10KTCYx(100);
       while (*ligne != 0){
           WriteUSART(*(ligne++));
           Delay10KTCYx(100);
       }
    A+
    Dernière modification par Jack ; 06/05/2011 à 10h48. Motif: petit oubli dans le code

  25. #20
    amoniaque

    Re : envoyer une suite d'octet en programme c

    Bonjour,

    Et l'utilisation de printf(); n'est pas envisageable ?

  26. #21
    krimo-30

    Re : envoyer une suite d'octet en programme c

    Je vais voir sa. En tout cas merci pour tes corrections.
    @amoniaque La fonction printf n'est pas definie dans ma version de C18 donc je ne peut pas l'utilisé.
    Dernière modification par krimo-30 ; 06/05/2011 à 10h43. Motif: erreur de saisie

  27. #22
    PA5CAL

    Re : envoyer une suite d'octet en programme c

    Citation Envoyé par amoniaque Voir le message
    Et l'utilisation de printf(); n'est pas envisageable ?
    L'utilisation de prinft() suggère qu'on ait intégré la librairie correspondante et qu'on ait implémenté les fonctions de base qui déterminent vers quelle interface les caractères de la sortie standard sont envoyés, et de quelle manière cette interface est manipulée.

    La fonction printf() nécessite de ce fait beaucoup de mémoire (à la fois en ROM pour les routines nécessaires et en RAM pour le tampon de traitement), ce qui n'est pas toujours compatible avec le choix d'un microcontrôleur de petite taille.

    Elle ne se justifie par conséquent que si le programme l'utilise en tirant profit de ses particularités (formatage dynamique de chaîne) ou bien si le choix du microcontrôleur sur la base d'autres critères autorise finalement son implantation.

    A contrario, une fonction d'envoi de chaîne « fait maison » est simple à réaliser, occupe peu de place et procure de bonnes performances.

  28. #23
    krimo-30

    Re : envoyer une suite d'octet en programme c

    Citation Envoyé par Jack Voir le message
    [par
    Code:
    char ligne[20] = "hello";
    erreur de syntaxe sur cette patie. Je ne vois pas d'ou sa peux venir sa m'a l'air correct
    J'utilise MPlab v8.20 et le compilateur C18.

  29. #24
    amoniaque

    Re : envoyer une suite d'octet en programme c

    Citation Envoyé par PA5CAL Voir le message
    L'utilisation de prinft() suggère qu'on ait intégré la librairie correspondante et qu'on ait implémenté les fonctions de base qui déterminent vers quelle interface les caractères de la sortie standard sont envoyés, et de quelle manière cette interface est manipulée.

    La fonction printf() nécessite de ce fait beaucoup de mémoire (à la fois en ROM pour les routines nécessaires et en RAM pour le tampon de traitement), ce qui n'est pas toujours compatible avec le choix d'un microcontrôleur de petite taille.

    Elle ne se justifie par conséquent que si le programme l'utilise en tirant profit de ses particularités (formatage dynamique de chaîne) ou bien si le choix du microcontrôleur sur la base d'autres critères autorise finalement son implantation.

    A contrario, une fonction d'envoi de chaîne « fait maison » est simple à réaliser, occupe peu de place et procure de bonnes performances.
    Salut PA5CAL,

    Merci pour ces infos. Je dois avouer avoir posté l'idée du printf en ayant un retour du type de ta réponse. Parce que personnellement j'utilise presque que ça mais par défaut, sans jamais trop avoir réfléchi à optimiser mon code (pas non plus eu l'utilité de le faire vu que mes codes n'explosent pas!).
    Par contre ça m'est très utile car la plupart des données que je transmets sont de tailles différentes, je les envoie sous différents formats, bref, je n'ai besoin que d'un simple printf() pour combler mes besoins.

    Tu dis qu'il est possible de choisir vers quelle interface les caractères sont envoyés et ça m’intéresse ! Je me suis toujours demandé comment faire pour utiliser un printf() pour de l'UART puis pour un afficheur (avec un HD44780 par exemple). Le souci ne m'est encore jamais arrivé mais m'a plus d'une fois interpellé ...

  30. Publicité
  31. #25
    krimo-30

    Re : envoyer une suite d'octet en programme c

    Je ne sait pas comment mais sa à marcher pour la compilation, mais seulement il ne me marque pas hello mais seulement le H. je vais essayé de trouver l'erreur et je vous tient au jus.

  32. #26
    PA5CAL

    Re : envoyer une suite d'octet en programme c

    Citation Envoyé par amoniaque Voir le message
    Tu dis qu'il est possible de choisir vers quelle interface les caractères sont envoyés et ça m’intéresse ! Je me suis toujours demandé comment faire pour utiliser un printf() pour de l'UART puis pour un afficheur (avec un HD44780 par exemple). Le souci ne m'est encore jamais arrivé mais m'a plus d'une fois interpellé ...
    La solution diffère dans le détail selon les librairies utilisées. Mais dans principe, il suffit généralement d'adapter la fonction de base qui réalise l'envoi d'un caractère isolé et qui est commune à toute la librairie. Il s'agit souvent de la fonction putchar() ou d'une sous-fonction que cette dernière appelle.

    Quand on dispose du code source de la librairie, une modification et une re-compilation permettent d'obtenir le fonctionnement désiré.

    Dans le cas contraire, on doit jouer sur l'édition de liens ou carrément hacker le code machine de la librairie pour détourner l'exécution vers la nouvelle routine. Mais plutôt que de se lancer dans ce type de bricolage, il peut être préférable de récupérer le code source d'une librairie standard (on en trouve plein sur Internet) afin de l'adapter.

  33. #27
    krimo-30

    Re : envoyer une suite d'octet en programme c

    Je ne sait vraiment pas ou est le probleme, j'ai beau cherché je ne trouve le logiciel comprent bien ce qu'il faut marqué dans le tableau que tu m'a donné Jack mais le LCD ne comprent pas il marque seulement la premiere lettre.
    PS: J'ai fait un watch sur le tableau pour voir et il a bien compri ce qu'il fallait mettre dedans, mais apres pour le retransmettre il n'a pas compri, je continue à cherché mé je désesspère.
    Images attachées Images attachées

  34. #28
    PA5CAL

    Re : envoyer une suite d'octet en programme c

    D'après la doc, à la fin du code de Jack il manque :
    Code:
    WriteUSART(0);

  35. #29
    krimo-30

    Re : envoyer une suite d'octet en programme c

    Citation Envoyé par PA5CAL Voir le message
    D'après la doc, à la fin du code de Jack il manque :
    Code:
    WriteUSART(0);
    J'ai essayé mais sa ne fonctionne pas sa doit etre autre chose...les choses que l'on cherche sont souvent sous notre nez mais on passe dessus sans se douter

  36. #30
    PA5CAL

    Re : envoyer une suite d'octet en programme c

    À tout hasard, augmente la valeur du délai pour voir si ça n'arrangerait pas les choses. Sinon vérifie ton code, et si tu ne trouves pas, passe au débogueur.

Sur le même thème :

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. Programme en C pour envoyer des messages sur un ordinateur voisin
    Par microelectronique7637 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 30/01/2011, 09h53
  2. PIC Envoyer des données en parallèle d'un programme
    Par inoxxam dans le forum Électronique
    Réponses: 4
    Dernier message: 25/02/2010, 23h09
  3. Réponses: 1
    Dernier message: 31/03/2009, 09h45
  4. regle d'octet
    Par physic dans le forum Chimie
    Réponses: 4
    Dernier message: 25/12/2008, 18h14
  5. Peut-on majorer une suite par une autre suite ?
    Par citron_21 dans le forum Mathématiques du supérieur
    Réponses: 12
    Dernier message: 29/10/2008, 14h54
Découvrez nos comparatifs produits sur l'informatique et les technologies.