jack zen
/
MAX6675_hi
Fork of DS1820_HelloWorld by
Revision 6:7ef001211531, committed 2017-09-06
- Comitter:
- jack__zen
- Date:
- Wed Sep 06 07:38:39 2017 +0000
- Parent:
- 5:c27ca1ae3915
- Commit message:
Changed in this revision
--- a/DS18B20.lib Wed Sep 06 05:37:29 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -https://developer.mbed.org/users/jack__zen/code/DS18B20/#cf42e1112753
--- a/DS18S20.lib Wed Sep 06 05:37:29 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -https://developer.mbed.org/users/jack__zen/code/DS18S20/#d7eea3b21e1d
--- a/DebugTrace.lib Wed Sep 06 05:37:29 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -https://developer.mbed.org/users/jack__zen/code/DebugTrace/#1934d9b9fd80
--- a/OneWire.lib Wed Sep 06 05:37:29 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -https://developer.mbed.org/users/jack__zen/code/OneWire/#a47e8ec71a4e
--- a/main.cpp Wed Sep 06 05:37:29 2017 +0000 +++ b/main.cpp Wed Sep 06 07:38:39 2017 +0000 @@ -1,61 +1,20 @@ -/* -* OneWireCRC/OneWireThermometer demo. -* -* Copyright (C) <2009> Petras Saduikis <petras@petras.co.uk> -* -* This file is part of OneWireCRC/OneWireThermometer. -* -* OneWireCRC/OneWireThermometer is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* OneWireCRC/OneWireThermometer is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with OneWireCRC/OneWireThermometer0. If not, see <http://www.gnu.org/licenses/>. -*/ - -//////////////////////////////////////////////////////////////////// -// Test code to read temperature from a Maxim DS18B20 or DS18S20 -// 1-wire device -//////////////////////////////////////////////////////////////////// - -#include <mbed.h> -#include "DS18S20.h" -#include "DS18B20.h" -#include "OneWireDefs.h" - -//#define THERMOMETER DS18S20 -#define THERMOMETER DS18B20 -//Serial pc(USBTX, USBRX); -int main() -{ - // device( crcOn, useAddress, parasitic, mbed pin ) - THERMOMETER device(true, true, false, PA_9); - //pc.baud(9600); - while (!device.initialize()); // keep calling until it works - - while (true) - { - // changing the resolutions only affects the DS18B20. The DS18S20 is fixed. - device.setResolution(nineBit); - device.readTemperature(); - wait(2); - /* device.setResolution(tenBit); - device.readTemperature(); - wait(2); - device.setResolution(elevenBit); - device.readTemperature(); - wait(2); - device.setResolution(twelveBit); - device.readTemperature(); - wait(2); - */ - } - - return EXIT_SUCCESS; -} +#include "mbed.h" +#include "max6675.h" + +SPI spi(PA_7,PA_6,PA_5); +max6675 max(spi,PB_6); + +Serial pc(USBTX,USBRX); + +int main() { + pc.baud(9600); + while (1) { + + float temp = max.read_temp(); + pc.printf("\n\rT: %f",temp ); + + wait(.25); + } + + +} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/max6675.cpp Wed Sep 06 07:38:39 2017 +0000 @@ -0,0 +1,42 @@ + +#include <mbed.h> +#include "max6675.h" + +max6675::max6675(SPI& _spi, PinName _ncs) : spi(_spi), ncs(_ncs) { + +} + +float max6675::read_temp() { + short value = 0; + float temp = 0; + + uint8_t highByte=0; + uint8_t lowByte=0; + + select(); + wait(.25); //This delay is needed else it does'nt seem to update the temp + + highByte = spi.write(0); + lowByte = spi.write(0); + deselect(); + + + if (lowByte & (1<<2)) { + error("No Probe"); + } else { + value = (highByte << 5 | lowByte>>3); + } + + temp = (value*0.25); // Multiply the value by 0.25 to get temp in ˚C or + // * (9.0/5.0)) + 32.0; // Convert value to ˚F (ensure proper floats!) + +return temp; +} + +void max6675::select() { + ncs = 0; +} + +void max6675::deselect() { + ncs = 1; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/max6675.h Wed Sep 06 07:38:39 2017 +0000 @@ -0,0 +1,25 @@ +#ifndef MAX6675_h +#define MAX6675_h + +#include "mbed.h" + +class max6675 +{ + SPI& spi; + DigitalOut ncs; + public: + + max6675(SPI& _spi, PinName _ncs); + void select(); + void deselect(); + + float read_temp(); + private: + PinName _CS_pin; + PinName _SO_pin; + PinName _SCK_pin; + int _units; + float _error; +}; + +#endif