Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Prog c pic16F877 avec capteurs

  k-meleon, le mercredi 28 mars 2007 à 09:16:58
Bonjour!
je suis en galère sur mon programme c. on a projet à faire qui est le suivant: configuer un pic16F877 pour qu'il puisse communiquer avec un module zigbee.
differents capteurs sont connectés au pic( temperature, humidité).
voici le format de notre trame RS232:
start/mode(Lecture, ecriture, config)/identifiant capteur (A1)/checksum/ données/checksum/stop
on a 8 bit en tout.
j'ai fait les programme de communication RS232. mon problème est au niveau du programme principal (main).
je n'arrive pas à definir le cheminement du prog.
reconnaissance du bit de start, mode,etc...

est ce que quelqu'un pourrait m'aider avec du code concret car je suis bloque. j'ai fait Bigonoff et la plupart des sites et j'ai plein d'exemples de prog.

merci d'avance

/*********************************************************
PROGRAMME PRINCIPAL DU PIC
*********************************************************/
#include "main.h"


//---------- Configuration des fusibles ----------
__CONFIG(HS&WDTDIS&PWRTDIS&BORDIS&LVPDIS&DUNPROT); //Configuration des fusibles
//Osc Quartz, watchdog disabled, brown out reset disbled, Low voltage programmation disabled
//data code unprotected, Flash memory write unprotected //&WRTDIS&UNPROTECT

//---------- MAIN ----------
void main(void)
{
/** INITIALISATIONS **/
Init_Data(); //Initialisations des données du programme
Init_RS232(); //Initialisations de la voie série
TRISB=0b00000000; //Port RB7-RB0 en sortie

/** LECTURE DE LA TRAME **/
Decodage_trame();

/** GESTION **/
/*switch(mode)
{
case 'L':;break;
case 'E':;break;
case 'C': Configuration();break;
}*/
}

//---------- Sub-fonctions ----------

void Init_Data(void)
{
unsigned char i;
for (i=1;i<=FRAMENBBYTE;i++) //Données recues
data[i]=NULL;
mode=NULL; // mode de fonctionnement
}

/*** Checksum , fonction qui calcul la somme de la trame. le checksum doit faire 0***/
char Checksum(char offset,char nboct,char posCS)
{
unsigned char cs=0;
unsigned char i;

//Réalisation du checksum
for(i=offset;i<=nboct;i++)
cs+=Buffer[i];
//Test du checksum
if((cs+Buffer[posCS])!=0) return -1;
return 0; // On a récupéré les données envoyées
}

/*** Signalisation de l'erreur au PC ***/
void Erreur(void)
{
Transmit_RS232(ERROR);// emet '!' le caractere transmi qui est une erreur
}

/*** Détection ***/
char Decodage_trame(void)
{
unsigned char i;
//*** Réception des données dans un buffer
for (i=1;i<=FRAMENBBYTE;i++)
Buffer[i]=Receive_RS232();
//*** Détection du START
if(Buffer[STARTPOS]!=START) // si le premier char n'est pas le start
{
Erreur();
return -1; //signale l'erreur au main
}//sinon on passe à l'octet suivant
//*** Détection du mot de controle (mode + id périphérique)
// mode
if(Buffer[MODEPOS]=='L'||Buffer[MODEPOS]=='E'||Buffer[MODEPOS]=='C')
mode=Buffer[MODEPOS];
else
{
Erreur();
return -1; //signale l'erreur
}
//id périphérique (type + num)
for(i=0;i<=NBPERIPHMAX;i++)
{
if(Buffer[TYPEPOS]==Liste_Periph[i][0]) // type du capteur
{
if(Buffer[2]==Liste_Periph[i][1]) //numéro du capteur
{
Peripherique[0]=Buffer[1]; //Capteur reconnu...
Peripherique[1]=Buffer[2]; //... on l'enregistre
}
}
else
{
Erreur(); //On a pas reconnu l'en-tête
return -1; //signale l'erreur au main
}
}
//*** Checksum
if(Checksum(STARTPOS,TYPEPOS,CS1POS)!=0)
{
Erreur();
return -1; //signale l'erreur
}
//*** Détection des données
/* for(i=DATAPOS;Buffer[i]==ENDFRAME||i==FRAMENBBYTE;i++)
{
//data[i-DATAPOS]=Buffer[
}*/
}

/*** Traite les interruptions ***/
/*static void interrupt interruptions(void)
{
// Réception d'un octet sur le port série
if(RCIF) //serial receive flag
Decodage_trame();
}*/


// detection de données

for(i=DATAPOS;

outport(buffer[i]);
}Buffer[i]=Receive_RS232();






/********************************************************
Effacement des buffers envoi, réception
*********************************************************/

Efface_buff(void)
{for(i=0;i<=FRAMENBBYTE;i++)
outport(buffer[i]);
}
Configuration: Windows XP
Internet Explorer 6.0
Répondre à k-meleon  Signaler ce message aux modérateurs
Plus d'outil Ajout/Suppression de programmesSi vous n'avez plus l'icône "Ajout et suppression de programmes", cela peut être la cause d'un virus, comme l'endommagement du fichier appwiz.cpl. Pour résoudre le problème, ouvrez le menu Démarrer puis cliquez sur Exécuter et tapez la commande... www.commentcamarche.net/faq/sujet-11278-plus-d-outil-ajout-suppression-de-programmes
Pb execution programme c sous xubuntu (Résolu)Bonjour, Je suis sous xubuntu, j ai installer le compilateur gcc , g++ etc . La compilation (sous xemacs) se passe bien. Mon programme est un programme client/serveur. Et pour l executer à la fac (sous linux), je fais : echoclient 5558... www.commentcamarche.net/forum/affich-4702890-pb-execution-programme-c-sous-xubuntu
Programme C (Sauvegarde des valeurs (Résolu)Bonjour, Voila j'aimerais creer un programme C quisauvegarderait toutes les valeurs entrées dans une table excel ou access... Quel est l'instruction qui le permet??? Je suis débutant. Merci d'avance www.commentcamarche.net/forum/affich-4622178-programme-c-sauvegarde-des-valeurs
Envoie de mail par un programme C (Résolu)Bonjour, je dois commencer un stage lundi dans lequel je vais devoir écrire un programme C (tournant sous Linux) dont une des fonctions sera l'envoie de mails. Pourriez vous m'indiquer s'il existe une fonction capable de le faire ou... www.commentcamarche.net/forum/affich-2296762-envoie-de-mail-par-un-programme-c
Télécharger PSPadPSPad est un excellent éditeur de texte. Il est utile pour travailler sur du simple texte, mais aussi sur du HTML, CSS, Javascript, php ou autres langages de programmation (C++, Java, Python...). Les fonctionnalités sont impressionnantes: ... www.commentcamarche.net/telecharger/telecharger-133-pspad
Télécharger CoolirisCooliris (anciennement PicLens) permet de transformer instantanément un navigateur Internet en un logiciel de présentation d'images plein écran. C’est une extension assez originale. Il est compatible avec de nombreux navigateurs : Internet Explorer,... www.commentcamarche.net/telecharger/telecharger-34055458-cooliris
Mustek P 3600 A3 ProA 3, USB 2.0, Divers:Big Scanning Area. Easy and fast installation through USB-Port. TWAIN-compatible. Big software bundle containing a Picture-Editor and an OCR-Program., Plateforme:PC, Profondeur Couleur :48 bit, Résolution optique Vertical:3600... www.commentcamarche.net/guide-achat/mustek-p-3600-a3-pro-554068-fiche-technique
HP PhotoSmart C5380C 5380, Résolution maximum :600x600 dpi, Divers:Standard one year limited hardware warranty, Vitesse d'impression (noir et blanc):13.0 pages/minute, Connexion:USB/PictBridge, Compatibilité:PC/Mac, Imprimante couleur, Format d'imprimante:Plusieurs formats. www.commentcamarche.net/guide-achat/hp-photosmart-c5380-1152394-fiche-technique
Canon PIXMA MP630MP 630, Vitesse d'impression (noir et blanc):25 pages/minute, Résolution maximum :9600x2400 dpi, Fabricant:Canon, Résolution optique du scanner:4800x9600 dpi, Connexion:Bluetooth/PictBridge/USB, Compatibilité:PC/Mac, Imprimante couleur, Format... www.commentcamarche.net/guide-achat/canon-pixma-mp630-1149281-fiche-technique
Analyste programmeur (développeur)Développeur Le métier de développeur (également nommé analyste-programmeur) consiste à concevoir et à développer une application informatique, c'est-à-dire transcrire un besoin en une solution informatique écrite dans un langage informatique.... www.commentcamarche.net/contents/metiers-informatique/analyste-programmeur-developpeur.php3
Caractéristiques d'un langage de programmationIl existe une multitude de langages de programmation, correspondant à des besoins spécifiques (calcul formel, traitement de chaînes de caractère, temps réel, etc.) et possédant des caractéristiques et des fonctionnalités spécifiques. Ainsi, le choix... www.commentcamarche.net/contents/langages/langage-caracteristiques.php3
CGI - Les variables d'environnementNotion de variable d'environnement Les variables d'environnement sont des données stockées dans des variables du système et permettent aux programmes d'avoir des informations sur son environnement. Dans le cas du programme CGI, l'environnement est... www.commentcamarche.net/contents/cgi/cgienv.php3