functionality: System
api: HAL:HPL:GCLK
configuration:
- $input: 400000
- $input_id: External Crystal Oscillator 0.4-32MHz (XOSC)
- RESERVED_InputFreq: 400000
- RESERVED_InputFreq_id: External Crystal Oscillator 0.4-32MHz (XOSC)
+ $input: 32768
+ $input_id: 32kHz External Crystal Oscillator (XOSC32K)
+ RESERVED_InputFreq: 32768
+ RESERVED_InputFreq_id: 32kHz External Crystal Oscillator (XOSC32K)
_$freq_output_Generic clock generator 0: 4000000
_$freq_output_Generic clock generator 1: 400000
_$freq_output_Generic clock generator 2: 400000
xosc32k_arch_en32k: true
xosc32k_arch_enable: true
xosc32k_arch_ondemand: true
- xosc32k_arch_runstdby: false
- xosc32k_arch_startup: 62592us
+ xosc32k_arch_runstdby: true
+ xosc32k_arch_startup: 2000092us
xosc32k_arch_swben: false
xosc32k_arch_xtalen: true
optional_signals: []
// <0x6=>8000092us
// <id> xosc32k_arch_startup
#ifndef CONF_XOSC32K_STARTUP
-#define CONF_XOSC32K_STARTUP 0x0
+#define CONF_XOSC32K_STARTUP 0x4
#endif
// <q> On Demand Control
// <i> Indicates whether Run in Standby is enabled or not
// <id> xosc32k_arch_runstdby
#ifndef CONF_XOSC32K_RUNSTDBY
-#define CONF_XOSC32K_RUNSTDBY 0
+#define CONF_XOSC32K_RUNSTDBY 1
#endif
// <q> 1kHz Output Enable
<AcmeProjectActionInfo Action="File" Source="config/hpl_eic_config.h" IsConfig="true" Hash="U9WSM5Hq8sGLa8ysciEfCg" />\r
<AcmeProjectActionInfo Action="File" Source="config/hpl_gclk_config.h" IsConfig="true" Hash="VW757Ebgq5TyYTRcpY8M7w" />\r
<AcmeProjectActionInfo Action="File" Source="config/hpl_mclk_config.h" IsConfig="true" Hash="CLrsNUvv74/qlHdF8aFndg" />\r
- <AcmeProjectActionInfo Action="File" Source="config/hpl_osc32kctrl_config.h" IsConfig="true" Hash="ylDzEsTDHvv+guzMsTa+sg" />\r
+ <AcmeProjectActionInfo Action="File" Source="config/hpl_osc32kctrl_config.h" IsConfig="true" Hash="b7mSwnFOSDceVn9b3TT9kA" />\r
<AcmeProjectActionInfo Action="File" Source="config/hpl_oscctrl_config.h" IsConfig="true" Hash="Vc5u27WzT+UPF5aLAxl2lQ" />\r
<AcmeProjectActionInfo Action="File" Source="config/hpl_port_config.h" IsConfig="true" Hash="rMTNR+5FXtu+wfT1NbfRRA" />\r
<AcmeProjectActionInfo Action="File" Source="config/hpl_rtc_config.h" IsConfig="true" Hash="oTcobT9ydLDOqfpwUidHvg" />\r
</ListValues>\r
</armgcc.linker.libraries.LibrarySearchPaths>\r
<armgcc.linker.optimization.GarbageCollectUnusedSections>True</armgcc.linker.optimization.GarbageCollectUnusedSections>\r
+ <armgcc.linker.memorysettings.ExternalRAM />\r
<armgcc.linker.miscellaneous.LinkerFlags>-Tsaml22j18a_flash.ld</armgcc.linker.miscellaneous.LinkerFlags>\r
<armgcc.assembler.general.IncludePaths>\r
<ListValues>\r
<Compile Include="hri\hri_wdt_l22.h">\r
<SubType>compile</SubType>\r
</Compile>\r
+ <Compile Include="mars_clock.c">\r
+ <SubType>compile</SubType>\r
+ </Compile>\r
+ <Compile Include="mars_clock.h">\r
+ <SubType>compile</SubType>\r
+ </Compile>\r
<Compile Include="main.c">\r
<SubType>compile</SubType>\r
</Compile>\r
void system_init(void)
{
init_mcu();
-
+/*
// GPIO on PA02
// Set pin direction to input
gpio_set_pin_function(D0, GPIO_PIN_FUNCTION_OFF);
- delay_driver_init();
-
-
-/*
ADC_0_init();
EXTERNAL_IRQ_0_init();
I2C_0_init();
+ delay_driver_init();
+
PWM_0_init();
PWM_1_init();
void PWM_1_CLOCK_init(void);
void PWM_1_init(void);
+void EXTERNAL_IRQ_0_init(void);
+
void SEGMENT_LCD_0_init(void);
/**
#include <atmel_start.h>
+#include <hpl_sleep.h>
#include "watch-library/watch.h"
+#include "mars_clock.h"
+
+Watch watch;
+bool local = true;
+
+void calendar_callback(struct calendar_descriptor *const calendar) {
+ struct calendar_date_time date_time;
+ calendar_get_date_time(&CALENDAR_0, &date_time);
+
+ update_display(&watch, date_time, true);
+/*
+ if (date_time.time.min % 2 == 0) {
+ watch_set_led_color(50, 0);
+ } else {
+ watch_set_led_color(0, 50);
+ }
+*/
+}
+
+static void mode_callback() {
+// local = !local;
+ struct calendar_date_time date_time;
+ calendar_get_date_time(&CALENDAR_0, &date_time);
+ update_display(&watch, date_time, local);
+}
int main(void)
{
atmel_start_init();
- Watch watch;
- struct calendar_date_time date_time;
- date_time.date.year = 2021;
- date_time.date.month = 4;
- date_time.date.day = 25;
- date_time.time.hour = 4;
- date_time.time.min = 0;
- date_time.time.sec = 0;
-
watch_init(&watch);
- watch_enable_led(&watch);
+// watch_enable_led(&watch);
+
+ watch_enable_display(&watch);
+ watch_display_pixel(&watch, 1, 16);
+
+ watch_enable_interrupts(&watch);
+ watch_register_interrupt_callback(&watch, BTN_MODE, &mode_callback);
watch_enable_date_time(&watch);
+ struct calendar_date_time date_time;
+ date_time.date.year = 2021;
+ date_time.date.month = 4;
+ date_time.date.day = 30;
+ date_time.time.hour = 9;
+ date_time.time.min = 40;
+ date_time.time.sec = 0;
watch_set_date_time(date_time);
+ struct calendar_alarm alarm;
+ alarm.cal_alarm.mode = REPEAT;
+ alarm.cal_alarm.datetime = date_time;
+ alarm.cal_alarm.datetime.time.sec = 0;
+ alarm.cal_alarm.option = CALENDAR_ALARM_MATCH_SEC;
+ alarm.callback = calendar_callback;
+ update_display(&watch, date_time, local);
+ calendar_set_alarm(&CALENDAR_0, &alarm, &calendar_callback);
- watch_enable_digital_output(A0);
- gpio_set_pin_level(A0, true);
-
- watch_enable_display(&watch);
-/*
- watch_enable_i2c(&watch);
- uint8_t chipID = 0;
- uint8_t ChipIdRegister = 0xD0;
- watch_i2c_send(0x77, &ChipIdRegister, 1);
- watch_i2c_receive(0x77, &chipID, 1);
- if (chipID == 0x60) {
- watch_set_led_green();
- }
-*/
- uint8_t last = date_time.time.sec;
-
while (1) {
- watch_get_date_time(&date_time);
- if (date_time.time.sec != last) {
- last = date_time.time.sec;
- if (last % 2 == 0) {
- watch_set_led_color(50, 0);
- watch_display_string(&watch, "0123456789", 0);
- } else {
- watch_set_led_color(0, 50);
- watch_display_string(&watch, "01", 0);
- watch_display_string(&watch, "23", 2);
- watch_display_string(&watch, "456789", 4);
- }
- }
+ //sleep(4);
}
return 0;
--- /dev/null
+/*\r
+ * mars_clock.c\r
+ *\r
+ * Created: 4/29/2021 11:36:26 PM\r
+ * Author: joeycastillo\r
+ */ \r
+#include <stdio.h>\r
+#include <math.h>\r
+#include "mars_clock.h"\r
+\r
+// note: mars time not working, committing just the earth clock.\r
+\r
+void update_display(Watch *watch, struct calendar_date_time date_time, bool local) {
+ char buf[6];
+ sprintf(&buf[0], "TE %02d%02d", date_time.time.hour, date_time.time.min);
+ watch_display_string(watch, buf, 0);
+}
--- /dev/null
+/*\r
+ * mars_clock.h\r
+ *\r
+ * Created: 4/29/2021 11:35:39 PM\r
+ * Author: joeycastillo\r
+ */ \r
+\r
+\r
+#ifndef MARS_CLOCK_H_\r
+#define MARS_CLOCK_H_\r
+#include "hpl_calendar.h"\r
+#include "watch-library/watch.h"\r
+\r
+void update_display(Watch *watch, struct calendar_date_time date_time, bool local);\r
+\r
+\r
+#endif /* MARS_CLOCK_H_ */
\ No newline at end of file
}
}
\r
+void watch_enable_interrupts(Watch *watch) {
+ EXTERNAL_IRQ_0_init();
+}
+\r
+void watch_register_interrupt_callback(Watch *watch, const uint32_t pin, ext_irq_cb_t callback) {
+ ext_irq_register(pin, callback);
+}
+\r
void watch_enable_led(Watch *watch) {\r
if (watch->led_enabled) return;\r
\r
#define WATCH_H_\r
#include <stdint.h>\r
#include "hpl_calendar.h"\r
+#include "hal_ext_irq.h"\r
\r
typedef struct Watch {\r
bool display_enabled;\r
\r
void watch_enable_analog(Watch *watch, const uint8_t pin);
+void watch_enable_interrupts(Watch *watch);
+void watch_register_interrupt_callback(Watch *watch, const uint32_t pin, ext_irq_cb_t callback);
+
void watch_enable_digital_input(const uint8_t pin);
void watch_enable_digital_output(const uint8_t pin);