Source code for DesignSpark.Pmod.TC1

# -*- coding: utf-8 -*-
# Copyright (c) 2017 RS Components Ltd
# SPDX-License-Identifier: MIT License

"""
Interface for PmodTC1 module (MAX31855).
"""

import spidev
CAP = 'SPI'
PHY = '1x6'

[docs]class PmodTC1: def __init__(self, DSPMod6): self.port = DSPMod6 self.cs = self.port.pin1 self.nc = self.port.pin2 self.miso = self.port.pin3 self.sclk = self.port.pin4 self.spi = spidev.SpiDev() self.__startSPI() def __startSPI(self): if self.cs == 7: #CE1 self.spi.open(0,1) elif self.cs == 8: #CE0 self.spi.open(0,0) else: #throw exception here return self.spi.max_speed_hz = 400000 self.spi.mode = 0b00 def __stopSPI(self): self.spi.close() def __spiRead32(self): resp = self.spi.xfer2([0x00, 0x00, 0x00, 0x00]) w = 0 for i in range(3): w |= resp[i] if i < 3: w <<= 8 return w
[docs] def readCelcius(self): w = self.__spiRead32() #is error? if w & 0x7: return float('nan') #is negative ? if w & 0x80000000: w = 0xFFFFC000 | (( w >> 18) & 0x00003FFFF) else: #its standard w >>= 18 cent = float(w) cent *= 0.25 return cent
[docs] def readFarenheit(self): f = self.readCelcius() f *= 9.0 f /= 5.0 f += 32 return f
[docs] def readInternal(self): w = self.__spiRead32() w >> 4 w &= 0x7FF if w & 0x800: # is negative w = 0x0F800 | (w & 0x7FF) internal = float(w) internal *= 0.0625 return internal
[docs] def readError(): w = self.__spiRead32() return w & 0x7
[docs] def cleanup(self): self.__stopSPI()