-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathds18s20.h
92 lines (79 loc) · 2.25 KB
/
ds18s20.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/*
* File: ds18s20.h
* Author: SD
*
* Créé le 21 octobre 2017
*
* Voir programme d'exemple en bas de ce fichier
*/
#include "oneWire.h"
#ifndef DS18S20_H
#define DS18S20_H
#ifdef __cplusplus
extern "C" {
#endif
#define DS18S20_SKIP_ROM 0xCC
#define DS18S20_SEARCH_ROM 0xF0
#define DS18S20_READ_ROM 0x33
#define DS18S20_START_TEMP_CONV 0x44
#define DS18S20_READ_SCRATCHPAD 0xBE
#define DS18S20_WRITE_SCRATCHPAD 0x4E
#define DS18S20_SCRATCHPAD_SIZE 9
/**
* Initialise la GPIO DQ du bus OneWire. Fait un reset du bus OneWire,
* si un périphérique est connecté, il doit répondre
*
* @author SD
* @return TRUE ou FALSE selon si un capteur à répondu ou pas
*/
owByte ow_DS18S20_init();
/**
* Envoie l'ordre au capteur de réaliser une convertion de température
*
* @author SD
* @return TRUE ou FALSE selon si un capteur à répondu ou pas
*/
owByte ow_DS18S20_startTempConvAll();
/**
* Lit la mémoire interne du capteur (tableau de 9 octets appelé SCRATCHPAD)
*
* @author SD
* @param owPAD : pointeur sur un tableau de 9 octets pour stocker le résultat de la lecture
* @return TRUE ou FALSE selon si un capteur à répondu ou pas
*/
owByte ow_DS1820_readScratchPad(owByte* owPAD);
/**
* Convertit les valeurs lues dans le scratchpad en une valeur en degrés Celcius
*
* @param lsb : premier octet du scratchpad
* @param msb : deuxième octet du scratchpad
* @return la température en degrés Celcius (float)
*/
float ow_DS1820_getTemp(owByte lsb, owByte msb);
void ow_readROM(owByte*);
#ifdef __cplusplus
}
#endif
/*
#include "mcc_generated_files/mcc.h"
#include "ds18s20.h"
void main(void)
{
// initialize the device
SYSTEM_Initialize();
owByte get[DS18S20_SCRATCHPAD_SIZE];
if(!ow_DS18S20_init())
printf("\r\nERREUR DS18S20_init : Le capteur ne repond pas\r\n");
__delay_ms(2000);
while (1)
{
if(ow_DS18S20_startTempConvAll()) {
__delay_ms(500);
if(ow_DS1820_readScratchPad(get)) {
printf("T : %.1f\r\n",ow_DS1820_getTemp(get[0],get[1]));
} else printf("\r\nERREUR readScratchPad : Le capteur ne repond pas\r\n");
} else printf("\r\nERREUR startTempConvAll : Le capteur ne repond pas\r\n");
}
}
*/
#endif /* DS18S20_H */