i2c_error.py 1.1 KB

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