public SunxiTimerUnit(Machine machine, SunxiTimer parent) : base(machine, 24000000, direction: Emul8.Time.Direction.Descending, enabled: false, eventEnabled: true) { timerGroup = parent; controlRegister = new DoubleWordRegister(this, 0x04); controlRegister.DefineFlagField(7, changeCallback: (oldValue, newValue) => Mode = newValue ? WorkMode.OneShot : WorkMode.Periodic); controlRegister.DefineValueField(4, 3, changeCallback: (oldValue, newValue) => Divider = 1 << (int)newValue); controlRegister.DefineFlagField(1, FieldMode.WriteOneToClear, writeCallback: (oldValue, newValue) => Value = Limit); controlRegister.DefineFlagField(0, changeCallback: (oldValue, newValue) => Enabled = newValue); controlRegister.DefineEnumField <ClockSource>(2, 2, changeCallback: OnClockSourceChange); }
public SunxiTimerUnit(Machine machine, SunxiTimer parent) : base(machine, 24000000, direction: Emul8.Time.Direction.Descending, enabled: false) { timerGroup = parent; controlRegister = new DoubleWordRegister(this, 0x04); controlRegister.DefineFlagField(7, changeCallback: (oldValue, newValue) => Mode = newValue ? WorkMode.OneShot : WorkMode.Periodic); controlRegister.DefineValueField(4, 3, changeCallback: (oldValue, newValue) => Divider = 1 << (int)newValue); controlRegister.DefineFlagField(1, FieldMode.WriteOneToClear, writeCallback: (oldValue, newValue) => Value = Limit); controlRegister.DefineFlagField(0, changeCallback: (oldValue, newValue) => Enabled = newValue); controlRegister.DefineEnumField<ClockSource>(2, 2, changeCallback: OnClockSourceChange); }