Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)