summaryrefslogtreecommitdiffstats
path: root/watch-library/config/hpl_tc_config.h
diff options
context:
space:
mode:
Diffstat (limited to 'watch-library/config/hpl_tc_config.h')
-rw-r--r--watch-library/config/hpl_tc_config.h206
1 files changed, 206 insertions, 0 deletions
diff --git a/watch-library/config/hpl_tc_config.h b/watch-library/config/hpl_tc_config.h
new file mode 100644
index 00000000..61e5b1b6
--- /dev/null
+++ b/watch-library/config/hpl_tc_config.h
@@ -0,0 +1,206 @@
+/* Auto-generated config file hpl_tc_config.h */
+#ifndef HPL_TC_CONFIG_H
+#define HPL_TC_CONFIG_H
+
+// <<< Use Configuration Wizard in Context Menu >>>
+
+#include <peripheral_clk_config.h>
+
+#ifndef CONF_TC3_ENABLE
+#define CONF_TC3_ENABLE 1
+#endif
+
+// <h> Basic settings
+// <o> Prescaler
+// <0=> No division
+// <1=> Divide by 2
+// <2=> Divide by 4
+// <3=> Divide by 8
+// <4=> Divide by 16
+// <5=> Divide by 64
+// <6=> Divide by 256
+// <7=> Divide by 1024
+// <i> This defines the prescaler value
+// <id> tc_prescaler
+#ifndef CONF_TC3_PRESCALER
+#define CONF_TC3_PRESCALER 0
+#endif
+// </h>
+
+// <h> PWM Waveform Output settings
+// <o> Waveform Period Value (uS) <0x00-0xFFFFFFFF>
+// <i> The unit of this value is us.
+// <id> tc_arch_wave_per_val
+#ifndef CONF_TC3_WAVE_PER_VAL
+#define CONF_TC3_WAVE_PER_VAL 0x3e8
+#endif
+
+// <o> Waveform Duty Value (0.1%) <0x00-0x03E8>
+// <i> The unit of this value is 1/1000.
+// <id> tc_arch_wave_duty_val
+#ifndef CONF_TC3_WAVE_DUTY_VAL
+#define CONF_TC3_WAVE_DUTY_VAL 0x1f4
+#endif
+
+/* Caculate pwm ccx register value based on WAVE_PER_VAL and Waveform Duty Value */
+#if CONF_TC3_PRESCALER < TC_CTRLA_PRESCALER_DIV64_Val
+#define CONF_TC3_CC0 \
+ ((uint32_t)(((double)CONF_TC3_WAVE_PER_VAL * CONF_GCLK_TC3_FREQUENCY) / 1000000 / (1 << CONF_TC3_PRESCALER) - 1))
+#define CONF_TC3_CC1 ((CONF_TC3_CC0 * CONF_TC3_WAVE_DUTY_VAL) / 1000)
+
+#elif CONF_TC3_PRESCALER == TC_CTRLA_PRESCALER_DIV64_Val
+#define CONF_TC3_CC0 ((uint32_t)(((double)CONF_TC3_WAVE_PER_VAL * CONF_GCLK_TC3_FREQUENCY) / 64000000 - 1))
+#define CONF_TC3_CC1 ((CONF_TC3_CC0 * CONF_TC3_WAVE_DUTY_VAL) / 1000)
+
+#elif CONF_TC3_PRESCALER == TC_CTRLA_PRESCALER_DIV256_Val
+#define CONF_TC3_CC0 ((uint32_t)(((double)CONF_TC3_WAVE_PER_VAL * CONF_GCLK_TC3_FREQUENCY) / 256000000 - 1))
+#define CONF_TC3_CC1 ((CONF_TC3_CC0 * CONF_TC3_WAVE_DUTY_VAL) / 1000)
+
+#elif CONF_TC3_PRESCALER == TC_CTRLA_PRESCALER_DIV1024_Val
+#define CONF_TC3_CC0 ((uint32_t)(((double)CONF_TC3_WAVE_PER_VAL * CONF_GCLK_TC3_FREQUENCY) / 1024000000 - 1))
+#define CONF_TC3_CC1 ((CONF_TC3_CC0 * CONF_TC3_WAVE_DUTY_VAL) / 1000)
+#endif
+
+// </h>
+
+// <h> Advanced settings
+// <y> Mode
+// <TC_CTRLA_MODE_COUNT16_Val"> Counter in 16-bit mode
+// <TC_CTRLA_MODE_COUNT32_Val"> Counter in 32-bit mode
+// <i> These bits mode
+// <id> tc_mode
+#ifndef CONF_TC3_MODE
+#define CONF_TC3_MODE TC_CTRLA_MODE_COUNT16_Val
+#endif
+
+/* Unused in 16/32 bit PWM mode */
+#ifndef CONF_TC3_PER
+#define CONF_TC3_PER 0x32
+#endif
+
+// <y> Prescaler and Counter Synchronization Selection
+// <TC_CTRLA_PRESCSYNC_GCLK_Val"> Reload or reset counter on next GCLK
+// <TC_CTRLA_PRESCSYNC_PRESC_Val"> Reload or reset counter on next prescaler clock
+// <TC_CTRLA_PRESCSYNC_RESYNC_Val"> Reload or reset counter on next GCLK and reset prescaler counter
+// <i> These bits select if on retrigger event, the Counter should be cleared or reloaded on the next GCLK_TCx clock or on the next prescaled GCLK_TCx clock.
+// <id> tc_arch_presync
+#ifndef CONF_TC3_PRESCSYNC
+#define CONF_TC3_PRESCSYNC TC_CTRLA_PRESCSYNC_GCLK_Val
+#endif
+
+// <q> Run in standby
+// <i> Indicates whether the will continue running in standby sleep mode or not
+// <id> tc_arch_runstdby
+#ifndef CONF_TC3_RUNSTDBY
+#define CONF_TC3_RUNSTDBY 0
+#endif
+
+// <q> On-Demand
+// <i> Indicates whether the TC3's on-demand mode is on or not
+// <id> tc_arch_ondemand
+#ifndef CONF_TC3_ONDEMAND
+#define CONF_TC3_ONDEMAND 0
+#endif
+
+// <o> Auto Lock
+// <0x0=>The Lock Update bit is not affected on overflow/underflow and re-trigger event
+// <0x1=>The Lock Update bit is set on each overflow/underflow or re-trigger event
+// <id> tc_arch_alock
+#ifndef CONF_TC3_ALOCK
+#define CONF_TC3_ALOCK 0
+#endif
+
+/* Commented intentionally. Timer uses fixed value. May be used by other abstractions based on TC. */
+//#define CONF_TC3_CAPTEN0 0
+//#define CONF_TC3_CAPTEN1 0
+//#define CONF_TC3_COPEN0 0
+//#define CONF_TC3_COPEN1 0
+
+/* Commented intentionally. Timer uses fixed value. May be used by other abstractions based on TC. */
+//#define CONF_TC3_DIR 0
+//#define CONF_TC3_ONESHOT 0
+//#define CONF_TC3_LUPD 0
+
+// <q> Debug Running Mode
+// <i> Indicates whether the Debug Running Mode is enabled or not
+// <id> tc_arch_dbgrun
+#ifndef CONF_TC3_DBGRUN
+#define CONF_TC3_DBGRUN 0
+#endif
+
+// <e> Event control
+// <id> timer_event_control
+#ifndef CONF_TC3_EVENT_CONTROL_ENABLE
+#define CONF_TC3_EVENT_CONTROL_ENABLE 0
+#endif
+
+// <q> Output Event On Match or Capture on Channel 0
+// <i> Enable output of event on timer tick
+// <id> tc_arch_mceo0
+#ifndef CONF_TC3_MCEO0
+#define CONF_TC3_MCEO0 0
+#endif
+
+// <q> Output Event On Match or Capture on Channel 1
+// <i> Enable output of event on timer tick
+// <id> tc_arch_mceo1
+#ifndef CONF_TC3_MCEO1
+#define CONF_TC3_MCEO1 0
+#endif
+
+// <q> Output Event On Timer Tick
+// <i> Enable output of event on timer tick
+// <id> tc_arch_ovfeo
+#ifndef CONF_TC3_OVFEO
+#define CONF_TC3_OVFEO 0
+#endif
+
+// <q> Event Input
+// <i> Enable asynchronous input events
+// <id> tc_arch_tcei
+#ifndef CONF_TC3_TCEI
+#define CONF_TC3_TCEI 0
+#endif
+
+// <q> Inverted Event Input
+// <i> Invert the asynchronous input events
+// <id> tc_arch_tcinv
+#ifndef CONF_TC3_TCINV
+#define CONF_TC3_TCINV 0
+#endif
+
+// <o> Event action
+// <0=> Event action disabled
+// <1=> Start, restart or re-trigger TC on event
+// <2=> Count on event
+// <3=> Start on event
+// <4=> Time stamp capture
+// <5=> Period captured in CC0, pulse width in CC1
+// <6=> Period captured in CC1, pulse width in CC0
+// <7=> Pulse width capture
+// <i> Event which will be performed on an event
+//<id> tc_arch_evact
+#ifndef CONF_TC3_EVACT
+#define CONF_TC3_EVACT 0
+#endif
+// </e>
+
+/* Commented intentionally. Timer uses fixed value. May be used by other abstractions based on TC. */
+//#define CONF_TC3_WAVEGEN TC_CTRLA_WAVEGEN_MFRQ_Val
+
+/* Commented intentionally. Timer uses fixed value. May be used by other abstractions based on TC. */
+//#define CONF_TC3_INVEN0 0
+//#define CONF_TC3_INVEN1 0
+
+/* Commented intentionally. Timer uses fixed value. May be used by other abstractions based on TC. */
+//#define CONF_TC3_PERBUF 0
+
+/* Commented intentionally. Timer uses fixed value. May be used by other abstractions based on TC. */
+//#define CONF_TC3_CCBUF0 0
+//#define CONF_TC3_CCBUF1 0
+
+// </h>
+
+// <<< end of configuration section >>>
+
+#endif // HPL_TC_CONFIG_H