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

Résolus Lecture DS18B20 16F887
marcus_95
Débutant
Débutant
Messages : 49
Âge : 61
Enregistré en : mai 2018
Localisation : LE BOURGET

#1 Message par marcus_95 » jeu. 2 janv. 2020 16:58

Bonjour et bonne année a tous,
j'essai de lire une sonde DS18B20 avec un PIC 16F887 sous MPLAB X IDE et compilateur XC8 mode 90.
J'ai téléchargé un programme de démo pour le modifier (sans modif il ne tourne pas).
Le but final est de l'utiliser avec un autre programme.
Voici les erreures:
Main.c:31:7: warning: (107) illegal # directive "device"
Main.c:31:9: warning: (163) unexpected text in control line ignored
Main.c:33:4: warning: (107) illegal # directive "use"
Main.c:33:6: warning: (163) unexpected text in control line ignored
1wire.c:13:1: warning: (361) function declared implicit int
make[2]: *** [build/default/production/1wire.p1] Error 1
1wire.c:13:12: error: (192) undefined identifier "PIN_C6"
make[2]: *** Waiting for unfinished jobs....
1wire.c:14:1: warning: (361) function declared implicit int
1wire.c:15:1: warning: (361) function declared implicit int
1wire.c:32:12: error: (192) undefined identifier "PIN_C6"
1wire.c:34:1: warning: (361) function declared implicit int
1wire.c:34:20: warning: (361) function declared implicit int
1wire.c:54:12: error: (192) undefined identifier "PIN_C6"
1wire.c:58:21: warning: (361) function declared implicit int
(908) exit status = 1
nbproject/Makefile-default.mk:138: recipe for target 'build/default/production/1wire.p1' failed
1wire.c:13:1: warning: (361) function declared implicit int
1wire.c:13:12: error: (192) undefined identifier "PIN_C6"
1wire.c:15:1: warning: (361) function declared implicit int
1wire.c:32:12: error: (192) undefined identifier "PIN_C6"
1wire.c:34:1: warning: (361) function declared implicit int
1wire.c:34:20: warning: (361) function declared implicit int
1wire.c:54:12: error: (192) undefined identifier "PIN_C6"
1wire.c:58:21: warning: (361) function declared implicit int
Main.c:97:1: warning: (361) function declared implicit int
Main.c:97:15: error: (192) undefined identifier "RTCC_INTERNAL"
Main.c:97:29: error: (192) undefined identifier "RTCC_DIV_1"
Main.c:98:1: warning: (361) function declared implicit int
Main.c:98:15: error: (192) undefined identifier "T1_DISABLED"
Main.c:99:1: warning: (361) function declared implicit int
Main.c:99:15: error: (192) undefined identifier "T2_DISABLED"
Main.c:118:1: warning: (361) function declared implicit int
Avez-vous une idée pour m'en sortir.
Cdt.
Marcus
ds18b20.X.rar
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par marcus_95 le jeu. 9 janv. 2020 13:30, modifié 1 fois.

Lecture DS18B20 16F887
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#2 Message par Jérémy » jeu. 2 janv. 2020 19:33

Bonsoir,

TOn post est très peu lisible . ca gache la lecture !.

Mais les lignes de code dans un citation par exemple. ou dans une balise code.
Ca sent le problème de configuration des fichiers au départ et des varaiables mal déclarée. Mais je ne connais pas MPLABX .

Tupeux essayé de trouver les lignes fautives en les supprimant au fur et à mesure

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

Lecture DS18B20 16F887
marcus_95
Débutant
Débutant
Messages : 49
Âge : 61
Enregistré en : mai 2018
Localisation : LE BOURGET

#3 Message par marcus_95 » jeu. 2 janv. 2020 19:46

Merci d'avoir répondu, désolé pour la mise en page.
je vais tester en supprimant les lignes.
Cdt.
Marcus.

Lecture DS18B20 16F887
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#4 Message par satinas » jeu. 2 janv. 2020 20:58

Bonjour, il faut le compiler avec CCS, compilateur commercialisé.
Est-ce que tu as installé le plugin compilateur CCS sur MpLabX ?

Lecture DS18B20 16F887
marcus_95
Débutant
Débutant
Messages : 49
Âge : 61
Enregistré en : mai 2018
Localisation : LE BOURGET

#5 Message par marcus_95 » ven. 3 janv. 2020 16:48

Bonjour,
j'avais une version démo qui a expiré.
Une image de MPLAB.
J'ai essayé en supprimant des lignes, ça marche pas. ( programme blanc).
MPLAB.PNG

Cdt.
Marcus.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

Lecture DS18B20 16F887
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#6 Message par satinas » ven. 3 janv. 2020 18:47

Bonjour
Commence par faire un programme simple avec XC8.
Une fois que la led clignotera à la bonne vitesse, tu pourras passer au bus 1-wire.
Essaye celui-là. Si tu utilises un simulateur logiciel, j'y connais rien.

Code : Tout sélectionner

// 16F887 avec quartz 20MHz
// led B0 clignotante chaque seconde

#include <xc.h>

#define _XTAL_FREQ 20000000

#pragma config FOSC = HS  // HS oscillateur
#pragma config WDTE = OFF // watchdog off

void main(void)
{
  OSCCON = 0b01111000;    // HS oscillateur
  ANSEL  = 0;             // I/O numériques
  ANSELH = 0;             // I/O numériques
  TRISBbits.TRISB0 = 0;   // output led sur B0
 
  while(1)
  {
    PORTBbits.RB0 = 1;    // led on
    __delay_ms(1000);     // 1 seconde
    PORTBbits.RB0 = 0;    // led off
    __delay_ms(1000);     // 1 seconde
  }
}

Lecture DS18B20 16F887
marcus_95
Débutant
Débutant
Messages : 49
Âge : 61
Enregistré en : mai 2018
Localisation : LE BOURGET

#7 Message par marcus_95 » ven. 3 janv. 2020 19:34

Bonjour,
merci beaucoup, je le teste.
Cdt.
Marcus.

Lecture DS18B20 16F887
marcus_95
Débutant
Débutant
Messages : 49
Âge : 61
Enregistré en : mai 2018
Localisation : LE BOURGET

#8 Message par marcus_95 » ven. 3 janv. 2020 19:43

OK ça marche

Lecture DS18B20 16F887
marcus_95
Débutant
Débutant
Messages : 49
Âge : 61
Enregistré en : mai 2018
Localisation : LE BOURGET

#9 Message par marcus_95 » ven. 3 janv. 2020 20:05

j' ai fait un essai et ça compile

Code : Tout sélectionner

// 16F887 avec quartz 20MHz
// led B0 clignotante chaque seconde

#include <xc.h>
#include <htc.h>
#include <stdlib.h>
#include <ctype.h>
#define _XTAL_FREQ 20000000
#pragma config FOSC = HS  // HS oscillateur
#pragma config WDTE = OFF // watchdog off

#define ONE_WIRE_PIN   PORTDbits.RD0
#define ONE_WIRE_LOW   TRISA = 0b00000000; RD0=0;
#define ONE_WIRE_HIGH  TRISA = 0b00000001;
#define delay_us(x) { unsigned char us; \
                 us = (x)/(12000000/FOSC)|1; \
               while(--us != 0) continue; }
void main(void)
{
  OSCCON = 0b01111000;    // HS oscillateur
  ANSEL  = 0;             // I/O numériques
  ANSELH = 0;             // I/O numériques
  TRISBbits.TRISB0 = 0;   // output led sur B0
 
  while
(1)
  {
    PORTBbits.RB0 = 1;    // led on
    __delay_ms(1000);     // 1 seconde
    PORTBbits.RB0 = 0;    // led off
    __delay_ms(1000);     // 1 seconde
  }
}

void _delay_ms(unsigned int ms)
{
  unsigned char i;
  do {
    i = 4;
    do {
      __delay_us(164);
    } while(--i);
  } while(--ms);
}



void onewire_init()  // OK if just using a single permanently connected device
{  
//onewire_disable_interrupts(TRUE);
   ONE_WIRE_LOW;
   __delay_us( 500 ); // pull 1-wire low for reset pulse
   ONE_WIRE_HIGH; // float 1-wire high
   __delay_us( 80 ); // wait for presence pulse, allowing for device variation
   __delay_us( 420 ); // wait-out remaining initialisation window.
   ONE_WIRE_HIGH;  //float 1-wire pin
   //onewire_disable_interrupts(FALSE);

reste a lire la sonde DS18B20 .... :mur: :mur:

Lecture DS18B20 16F887
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#10 Message par satinas » ven. 3 janv. 2020 20:55

les lignes en trop ->

Code : Tout sélectionner

#include <htc.h>
#define delay_us(x) { unsigned char us;
                 us = (x)/(12000000/FOSC)|1; \
               while(--us != 0) continue; }
void _delay_ms(unsigned int ms)
{
  unsigned char i;
  do {
    i = 4;
    do {
      __delay_us(164);
    } while(--i);
  } while(--ms);
}

car xc8 te fournit les macros
__delay_ms(long)
__delay_us(long)

Par contre il faut que tu démarres le port série pour afficher le résultat de la mesure, et là faut se taper le datasheet.
https://electrosome.com/uart-pic-microc ... mplab-xc8/


Retourner vers « Langage C »

Qui est en ligne

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