{"1":{"$type": "710-PERIPHERIAL-PRODUCT","object-identifier":"17","object-name":"MCP23008","product-id":"-1","description":"8-Bit I/O Expander with Serial Interface. High-speed I2C interface. Datasheet at http://ww1.microchip.com/downloads/en/DeviceDoc/21919e.pdf","bustype-identifier":"2","vendor-identifier":"10","version":"","vendor-name":"Microchip","vendor-id":"0","properties":{"2":{"$type": "710-PERIPHERIAL-PRODUCT-PROPERTY","object-identifier":"294","object-name":"DEFVAL","product-property-id":"3","datatype-identifier":"2","product-identifier":"17","description":"DEFAULT COMPARE (DEFVAL) REGISTER FOR INTERRUPT-ONCHANGE. The default comparison value is configured in the. DEFVAL register. If enabled (via GPINTEN and INTCON) to compare against the DEFVAL register, an opposite value on the associated pin will cause an interrupt to occur.","rw":"3","buffer-size":"1","bit-offset":"0","bit-count":"-1","msb-first":"1","swap-bytes-in-word":"0","scale-scale":"1","scale-offset":"0","timeout-reads":"-1","timeout-writes":"-1","max-poll-rates":"-1"},"3":{"$type": "710-PERIPHERIAL-PRODUCT-PROPERTY","object-identifier":"295","object-name":"GPINTEN","product-property-id":"2","datatype-identifier":"2","product-identifier":"17","description":"INTERRUPT-ON-CHANGE CONTROL (GPINTEN) REGISTER. The GPINTEN register controls the interrupt-onchange feature for each pin. If a bit is set, the corresponding pin is enabled for interrupt-on-change. The DEFVAL and INTCON registers must also be configured if any pins are enabled for interrupt-on-change.","rw":"3","buffer-size":"1","bit-offset":"0","bit-count":"-1","msb-first":"1","swap-bytes-in-word":"0","scale-scale":"1","scale-offset":"0","timeout-reads":"-1","timeout-writes":"-1","max-poll-rates":"-1"},"4":{"$type": "710-PERIPHERIAL-PRODUCT-PROPERTY","object-identifier":"288","object-name":"GPIO","product-property-id":"9","datatype-identifier":"2","product-identifier":"17","description":"PORT (GPIO) REGISTER The GPIO register reflects the value on the port. Reading from this register reads the port. Writing to this register modifies the Output Latch (OLAT) register.","rw":"3","buffer-size":"1","bit-offset":"0","bit-count":"-1","msb-first":"1","swap-bytes-in-word":"0","scale-scale":"1","scale-offset":"0","timeout-reads":"-1","timeout-writes":"-1","max-poll-rates":"-1"},"5":{"$type": "710-PERIPHERIAL-PRODUCT-PROPERTY","object-identifier":"291","object-name":"GPPU","product-property-id":"6","datatype-identifier":"2","product-identifier":"17","description":"PULL-UP RESISTOR CONFIGURATION (GPPU) REGISTER. The GPPU register controls the pull-up resistors for the port pins. If a bit is set and the corresponding pin is configured as an input, the corresponding port pin is internally pulled up with a 100 kO resistor","rw":"3","buffer-size":"1","bit-offset":"0","bit-count":"-1","msb-first":"1","swap-bytes-in-word":"0","scale-scale":"1","scale-offset":"0","timeout-reads":"-1","timeout-writes":"-1","max-poll-rates":"-1"},"6":{"$type": "710-PERIPHERIAL-PRODUCT-PROPERTY","object-identifier":"289","object-name":"INTCAP","product-property-id":"8","datatype-identifier":"2","product-identifier":"17","description":"INTERRUPT CAPTURE (INTCAP) REGISTER. The INTCAP register captures the GPIO port value at the time the interrupt occurred. The register is readonly and is updated only when an interrupt occurs. The register will remain unchanged until the interrupt is cleared via a read of INTCAP or GPIO.","rw":"1","buffer-size":"1","bit-offset":"0","bit-count":"-1","msb-first":"1","swap-bytes-in-word":"0","scale-scale":"1","scale-offset":"0","timeout-reads":"-1","timeout-writes":"-1","max-poll-rates":"-1"},"7":{"$type": "710-PERIPHERIAL-PRODUCT-PROPERTY","object-identifier":"293","object-name":"INTCON","product-property-id":"4","datatype-identifier":"2","product-identifier":"17","description":"INTERRUPT CONTROL (INTCON) REGISTER. The INTCON register controls how the associated pin value is compared for the interrupt-on-change feature. If a bit is set, the corresponding I/O pin is compared against the associated bit in the DEFVAL register. If a bit value is clear, the corresponding I/O pin is comparedagainst the previous value.","rw":"3","buffer-size":"1","bit-offset":"0","bit-count":"-1","msb-first":"1","swap-bytes-in-word":"0","scale-scale":"1","scale-offset":"0","timeout-reads":"-1","timeout-writes":"-1","max-poll-rates":"-1"},"8":{"$type": "710-PERIPHERIAL-PRODUCT-PROPERTY","object-identifier":"290","object-name":"INTF","product-property-id":"7","datatype-identifier":"2","product-identifier":"17","description":"INTERRUPT FLAG (INTF) REGISTER The INTF register reflects the interrupt condition on the port pins of any pin that is enabled for interrupts via the GPINTEN register. A ‘set’ bit indicates that the associated pin caused the interrupt. This register is ‘read-only’. Writes to this register will be ignored.","rw":"1","buffer-size":"1","bit-offset":"0","bit-count":"-1","msb-first":"1","swap-bytes-in-word":"0","scale-scale":"1","scale-offset":"0","timeout-reads":"-1","timeout-writes":"-1","max-poll-rates":"-1"},"9":{"$type": "710-PERIPHERIAL-PRODUCT-PROPERTY","object-identifier":"292","object-name":"IOCON","product-property-id":"5","datatype-identifier":"2","product-identifier":"17","description":"CONFIGURATION (IOCON) REGISTER. The IOCON register contains several bits for configuring the device. Refer to sectoin 1.6.6 in http://ww1.microchip.com/downloads/en/DeviceDoc/21919e.pdf for details.","rw":"3","buffer-size":"1","bit-offset":"0","bit-count":"-1","msb-first":"1","swap-bytes-in-word":"0","scale-scale":"1","scale-offset":"0","timeout-reads":"-1","timeout-writes":"-1","max-poll-rates":"-1"},"10":{"$type": "710-PERIPHERIAL-PRODUCT-PROPERTY","object-identifier":"286","object-name":"IODIR","product-property-id":"0","datatype-identifier":"2","product-identifier":"17","description":" I/O DIRECTION (IODIR) REGISTER. Controls the direction of the data I/O. When a bit is set, the corresponding pin becomes an input. When a bit is clear, the corresponding pin becomes an output.","rw":"3","buffer-size":"1","bit-offset":"0","bit-count":"-1","msb-first":"1","swap-bytes-in-word":"0","scale-scale":"1","scale-offset":"0","timeout-reads":"-1","timeout-writes":"-1","max-poll-rates":"-1"},"11":{"$type": "710-PERIPHERIAL-PRODUCT-PROPERTY","object-identifier":"296","object-name":"IPOL","product-property-id":"1","datatype-identifier":"2","product-identifier":"17","description":"INPUT POLARITY (IPOL) REGISTER. The IPOL register allows the user to configure the polarity on the corresponding GPIO port bits. If a bit is set, the corresponding GPIO register bit will reflect the inverted value on the pin.","rw":"3","buffer-size":"1","bit-offset":"0","bit-count":"-1","msb-first":"1","swap-bytes-in-word":"0","scale-scale":"1","scale-offset":"0","timeout-reads":"-1","timeout-writes":"-1","max-poll-rates":"-1"},"12":{"$type": "710-PERIPHERIAL-PRODUCT-PROPERTY","object-identifier":"287","object-name":"OLAT","product-property-id":"10","datatype-identifier":"2","product-identifier":"17","description":"OUTPUT LATCH REGISTER (OLAT) The OLAT register provides access to the output latches. A read from this register results in a read of the OLAT and not the port itself. A write to this register modifies the output latches that modify the pins configured as outputs.","rw":"3","buffer-size":"1","bit-offset":"0","bit-count":"-1","msb-first":"1","swap-bytes-in-word":"0","scale-scale":"1","scale-offset":"0","timeout-reads":"-1","timeout-writes":"-1","max-poll-rates":"-1"}}}}