public void SetSquareWave(SquareWaveFrequency squareWaveFrequency, SquareWaveDisabledOutputControl outputControl = SquareWaveDisabledOutputControl.Zero) { byte register = (byte)outputControl; register <<= 3; // bit 7 defines the square wave output level when disabled // bit 6 & 5 are unused if (squareWaveFrequency != SquareWaveFrequency.SQW_Off) { register |= 1; } register <<= 4; // bit 4 defines if the oscillator generating the square wave frequency is on or off. // bit 3 & 2 are unused register |= (byte)squareWaveFrequency; // bit 1 & 0 define the frequency of the square wave this._i2cDevice.Write(new byte[] { DS1307_SQUARE_WAVE_CTRL_REGISTER_ADDRESS, register }); }
public void SquareWaveOutput(SquareWaveFrequency freq) { byte registerData; switch (freq) { case SquareWaveFrequency.Wave_1000Hz: registerData = (1 << 4); break; case SquareWaveFrequency.Wave_4096Hz: registerData = (1 << 4) | (1 << 0); break; case SquareWaveFrequency.Wave_8192Hz: registerData = (1 << 4) | (1 << 1); break; case SquareWaveFrequency.Wave_32768Hz: registerData = (1 << 4) | (1 << 0) | (1 << 1); break; case SquareWaveFrequency.Wave_Low: registerData = 0; break; case SquareWaveFrequency.Wave_High: registerData = (1 << 7); break; default: throw new NotSupportedException(); } // control register is at 0x07 _bus.Write(new byte[] { Address, 0x07, registerData }); }