1# test I2C errors, with polling (disabled irqs) and DMA 2 3import pyb 4from pyb import I2C 5 6if not hasattr(pyb, "Accel"): 7 print("SKIP") 8 raise SystemExit 9 10# init accelerometer 11pyb.Accel() 12 13# get I2C bus 14i2c = I2C(1, I2C.MASTER, dma=True) 15 16# test polling mem_read 17pyb.disable_irq() 18i2c.mem_read(1, 76, 0x0A) # should succeed 19pyb.enable_irq() 20try: 21 pyb.disable_irq() 22 i2c.mem_read(1, 77, 0x0A) # should fail 23except OSError as e: 24 pyb.enable_irq() 25 print(repr(e)) 26i2c.mem_read(1, 76, 0x0A) # should succeed 27 28# test polling mem_write 29pyb.disable_irq() 30i2c.mem_write(1, 76, 0x0A) # should succeed 31pyb.enable_irq() 32try: 33 pyb.disable_irq() 34 i2c.mem_write(1, 77, 0x0A) # should fail 35except OSError as e: 36 pyb.enable_irq() 37 print(repr(e)) 38i2c.mem_write(1, 76, 0x0A) # should succeed 39 40# test DMA mem_read 41i2c.mem_read(1, 76, 0x0A) # should succeed 42try: 43 i2c.mem_read(1, 77, 0x0A) # should fail 44except OSError as e: 45 print(repr(e)) 46i2c.mem_read(1, 76, 0x0A) # should succeed 47 48# test DMA mem_write 49i2c.mem_write(1, 76, 0x0A) # should succeed 50try: 51 i2c.mem_write(1, 77, 0x0A) # should fail 52except OSError as e: 53 print(repr(e)) 54i2c.mem_write(1, 76, 0x0A) # should succeed 55