2
3
4
5
6
7
12#include "../types/evmu_peripheral.h"
16
17
18
19#define EVMU_CLOCK_TYPE (GBL_TYPEID
(EvmuClock))
20#define EVMU_CLOCK(self) (GBL_CAST
(EvmuClock, self))
21#define EVMU_CLOCK_CLASS(klass) (GBL_CLASS_CAST
(EvmuClock, klass))
22#define EVMU_CLOCK_GET_CLASS(self) (GBL_CLASSOF
(EvmuClock, self))
25#define EVMU_CLOCK_NAME "clock"
27#define EVMU_CLOCK_OSC_QUARTZ_FREQ 32768
28#define EVMU_CLOCK_OSC_RC_FREQ 879236
29#define EVMU_CLOCK_OSC_CF_FREQ 6000000
31#define EVMU_CLOCK_OSC_QUARTZ_TCYC_1_12 366210
32#define EVMU_CLOCK_OSC_QUARTZ_TCYC_1_6 183105
34#define EVMU_CLOCK_OSC_RC_TCYC_1_12 13648
35#define EVMU_CLOCK_OSC_RC_TCYC_1_6 6824
37#define EVMU_CLOCK_OSC_CF_TCYC_1_12 2000
38#define EVMU_CLOCK_OSC_CF_TCYC_1_6 1000
40#define EVMU_CLOCK_OSC_QUARTZ_CURRENT 2600
41#define EVMU_CLOCK_OSC_RC_CURRENT 610
43#define GBL_SELF_TYPE EvmuClock
47GBL_DECLARE_ENUM(EVMU_OSCILLATOR) {
48 EVMU_OSCILLATOR_QUARTZ,
54GBL_DECLARE_ENUM(EVMU_CLOCK_SIGNAL) {
58 EVMU_CLOCK_SIGNAL_CYCLE,
59 EVMU_CLOCK_SIGNAL_SYSTEM_1 = EVMU_CLOCK_SIGNAL_CYCLE,
60 EVMU_CLOCK_SIGNAL_SYSTEM_2,
61 EVMU_CLOCK_SIGNAL_COUNT
64GBL_DECLARE_ENUM(EVMU_CLOCK_SYSTEM_STATE) {
65 EVMU_CLOCK_SYSTEM_STATE_UNKNOWN,
66 EVMU_CLOCK_SYSTEM_STATE_RUNNING,
67 EVMU_CLOCK_SYSTEM_STATE_HALT,
68 EVMU_CLOCK_SYSTEM_STATE_HOLD,
69 EVMU_CLOCK_SYSTEM_STATE_COUNT
72GBL_DECLARE_ENUM(EVMU_CLOCK_DIVIDER) {
74 EVMU_CLOCK_DIVIDER_12,
76 EVMU_CLOCK_DIVIDER_COUNT
85 unsigned currentMicroAmps;
96
97
98
99
100
101GBL_CLASS_DERIVE_EMPTY (EvmuClock, EvmuPeripheral)
104
105
106
107
108
109
112GBL_PROPERTIES(EvmuClock,
113 (quartzState, GBL_GENERIC, (READ), GBL_ENUM_TYPE),
114 (quartzStable, GBL_GENERIC, (READ), GBL_BOOL_TYPE),
115 (rcState, GBL_GENERIC, (READ), GBL_ENUM_TYPE),
116 (rcStable, GBL_GENERIC, (READ), GBL_BOOL_TYPE),
117 (cfState, GBL_GENERIC, (READ), GBL_ENUM_TYPE),
118 (cfStable, GBL_GENERIC, (READ), GBL_BOOL_TYPE),
119 (cycleState, GBL_GENERIC, (READ, WRITE, LOAD, SAVE), GBL_ENUM_TYPE),
120 (cycleOscillator, GBL_GENERIC, (READ, WRITE, LOAD, SAVE), GBL_ENUM_TYPE),
121 (cycleFrequency, GBL_GENERIC, (READ), GBL_UINT32_TYPE),
122 (system2State, GBL_GENERIC, (READ, WRITE, LOAD, SAVE), GBL_ENUM_TYPE),
123 (system2Oscillator, GBL_GENERIC, (READ, WRITE, LOAD, SAVE), GBL_ENUM_TYPE),
124 (system2Frequency, GBL_GENERIC, (READ), GBL_UINT32_TYPE)
127EVMU_EXPORT GblType EvmuClock_type (
void) GBL_NOEXCEPT;
129EVMU_EXPORT EVMU_RESULT EvmuClock_oscillatorSpecs (GBL_CSELF, EVMU_OSCILLATOR oscillator, EvmuOscillatorSpecs* pSpecs) GBL_NOEXCEPT;
130EVMU_EXPORT GblBool EvmuClock_oscillatorActive (GBL_CSELF, EVMU_OSCILLATOR oscillator) GBL_NOEXCEPT;
131EVMU_EXPORT EVMU_RESULT EvmuClock_setOscillatorActive (GBL_CSELF, EVMU_OSCILLATOR oscillator, GblBool active) GBL_NOEXCEPT;
134 EvmuClock_systemState (GBL_CSELF) GBL_NOEXCEPT;
135EVMU_EXPORT EVMU_RESULT EvmuClock_setSystemState (GBL_CSELF, EVMU_CLOCK_SYSTEM_STATE state) GBL_NOEXCEPT;
136EVMU_EXPORT EVMU_RESULT EvmuClock_systemConfig (GBL_CSELF, EVMU_OSCILLATOR* pSource, EVMU_CLOCK_DIVIDER* pDivider) GBL_NOEXCEPT;
137EVMU_EXPORT EVMU_RESULT EvmuClock_setSystemConfig (GBL_CSELF, EVMU_OSCILLATOR source, EVMU_CLOCK_DIVIDER divider) GBL_NOEXCEPT;
139EVMU_EXPORT EVMU_RESULT EvmuClock_signalStats (GBL_CSELF, EVMU_CLOCK_SIGNAL signal, EvmuClockStats* pStatus) GBL_NOEXCEPT;
140EVMU_EXPORT EvmuWave EvmuClock_signalWave (GBL_CSELF, EVMU_CLOCK_SIGNAL signal) GBL_NOEXCEPT;
144EVMU_EXPORT uint64_t EvmuClock_systemCyclesPerSec (GBL_CSELF) GBL_NOEXCEPT;
145EVMU_EXPORT double EvmuClock_systemSecsPerCycle (GBL_CSELF) GBL_NOEXCEPT;
#define EVMU_EXPORT
Define used for adding attributes to export public symbols.
uint64_t EvmuTicks
Represents a delta time in milliseconds.
uint64_t EvmuCycles
Represent a delta time in cycles.
API for oscillators, clock sources, and timing.
Contains information on the current satte of a particular clock.
Contains technical specifications for a particular oscillator.