Contiki-NG
Toggle main menu visibility
Loading...
Searching...
No Matches
temperature-sensor.c
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2015, Nordic Semiconductor
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
7
* are met:
8
* 1. Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* 2. Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in the
12
* documentation and/or other materials provided with the distribution.
13
* 3. Neither the name of the Institute nor the names of its contributors
14
* may be used to endorse or promote products derived from this software
15
* without specific prior written permission.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
18
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
21
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27
* SUCH DAMAGE.
28
*
29
*/
30
31
/**
32
* \addtogroup nrf52840generic All nRF52840 platforms
33
* @{
34
*
35
* \addtogroup nrf52840-devices Device drivers
36
* @{
37
*
38
* \addtogroup nrf52840-devices-temp Temperature sensor driver
39
* This is a driver for nRF52840 hardware sensor.
40
*
41
* @{
42
*
43
* \file
44
* Temperature sensor implementation.
45
* \author
46
* Wojciech Bober <wojciech.bober@nordicsemi.no>
47
*
48
*/
49
#include "contiki.h"
50
#include "nrf_temp.h"
51
#include "
temperature-sensor.h
"
52
53
const
struct
sensors_sensor temperature_sensor;
54
55
/*---------------------------------------------------------------------------*/
56
/**
57
* \brief Returns device temperature
58
* \param type ignored
59
* \return Device temperature in degrees Celsius
60
*/
61
static
int
62
value
(
int
type)
63
{
64
int32_t
volatile
temp;
65
66
NRF_TEMP->TASKS_START = 1;
67
/* nRF52832 datasheet: one temperature measurement takes typically 36 us */
68
RTIMER_BUSYWAIT_UNTIL
(NRF_TEMP->EVENTS_DATARDY,
RTIMER_SECOND
* 72 / 1000000);
69
NRF_TEMP->EVENTS_DATARDY = 0;
70
temp = nrf_temp_read();
71
NRF_TEMP->TASKS_STOP = 1;
72
73
return
temp;
74
}
75
/*---------------------------------------------------------------------------*/
76
/**
77
* \brief Configures temperature sensor
78
* \param type initializes the hardware sensor when \a type is set to
79
* \a SENSORS_HW_INIT
80
* \param c ignored
81
* \return 1
82
*/
83
static
int
84
configure
(
int
type,
int
c)
85
{
86
if
(type == SENSORS_HW_INIT) {
87
nrf_temp_init();
88
}
89
return
1;
90
}
91
/**
92
* \brief Return temperature sensor status
93
* \param type ignored
94
* \return 1
95
*/
96
/*---------------------------------------------------------------------------*/
97
static
int
98
status
(
int
type)
99
{
100
return
1;
101
}
102
/*---------------------------------------------------------------------------*/
103
SENSORS_SENSOR(temperature_sensor, TEMPERATURE_SENSOR,
value
, configure, status);
104
/**
105
* @}
106
* @}
107
* @}
108
*/
value
static int value(int type)
Definition
cc2538-temp-sensor.c:49
configure
static int configure(int type, int c)
Configures temperature sensor.
Definition
temperature-sensor.c:84
value
static int value(int type)
Returns device temperature.
Definition
temperature-sensor.c:62
status
static int status(int type)
Return temperature sensor status.
Definition
temperature-sensor.c:98
RTIMER_BUSYWAIT_UNTIL
#define RTIMER_BUSYWAIT_UNTIL(cond, max_time)
Busy-wait until a condition for at most max_time.
Definition
rtimer.h:217
RTIMER_SECOND
#define RTIMER_SECOND
Number of rtimer ticks for 1 second.
Definition
rtimer.h:116
temperature-sensor.h
Temperature sensor header file.
arch
platform
nrf52840
common
temperature-sensor.c
Generated on
for Contiki-NG by
1.17.0