def __init__(self, port=None): """ Constructor. :param port: The SPI port that the gyro is connected to :type port: :class:`.SPI.Port` """ super().__init__() if port is None: port = SPI.Port.kOnboardCS0 simPort = None if hal.HALIsSimulation(): from hal_impl.spi_helpers import ADXRS450_Gyro_Sim simPort = ADXRS450_Gyro_Sim(self) self.spi = SPI(port, simPort=simPort) self.spi.setClockRate(3000000) self.spi.setMSBFirst() self.spi.setSampleDataOnLeadingEdge() self.spi.setClockActiveHigh() self.spi.setChipSelectActiveLow() # Validate the part ID if (self._readRegister(self.kPIDRegister) & 0xFF00) != 0x5200: self.spi.close() self.spi = None DriverStation.reportError( "could not find ADXRS450 gyro on SPI port %s" % port, False) return # python-specific: make this easier to simulate if hal.isSimulation(): self.spi.initAccumulator(self.kSamplePeriod, 0x20000000, 4, 0x0, 0x0, 0, 32, True, True) else: self.spi.initAccumulator( self.kSamplePeriod, 0x20000000, 4, 0x0C00000E, 0x04000000, 10, 16, True, True, ) self.calibrate() hal.report(hal.UsageReporting.kResourceType_ADXRS450, port) self.setName("ADXRS450_Gyro", port)
def __init__(self, port=None): """ Constructor. :param port: The SPI port that the gyro is connected to :type port: :class:`.SPI.Port` """ if port is None: port = SPI.Port.kOnboardCS0 simPort = None if hal.HALIsSimulation(): from hal_impl.spi_helpers import ADXRS450_Gyro_Sim simPort = ADXRS450_Gyro_Sim(self) self.spi = SPI(port, simPort=simPort) self.spi.setClockRate(3000000) self.spi.setMSBFirst() self.spi.setSampleDataOnRising() self.spi.setClockActiveHigh() self.spi.setChipSelectActiveLow() # Validate the part ID if (self._readRegister(self.kPIDRegister) & 0xff00) != 0x5200: self.spi.free() self.spi = None DriverStation.reportError( "could not find ADXRS450 gyro on SPI port %s" % port, False) return self.spi.initAccumulator(self.kSamplePeriod, 0x20000000, 4, 0x0c00000e, 0x04000000, 10, 16, True, True) self.calibrate() hal.report(hal.UsageReporting.kResourceType_ADXRS450, port) LiveWindow.addSensor("ADXRS450_Gyro", port, self)