Bienvenu(e)! Identification Créer un nouveau profil

Recherche avancée

PIC 18F4580 + RS232 +GPS+ MPLAB

Envoyé par kathy90000 
PIC 18F4580 + RS232 +GPS+ MPLAB
samedi 29 décembre 2012 01:38:15
Bonjour,

Je travaille sur un projet de récupération d'une trame de GPS via une liaison RS232 avec un PIC 18F4580 sous mplab C18

Le projet consiste à extraire la latitude, la longitude, l'heure de la trame GGA et la vitesse depuis la trame RMC.

j'ai essayé de faire un programme, je ne sais malheureusement pas si il fonctionne ou pas !? je voudrais dans un premier temps recevoir une trame , l'enregistrer dans un tableau et de pouvoir afficher ce tableau contenant cette trame. (avant de faire le decodage et extraire les NMEA GGA et RMC)

Pourriez vous me verifier ce programme et voir si j'ai bien mis les déclarations etc ...

#include <p18f4580.h>

#include <usart.h>
#include <sw_uart.h>
#include <stdlib.h>
#include <stdio.h>
#include <delays.h>
void closeUSART(void);

//void getsUSART ( char * gps , unsigned char 80 );
void main(void)
{

char gps[80]; // tableau pour recevoir la trame

OpenUSART (USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 130); //4800bauds

TRISCbits.TRISC6 = 0 ; // Lignes affect?es au RS232
TRISCbits.TRISC7 = 1;
while(1){
getsUSART( gps, 80); // instruction pour revoir la trame

}
}

Je vous remercie d'avance pour toute aide possible venant de votre part dans l'optique de me mettre sur une bonne voie.

PS : je suis une étudiante en 1ere année de DUT, je suis débutante dans le domaine et dans la programmation en géneral.


Bien à vous.

Re: PIC 18F4580 + RS232 +GPS+ MPLAB
dimanche 30 décembre 2012 19:24:40
Salut,

Pour commencer, j'ai une bonne nouvelle pour toi, ton code fonctionne, du moins dans le simulateur d'mplab.

Plusieurs choses auquelles tu dois bien faire attention, "getsusart" est une fonction blocante pour ton application (veille à ce que ton watchdog ne s'alarme pas). Veille également à ce qui se passerait si tu ne reçois qu'une partie de la trame (pour la suite de ton code)

Tel que ton programme est là, il n'affichera nul part ce qu'il a reçu, mais je suppose que tu as bien compris ça. Tu dois donc utiliser l'outil de vue des variables (View -> Locals) dans les menus de MPLAB

Pour tester ton programme, j'ai créé un projet pour le 18f4580 sous mplab et j'ai copié ton code.

J'ai lancé le débugger et j'ai injecté un stimulus (Debugger -> Stimulus -> new workbook) Dans lequel pour le registre RCREG (action: direct message) j'envoyé un message de 40 bytes (80 caractères c'est long à taper ;-)), Ensuite j'ai envoyé 2 fois le stimulus (en cliquant 2 fois sur fire) et j'ai bien passé l'instruction "getsusart" et obtenu deux fois le message envoyé dans le tableau GPS.

Je te souhaite une excellente nouvelle année et beaucoup de réussite dans ton projet, n'hésite pas à présenter tes réalisations sur ce forum.

Benjamin

PS: ta question me fait pensé qu'il serait intéréssant d'écrire un article sur l'utilisation du debugger d'mplab, j'essayerai de faire ça dès que l'occasion se présente

.: [www.roboticus.org] :. Control your own world !
Seuls les utilisateurs enregistrés peuvent poster des messages dans ce forum.

Cliquez ici pour vous connecter