[Programmation] GPS - langage C - PSoC Creator 3.0
Répondre à la discussion
Affichage des résultats 1 à 22 sur 22

GPS - langage C - PSoC Creator 3.0



  1. #1
    xNahkrim

    GPS - langage C - PSoC Creator 3.0


    ------

    Bonjour, pour mon projet de SIN de Terminale,
    Je dois programmer un GPS (capter, recevoir, convertir et communiquer la trame reçu du module GPS)
    Comme matériel, j'ai un PSoC 4, un Module Récepteur GPS avec Connecteur SMA Venus SFE et une Antenne GPS Embarquée avec connecteur SMA.
    Donc pour moi il me faudrait déjà relié la liaison série (RS232) avec un UART (la trame reçu relié à l'afficheur LCD).
    Entre temps il faudra bien évidemment que je convertisse la trame initial avec la longitude, latitude...
    Mon seul problème est que je ne connais pas comment codé la liaison série en langage C sur PSoC ici en locurence donc je suis déjà bloqué à l'état initial je ne peux donc pas recevoir ma trame.
    Si il y a des "génie" ici pour me dépanner de cette impasse j'en serai ravi !

    Merci d'avoir lu !

    -----

  2. #2
    Jack
    Modérateur

    Re : GPS - langage C - PSoC Creator 3.0

    Un PSoC 4, c'est un circuit intégré. Il doit bien être fixé sur une carte. Tu devrais donner un lien dessus.
    Dernière modification par Jack ; 10/02/2016 à 21h58.

  3. #3
    xNahkrim

    Re : GPS - langage C - PSoC Creator 3.0

    Le PSoC 4, je l'ai obtenu depuis mon lycée donc je n'ai pas beaucoup d'informations dessus donc pas de lien.
    Après j'ai cours de SIN que demain dans l'après-midi donc je ne pourrai pas obtenir le code du PSoC avant demain si je le trouve.

  4. #4
    spown

    Re : GPS - langage C - PSoC Creator 3.0

    Bonjour/bonsoir est bienvenue sur FUTURA,

    PSOC 4 ( ARM M0) de Cypress est l'un des plus facile des microcontrôleurs à programmer sur le marché. Il faut utilisé PSOC creator ( 3.3 ) destiné au PSOC 3, 4 et 5( pour PSOC 1 il faut designer ) , pour configurer le UART ou n'importe quel module c'est un jeu d'enfant avec Cypress. Tu sélectionnes le modules qui se trouve à droite de ta fenêtre d'IDE tu le glisses dans ta page, tu mets les connexions des pins tu le configures en clinquant 2 fois la-dessus et c'est fini. Apres il faut passé à la page code pour écrire ton code ( main, fonctions... ). Tout les fonctions des modules sont déjà prés à utiliser. Bref, tu as le guide à lire http://www.cypress.com/file/137441/download
    Note : il faut pas oublier de configurer l'horloge du système .

    Pour les exemples : http://www.cypress.com/search/all?f[...eta_type%3A579

    Laisse moi savoir si t'es bloqué. Ne me demande pas de faire ton devoir
    Dernière modification par Antoane ; 12/02/2016 à 06h41. Motif: Réparation url

  5. A voir en vidéo sur Futura
  6. #5
    xNahkrim

    Re : GPS - langage C - PSoC Creator 3.0

    Bon il s'avère que je n'ai plus d'afficheur LCD donc je doit afficher la trame sur le PC(surement une application mais laquelle je n'en connait pas) et toujours en liaison série.
    Mon UART est bien cablé (pins,...) cependant c'est dans la partie code.
    Pour l'instant j'ai que :

    unsigned trame;

    int main()
    {
    UART_Start();
    trame = UART_ReadRxData();
    UART_PutString(trame);
    }

    Sauf que UART_PutString(trame); ne fonctionne pas car trame n'est apparemment bien converti.
    Et je n'ai aucun moyen de voir ma trame vu que je n'ai nulle part ou l'afficher.

  7. #6
    Jack
    Modérateur

    Re : GPS - langage C - PSoC Creator 3.0

    n'importe quel émulateur de terminal devrait convenir: "putty" ou "tera term" par exemple.

    Il faudra que dans ton programme tu définisses le protocole: vitesse de transmission, nombre de bits / car, parité par exemple.

  8. #7
    xNahkrim

    Re : GPS - langage C - PSoC Creator 3.0

    Pour l'instant avec ça, mon afficheur affiche "0":

    unsigned char trame;

    int main()
    {
    UART_Start();
    LCD_Start();
    LCD_ClearDisplay();

    trame = UART_ReadRxData();
    UART_PutChar(trame);
    LCD_PrintNumber(trame);
    LCD_Position(0,0);
    }

  9. #8
    spown

    Re : GPS - langage C - PSoC Creator 3.0

    C'est normal, il est où ton while(1) ??

    Tu devrais faire un truc comme ca :

    Code:
    unsigned char trame;
    
    int main()
    {
    UART_Start();
    LCD_Start();
    LCD_ClearDisplay();
    LCD_Position(0,0);
    while(1){
      trame = UART_ReadRxData();
      UART_PutChar(trame);
      LCD_PrintNumber(trame); 
    ... gestion  du position sur LCD
          }
    }

  10. #9
    xNahkrim

    Re : GPS - langage C - PSoC Creator 3.0

    Après plusieurs essais, je me redirige vers vous,

    J'ai essayé toute sorte de fonction concernant l'UART mais je n'ai pas réussi à afficher ma trame complète....
    J'affiche déjà "Trame = " sur TinyBootloader avec la liaison série grâce à un espion_UART.

    Voici mon code actuel

    Code:
    char trame;
    char espion_RX;
    char valtrame[50];
    
    void isr_espion_code(void)
    {
    	uint32 source = 0;
    	espion_RX=espion_UartGetChar();
    		if (espion_RX!=0)
    		{
    			espion_UartPutChar(espion_RX);
    		}
        source = espion_GetRxInterruptSourceMasked();
        espion_ClearRxInterruptSource(source);
    }
    
    int main()
    {	
    CyGlobalIntEnable;
    	
    isr_espion_Enable();
    isr_espion_Start();
    
    UART_Init();
    UART_Start ();
    espion_Init();
    espion_Start ();
    
    	
    
    	espion_UartPutChar(0xD);
    	espion_UartPutChar(0xA);
    
    	trame = UART_ReadRxData();
    	UART_PutChar(trame);
    
    	valtrame[0]=0;
    	sprintf(valtrame,"%d",trame);
    
    	espion_UartPutChar(0xD);
    	espion_UartPutChar(0xA);
    	
    	espion_UartPutString("Trame= ");
    	espion_UartPutString(valtrame);
    	
    }
    En compilant cela , j'affiche "Trame=84" ou 80 par moment mais aucune idée d'ou ce nombre provient.
    en changeant %d(nombre) par %s(chaîne de caractère), je reçois un caractère coeur.

    Je suis toujours dans l'impasse, merci de vos réponses.
    Dernière modification par Antoane ; 11/03/2016 à 13h22. Motif: Remplacement des balises [QUOTE] par [CODE].

  11. #10
    spown

    Re : GPS - langage C - PSoC Creator 3.0

    Pourquoi t'utilises une interruption ? Essayes UART_GetChar() au lieu de read.

    Pour faire remplir toute la trame et l'afficher, tu peux utiliser UART_ReadRxStatus()et les bits de 'RX Status Register' ( UART_RX_STS_FIFO_NOTEMPTY ) dans une fonction afin de vérifier la réception de chaque caractère avant la saturation du rx buffer.

    Ton GPS est configuré a la même vitesse de ton uart de psoc?

  12. #11
    David71120

    Re : GPS - langage C - PSoC Creator 3.0

    Es-tu sûr que ton GPS fonctionne correctement, et que tu as la bonne config ?
    Essaye de le raccorder directement à un port COM de ton PC (via une interface à base de max232 ou équivalent si besoin) démarre hyperterminal, teraterm, putty ou n'importe quel soft identique
    si ta config est correcte, les trames vont s'afficher directement, si rien ne s'affiche, vérifie ta config ( baud rate, parité etc....) jusqu'à ce que tu ai quelque chose à l'écran.
    Après seulement tu pourras essayer avec ton µP.

    un GPS, c'est pas sorcier, tu l'alimentes et il crache son venin. Reste juste à trouver à quelle vitesse.
    Il n'y a que 10 sortes de personnes, celles qui savent lire le binaire et les autres.

  13. #12
    xNahkrim

    Re : GPS - langage C - PSoC Creator 3.0

    Avec UART_GetChar, la valeur reçu égale 0 (Trame = 0) le problème n'est pas résolu.

    Pour la vitesse de l'UART et du GPS je n'ai aucune idée comment connaitre leur vitesse.

  14. #13
    Yoruk

    Re : GPS - langage C - PSoC Creator 3.0

    La doc n'indique pas tout ça ?

    Tente 8 bits, pas de parité, pas de controle de flux. Même à la mauvaise vitesse, ton terminal devrait afficher des caractères, preuve que la transmission s'effectue.

    Tu as de quoi tenter la manip décrite par David71120 ?
    La robotique, c'est fantastique !

  15. #14
    David71120

    Re : GPS - langage C - PSoC Creator 3.0

    Oui, c'est justement pour déterminer tout ça que je te dis de faire cette manip, il est aisé et rapide d'essayer les différentes combinaisons baudrate/parité courante.
    Il n'y a que 10 sortes de personnes, celles qui savent lire le binaire et les autres.

  16. #15
    xNahkrim

    Re : GPS - langage C - PSoC Creator 3.0

    Je suis déja en 8 bits, pas de parité et pas de controle de flux.
    Je n'ai pas tenté la manip de David71120, mais je suis déjà brancher à un port COM de mon PC et j'utilise TinyBootloader (vitesse 115200 sur tiny et l'UART) pour afficher.

    Le code présent n'affiche rien ou peux etre mon cablage du gps/psoc est mal réalisé..
    UART_Init();
    UART_Start ();
    espion_Init();
    espion_Start ();


    trame = UART_GetChar(); //ou ReadRxStatus()
    UART_PutChar(trame);

    valtrame[0]=0;
    sprintf(valtrame,"%c",trame);

    espion_UartPutString(" Trame= ");
    espion_UartPutString(valtrame) ;
    je vous tiens au courant, merci de vos réponse en tout cas et je vous envoie des photos du cablage cette aprem.

  17. #16
    David71120

    Re : GPS - langage C - PSoC Creator 3.0

    mouais, connais pas le fonctionnement de tinybootloader, vraiment le plus simple et marche à coup sûr, tu mets la broche tx du gps sur rx de la db9, la masse, et tu ouvres hyperterminal, et avec la bonne vitesse, ça cause.
    Il n'y a que 10 sortes de personnes, celles qui savent lire le binaire et les autres.

  18. #17
    xNahkrim

    Re : GPS - langage C - PSoC Creator 3.0

    J'essayerai avec hyperterminal si je peux demain.
    Voici les photos avec un peu de retard ^^
    Images attachées Images attachées

  19. #18
    Yoruk

    Re : GPS - langage C - PSoC Creator 3.0

    C'est quoi le truc rouge intitulé "9", relié au GPS ?
    La robotique, c'est fantastique !

  20. #19
    spown

    Re : GPS - langage C - PSoC Creator 3.0

    Le truc rouge est un adaptateur de pins.

  21. #20
    xNahkrim

    Re : GPS - langage C - PSoC Creator 3.0

    Le truc rouge c'est le module GPS est le 9 représente juste le numéro du GPS global car on en a plusieur au sein du lycée.

  22. #21
    Yoruk

    Re : GPS - langage C - PSoC Creator 3.0

    Citation Envoyé par xNahkrim Voir le message
    Le truc rouge c'est le module GPS
    Non à priori le module GPS est bien le module carré à gauche, la petite carte rouge devant être une plaque à borniers uniquement.

    Tu as pu tenter la manip de David71120 ?
    La robotique, c'est fantastique !

  23. #22
    xNahkrim

    Re : GPS - langage C - PSoC Creator 3.0

    Re Bonjour,
    Après un mois d'abscence j'ai réussi à capter les trames, enfin les afficher sur tinybootloader.
    Ayant le code GPS, pour convertir longitude, latitude en Visual Basic. Cependant aucune idée comme les fonctions Mid() et Val() se font en langage C pour extraire une partie d'une trame $GGA ou autres types de trame spécifiées.

    Je voudrais donc savoir comme on programme Mid() et Val() en langage C.

    Je vous envoie mon code ci dessous :
    void isr_espion_code(void)
    {
    uint32 source = 0;
    espion_RX=espion_UartGetChar() ;
    if (espion_RX!=0)
    {
    UART_UartPutChar(espion_RX);
    espion_UartPutChar(espion_RX);


    }
    source = espion_GetRxInterruptSourceMas ked();
    espion_ClearRxInterruptSource( source);
    }

    void isr_UART_code(void)
    {
    uint32 source = 0;
    UART_RX=UART_UartGetChar();
    if (UART_RX!=0)
    {
    espion_UartPutChar(UART_RX);
    }
    source = UART_GetRxInterruptSourceMaske d();
    UART_ClearRxInterruptSource(so urce);
    }

    int main()
    {
    CyGlobalIntEnable;

    isr_espion_Enable();
    isr_espion_Start();

    isr_UART_Enable();
    isr_UART_Start();

    UART_Init();
    UART_Start ();
    espion_Init();
    espion_Start ();

    do
    {
    espion_UartPutChar(0xD);
    espion_UartPutChar(0xA);

    espion_UartPutString("Trame= ");
    char* Mid(char trame, int GGA, int *);
    espion_UartPutChar(trame);

    CyDelay(5000);
    }
    while(1==1);

    }
    Et une petite image des trames à convertir :
    Nom : TRAME GPGGAGPRMMC.PNG
Affichages : 198
Taille : 11,3 Ko

    Merci de votre aide.

Discussions similaires

  1. PSoC: Qui a testé?
    Par bogue69 dans le forum Électronique
    Réponses: 1
    Dernier message: 21/06/2012, 20h50
  2. Psoc Designer
    Par invite2286c2b6 dans le forum Lectures scientifiques
    Réponses: 0
    Dernier message: 19/05/2009, 12h03
  3. pwm sur psoc en c
    Par invite10382e5a dans le forum Électronique
    Réponses: 0
    Dernier message: 27/11/2008, 07h45
  4. important: Psoc
    Par inviteefa3eb0f dans le forum Électronique
    Réponses: 8
    Dernier message: 12/03/2007, 20h37
  5. Psoc Cypress
    Par inviteacb3e291 dans le forum Électronique
    Réponses: 2
    Dernier message: 20/10/2005, 09h57
Découvrez nos comparatifs produits sur l'informatique et les technologies.