Port of the SHT2x example code from Sensirion

Dependents:   sht21_test ENVLogger

Committer:
ssozonoff
Date:
Sat Apr 23 19:07:52 2011 +0000
Revision:
2:2464fed17980
Parent:
1:d0f691423bf1
Code cleanup

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ssozonoff 1:d0f691423bf1 1 /*
ssozonoff 1:d0f691423bf1 2 Copyright (c) 2010 Andy Kirkham
ssozonoff 1:d0f691423bf1 3
ssozonoff 1:d0f691423bf1 4 Permission is hereby granted, free of charge, to any person obtaining a copy
ssozonoff 1:d0f691423bf1 5 of this software and associated documentation files (the "Software"), to deal
ssozonoff 1:d0f691423bf1 6 in the Software without restriction, including without limitation the rights
ssozonoff 1:d0f691423bf1 7 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
ssozonoff 1:d0f691423bf1 8 copies of the Software, and to permit persons to whom the Software is
ssozonoff 1:d0f691423bf1 9 furnished to do so, subject to the following conditions:
ssozonoff 1:d0f691423bf1 10
ssozonoff 1:d0f691423bf1 11 The above copyright notice and this permission notice shall be included in
ssozonoff 1:d0f691423bf1 12 all copies or substantial portions of the Software.
ssozonoff 1:d0f691423bf1 13
ssozonoff 1:d0f691423bf1 14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
ssozonoff 1:d0f691423bf1 15 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
ssozonoff 1:d0f691423bf1 16 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
ssozonoff 1:d0f691423bf1 17 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
ssozonoff 1:d0f691423bf1 18 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
ssozonoff 1:d0f691423bf1 19 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
ssozonoff 1:d0f691423bf1 20 THE SOFTWARE.
ssozonoff 1:d0f691423bf1 21 */
ssozonoff 1:d0f691423bf1 22
ssozonoff 1:d0f691423bf1 23 #include "mbed.h"
ssozonoff 1:d0f691423bf1 24
ssozonoff 1:d0f691423bf1 25 #ifndef SHT21_I2C_H
ssozonoff 1:d0f691423bf1 26 #define SHT21_I2C_H
ssozonoff 1:d0f691423bf1 27
ssozonoff 1:d0f691423bf1 28 class SHT_I2C : public I2C {
ssozonoff 1:d0f691423bf1 29
ssozonoff 1:d0f691423bf1 30 protected:
ssozonoff 1:d0f691423bf1 31 PinName _scl;
ssozonoff 1:d0f691423bf1 32 PinName _sda;
ssozonoff 1:d0f691423bf1 33
ssozonoff 1:d0f691423bf1 34 public:
ssozonoff 1:d0f691423bf1 35
ssozonoff 1:d0f691423bf1 36 SHT_I2C(PinName sda, PinName scl, const char *name = NULL) : I2C(sda, scl, name) {
ssozonoff 1:d0f691423bf1 37 _sda = sda;
ssozonoff 1:d0f691423bf1 38 _scl = scl;
ssozonoff 1:d0f691423bf1 39 }
ssozonoff 1:d0f691423bf1 40
ssozonoff 1:d0f691423bf1 41 void sclAsInput(void) {
ssozonoff 1:d0f691423bf1 42 switch(_scl) {
ssozonoff 1:d0f691423bf1 43 case p10:
ssozonoff 1:d0f691423bf1 44 LPC_PINCON->PINSEL0 &= ~(3UL << 2); // p10, P0.1 as GPIO
ssozonoff 1:d0f691423bf1 45 LPC_GPIO0->FIODIR &= ~(1UL << 1); // p10, P0.1 as Input
ssozonoff 1:d0f691423bf1 46 break;
ssozonoff 1:d0f691423bf1 47 case p27:
ssozonoff 1:d0f691423bf1 48 LPC_PINCON->PINSEL0&=~(3UL << 22); // p27, P0.11 as GPIO
ssozonoff 1:d0f691423bf1 49 LPC_GPIO0->FIODIR &= ~(1UL << 11); // p27, P0.11 as input
ssozonoff 1:d0f691423bf1 50 break;
ssozonoff 1:d0f691423bf1 51 }
ssozonoff 1:d0f691423bf1 52 }
ssozonoff 1:d0f691423bf1 53
ssozonoff 1:d0f691423bf1 54 int sclRead(void) {
ssozonoff 1:d0f691423bf1 55 switch(_scl) {
ssozonoff 1:d0f691423bf1 56 case p10: return (LPC_GPIO0->FIOPIN & (1UL << 1)) ? 1 : 0;
ssozonoff 1:d0f691423bf1 57 case p27: return (LPC_GPIO0->FIOPIN & (1UL << 11)) ? 1 : 0;
ssozonoff 1:d0f691423bf1 58 default:
ssozonoff 1:d0f691423bf1 59 return 0;
ssozonoff 1:d0f691423bf1 60 }
ssozonoff 1:d0f691423bf1 61 }
ssozonoff 1:d0f691423bf1 62
ssozonoff 1:d0f691423bf1 63 void sclNormal(void) {
ssozonoff 1:d0f691423bf1 64 switch(_scl) {
ssozonoff 1:d0f691423bf1 65 case p10:
ssozonoff 1:d0f691423bf1 66 LPC_PINCON->PINSEL0 &= ~(3UL << 2); // p10, P0.1 as I2C SCL1
ssozonoff 1:d0f691423bf1 67 LPC_PINCON->PINSEL0 |= (3UL << 2);
ssozonoff 1:d0f691423bf1 68 break;
ssozonoff 1:d0f691423bf1 69 case p27:
ssozonoff 1:d0f691423bf1 70 LPC_PINCON->PINSEL0 &= ~(3UL << 22); // p27, P0.11 as I2C SCL2
ssozonoff 1:d0f691423bf1 71 LPC_PINCON->PINSEL0 |= (2UL << 22);
ssozonoff 1:d0f691423bf1 72 break;
ssozonoff 1:d0f691423bf1 73 }
ssozonoff 1:d0f691423bf1 74 }
ssozonoff 1:d0f691423bf1 75
ssozonoff 1:d0f691423bf1 76 };
ssozonoff 1:d0f691423bf1 77
ssozonoff 1:d0f691423bf1 78 #endif