@@ -514,11 +514,17 @@ def accel_range(self) -> int:
514
514
515
515
@accel_range .setter
516
516
def accel_range (self , rng : int = ACCEL_4G ) -> None :
517
+ old_mode = None
518
+ if self .mode != CONFIG_MODE :
519
+ old_mode = self .mode
520
+ self .mode = CONFIG_MODE
517
521
self ._write_register (_PAGE_REGISTER , 0x01 )
518
522
value = self ._read_register (_ACCEL_CONFIG_REGISTER )
519
523
masked_value = 0b11111100 & value
520
524
self ._write_register (_ACCEL_CONFIG_REGISTER , masked_value | rng )
521
525
self ._write_register (_PAGE_REGISTER , 0x00 )
526
+ if old_mode is not None :
527
+ self .mode = old_mode
522
528
523
529
@property
524
530
def accel_bandwidth (self ) -> int :
@@ -534,11 +540,17 @@ def accel_bandwidth(self) -> int:
534
540
def accel_bandwidth (self , bandwidth : int = ACCEL_62_5HZ ) -> None :
535
541
if self .mode in [0x08 , 0x09 , 0x0A , 0x0B , 0x0C ]:
536
542
raise RuntimeError ("Mode must not be a fusion mode" )
543
+ old_mode = None
544
+ if self .mode != CONFIG_MODE :
545
+ old_mode = self .mode
546
+ self .mode = CONFIG_MODE
537
547
self ._write_register (_PAGE_REGISTER , 0x01 )
538
548
value = self ._read_register (_ACCEL_CONFIG_REGISTER )
539
549
masked_value = 0b11100011 & value
540
550
self ._write_register (_ACCEL_CONFIG_REGISTER , masked_value | bandwidth )
541
551
self ._write_register (_PAGE_REGISTER , 0x00 )
552
+ if old_mode is not None :
553
+ self .mode = old_mode
542
554
543
555
@property
544
556
def accel_mode (self ) -> int :
@@ -574,11 +586,17 @@ def gyro_range(self) -> int:
574
586
def gyro_range (self , rng : int = GYRO_2000_DPS ) -> None :
575
587
if self .mode in [0x08 , 0x09 , 0x0A , 0x0B , 0x0C ]:
576
588
raise RuntimeError ("Mode must not be a fusion mode" )
589
+ old_mode = None
590
+ if self .mode != CONFIG_MODE :
591
+ old_mode = self .mode
592
+ self .mode = CONFIG_MODE
577
593
self ._write_register (_PAGE_REGISTER , 0x01 )
578
594
value = self ._read_register (_GYRO_CONFIG_0_REGISTER )
579
595
masked_value = 0b00111000 & value
580
596
self ._write_register (_GYRO_CONFIG_0_REGISTER , masked_value | rng )
581
597
self ._write_register (_PAGE_REGISTER , 0x00 )
598
+ if old_mode is not None :
599
+ self .mode = old_mode
582
600
583
601
@property
584
602
def gyro_bandwidth (self ) -> int :
@@ -594,11 +612,17 @@ def gyro_bandwidth(self) -> int:
594
612
def gyro_bandwidth (self , bandwidth : int = GYRO_32HZ ) -> None :
595
613
if self .mode in [0x08 , 0x09 , 0x0A , 0x0B , 0x0C ]:
596
614
raise RuntimeError ("Mode must not be a fusion mode" )
615
+ old_mode = None
616
+ if self .mode != CONFIG_MODE :
617
+ old_mode = self .mode
618
+ self .mode = CONFIG_MODE
597
619
self ._write_register (_PAGE_REGISTER , 0x01 )
598
620
value = self ._read_register (_GYRO_CONFIG_0_REGISTER )
599
621
masked_value = 0b00000111 & value
600
622
self ._write_register (_GYRO_CONFIG_0_REGISTER , masked_value | bandwidth )
601
623
self ._write_register (_PAGE_REGISTER , 0x00 )
624
+ if old_mode is not None :
625
+ self .mode = old_mode
602
626
603
627
@property
604
628
def gyro_mode (self ) -> int :
0 commit comments