@@ -367,12 +367,25 @@ func (d *Device) IsAlarm2Fired() bool {
367367 return d .isAlarmFired (2 )
368368}
369369
370- // SetEnable32K sets the enabled status of the 32KHz output
371- func (d * Device ) SetEnable32K (enable bool ) error {
370+ // SetEnabled32K sets the enabled status of the 32KHz output
371+ func (d * Device ) SetEnabled32K (enable bool ) error {
372+ data := []byte {0 }
373+ err := legacy .ReadRegister (d .bus , uint8 (d .Address ), REG_STATUS , data )
374+ if err != nil {
375+ return err
376+ }
377+
372378 if enable {
373- return d .enable32K ()
379+ data [0 ] |= 1 << EN32KHZ
380+ } else {
381+ data [0 ] &^= 1 << EN32KHZ
374382 }
375- return d .disable32K ()
383+
384+ err = legacy .WriteRegister (d .bus , uint8 (d .Address ), REG_STATUS , data )
385+ if err != nil {
386+ return err
387+ }
388+ return nil
376389}
377390
378391// IsEnabled32K returns true when the 32KHz output is enabled
@@ -449,34 +462,6 @@ func (d *Device) isAlarmFired(alarm_num uint8) bool {
449462 return (data [0 ] & (1 << (alarm_num - 1 ))) != 0x00
450463}
451464
452- func (d * Device ) enable32K () error {
453- data := []byte {0 }
454- err := legacy .ReadRegister (d .bus , uint8 (d .Address ), REG_STATUS , data )
455- if err != nil {
456- return err
457- }
458- data [0 ] |= 1 << EN32KHZ
459- err = legacy .WriteRegister (d .bus , uint8 (d .Address ), REG_STATUS , data )
460- if err != nil {
461- return err
462- }
463- return nil
464- }
465-
466- func (d * Device ) disable32K () error {
467- data := []byte {0 }
468- err := legacy .ReadRegister (d .bus , uint8 (d .Address ), REG_STATUS , data )
469- if err != nil {
470- return err
471- }
472- data [0 ] &^= 1 << EN32KHZ
473- err = legacy .WriteRegister (d .bus , uint8 (d .Address ), REG_STATUS , data )
474- if err != nil {
475- return err
476- }
477- return nil
478- }
479-
480465// milliCelsius converts the raw temperature bytes (msb and lsb) from the DS3231
481466// into a 32-bit signed integer in units of milli Celsius (1/1000 deg C).
482467//
0 commit comments