summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoey Castillo <jose.castillo@gmail.com>2021-05-09 12:19:40 -0400
committerJoey Castillo <jose.castillo@gmail.com>2021-05-09 12:19:40 -0400
commit7e9ef16a18ce8dfcb9f2950eb2fb327886d33480 (patch)
tree513556649b3058f5176b82599919ea0ea42e06b9
parent7ff91a2f678a5eb1f6b985a257a8e59bde6a973f (diff)
downloadSensor-Watch-7e9ef16a18ce8dfcb9f2950eb2fb327886d33480.tar.gz
Sensor-Watch-7e9ef16a18ce8dfcb9f2950eb2fb327886d33480.tar.bz2
Sensor-Watch-7e9ef16a18ce8dfcb9f2950eb2fb327886d33480.zip
More low power work
-rw-r--r--Smol Watch Project/My Project/.atmelstart/atmel_start_config.atstart14
-rw-r--r--Smol Watch Project/My Project/Config/hpl_mclk_config.h2
-rw-r--r--Smol Watch Project/My Project/My Project.cproj3
-rw-r--r--Smol Watch Project/My Project/main.c51
-rw-r--r--Smol Watch Project/My Project/watch-library/watch.c4
5 files changed, 33 insertions, 41 deletions
diff --git a/Smol Watch Project/My Project/.atmelstart/atmel_start_config.atstart b/Smol Watch Project/My Project/.atmelstart/atmel_start_config.atstart
index 741d4079..1bcb6bc8 100644
--- a/Smol Watch Project/My Project/.atmelstart/atmel_start_config.atstart
+++ b/Smol Watch Project/My Project/.atmelstart/atmel_start_config.atstart
@@ -517,10 +517,10 @@ drivers:
functionality: System
api: HAL:HPL:GCLK
configuration:
- $input: 32768
- $input_id: 32kHz External Crystal Oscillator (XOSC32K)
- RESERVED_InputFreq: 32768
- RESERVED_InputFreq_id: 32kHz External Crystal Oscillator (XOSC32K)
+ $input: 400000
+ $input_id: External Crystal Oscillator 0.4-32MHz (XOSC)
+ RESERVED_InputFreq: 400000
+ RESERVED_InputFreq_id: External Crystal Oscillator 0.4-32MHz (XOSC)
_$freq_output_Generic clock generator 0: 4000000
_$freq_output_Generic clock generator 1: 400000
_$freq_output_Generic clock generator 2: 400000
@@ -594,7 +594,7 @@ drivers:
cpu_clock_source: Generic clock generator 0
cpu_div: '1'
enable_cpu_clock: true
- mclk_arch_bupdiv: Divide by 8
+ mclk_arch_bupdiv: Divide by 1
nvm_wait_states: '0'
optional_signals: []
variant: null
@@ -646,9 +646,9 @@ drivers:
functionality: System
api: HAL:HPL:OSCCTRL
configuration:
- $input: 32768
+ $input: 16000000
$input_id: 32kHz External Crystal Oscillator (XOSC32K)
- RESERVED_InputFreq: 32768
+ RESERVED_InputFreq: 16000000
RESERVED_InputFreq_id: 32kHz External Crystal Oscillator (XOSC32K)
_$freq_output_16MHz Internal Oscillator (OSC16M): 4000000
_$freq_output_Digital Frequency Locked Loop (DFLL48M): 48000000
diff --git a/Smol Watch Project/My Project/Config/hpl_mclk_config.h b/Smol Watch Project/My Project/Config/hpl_mclk_config.h
index be1cd54d..3358edcf 100644
--- a/Smol Watch Project/My Project/Config/hpl_mclk_config.h
+++ b/Smol Watch Project/My Project/Config/hpl_mclk_config.h
@@ -48,7 +48,7 @@
// <MCLK_BUPDIV_BUPDIV_DIV128_Val"> Divide by 128
// <id> mclk_arch_bupdiv
#ifndef CONF_MCLK_BUPDIV
-#define CONF_MCLK_BUPDIV MCLK_BUPDIV_BUPDIV_DIV8_Val
+#define CONF_MCLK_BUPDIV MCLK_BUPDIV_BUPDIV_DIV1_Val
#endif
// </h>
diff --git a/Smol Watch Project/My Project/My Project.cproj b/Smol Watch Project/My Project/My Project.cproj
index af621b7b..65dcb05a 100644
--- a/Smol Watch Project/My Project/My Project.cproj
+++ b/Smol Watch Project/My Project/My Project.cproj
@@ -196,7 +196,7 @@
<AcmeProjectActionInfo Action="File" Source="config/hpl_dmac_config.h" IsConfig="true" Hash="w3WBXNAk4X2Eyml3c7tQSQ" />
<AcmeProjectActionInfo Action="File" Source="config/hpl_eic_config.h" IsConfig="true" Hash="U9WSM5Hq8sGLa8ysciEfCg" />
<AcmeProjectActionInfo Action="File" Source="config/hpl_gclk_config.h" IsConfig="true" Hash="VW757Ebgq5TyYTRcpY8M7w" />
- <AcmeProjectActionInfo Action="File" Source="config/hpl_mclk_config.h" IsConfig="true" Hash="CLrsNUvv74/qlHdF8aFndg" />
+ <AcmeProjectActionInfo Action="File" Source="config/hpl_mclk_config.h" IsConfig="true" Hash="mlJgZO8dVVh4sN9KaO7rkA" />
<AcmeProjectActionInfo Action="File" Source="config/hpl_osc32kctrl_config.h" IsConfig="true" Hash="LayjFcrIUjhOQ+E6G5sHRA" />
<AcmeProjectActionInfo Action="File" Source="config/hpl_oscctrl_config.h" IsConfig="true" Hash="Vc5u27WzT+UPF5aLAxl2lQ" />
<AcmeProjectActionInfo Action="File" Source="config/hpl_port_config.h" IsConfig="true" Hash="rMTNR+5FXtu+wfT1NbfRRA" />
@@ -409,6 +409,7 @@
<Value>%24(PackRepoDir)\atmel\SAML22_DFP\1.2.77\include</Value>
</ListValues>
</armgcc.compiler.directories.IncludePaths>
+ <armgcc.compiler.optimization.level>Optimize debugging experience (-Og)</armgcc.compiler.optimization.level>
<armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>True</armgcc.compiler.optimization.PrepareFunctionsForGarbageCollection>
<armgcc.compiler.optimization.DebugLevel>Maximum (-g3)</armgcc.compiler.optimization.DebugLevel>
<armgcc.compiler.warnings.AllWarnings>True</armgcc.compiler.warnings.AllWarnings>
diff --git a/Smol Watch Project/My Project/main.c b/Smol Watch Project/My Project/main.c
index b803fb6d..053840a2 100644
--- a/Smol Watch Project/My Project/main.c
+++ b/Smol Watch Project/My Project/main.c
@@ -11,9 +11,6 @@ void calendar_callback(struct calendar_descriptor *const calendar) {
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);
}
static void light_callback() {
@@ -21,7 +18,6 @@ static void light_callback() {
calendar_get_date_time(&CALENDAR_0, &date_time);
date_time.time.min = (date_time.time.min + 1) % 60;
watch_set_date_time(date_time);
- update_display(&watch, date_time, local);
}
static void alarm_callback() {
@@ -29,19 +25,29 @@ static void alarm_callback() {
calendar_get_date_time(&CALENDAR_0, &date_time);
date_time.time.sec = 0;
watch_set_date_time(date_time);
- update_display(&watch, date_time, local);
}
static void tick_callback() {
- 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_init(&watch);
+
+ watch_enable_date_time(&watch);
+ struct calendar_date_time date_time;
+ date_time.date.year = 2021;
+ date_time.date.month = 5;
+ date_time.date.day = 8;
+ date_time.time.hour = 19;
+ date_time.time.min = 40;
+ date_time.time.sec = 0;
+ watch_set_date_time(date_time);
+ update_display(&watch, date_time, local);
+ watch_enable_tick(tick_callback);
+
gpio_set_pin_level(RED, false);
gpio_set_pin_direction(RED, GPIO_DIRECTION_OUT);
gpio_set_pin_function(RED, GPIO_PIN_FUNCTION_OFF);
@@ -49,38 +55,19 @@ int main(void)
gpio_set_pin_direction(GREEN, GPIO_DIRECTION_OUT);
gpio_set_pin_function(GREEN, GPIO_PIN_FUNCTION_OFF);
- watch_init(&watch);
-
- watch_enable_display(&watch);
- watch_display_pixel(&watch, 1, 16);
-
watch_enable_buttons(&watch);
watch_register_button_callback(&watch, BTN_MODE, &mode_callback);
watch_register_button_callback(&watch, BTN_ALARM, &alarm_callback);
watch_register_button_callback(&watch, BTN_LIGHT, &light_callback);
- watch_enable_date_time(&watch);
- struct calendar_date_time date_time;
- date_time.date.year = 2021;
- date_time.date.month = 5;
- date_time.date.day = 6;
- date_time.time.hour = 23;
- date_time.time.min = 30;
- 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;
- calendar_set_alarm(&CALENDAR_0, &alarm, &calendar_callback);
-*/
- update_display(&watch, date_time, local);
- watch_enable_tick(tick_callback);
+ watch_enable_display(&watch);
+ watch_display_pixel(&watch, 1, 16);
while (1) {
sleep(4);
+ struct calendar_date_time date_time;
+ calendar_get_date_time(&CALENDAR_0, &date_time);
+ update_display(&watch, date_time, local);
}
return 0;
diff --git a/Smol Watch Project/My Project/watch-library/watch.c b/Smol Watch Project/My Project/watch-library/watch.c
index cb12b28d..121f15c7 100644
--- a/Smol Watch Project/My Project/watch-library/watch.c
+++ b/Smol Watch Project/My Project/watch-library/watch.c
@@ -12,8 +12,12 @@
void watch_init(Watch *watch) {
memset(watch, 0, sizeof(*watch));
+ // use switching regulator
SUPC->VREG.bit.SEL = 1;
while(!SUPC->STATUS.bit.VREGRDY);
+ // TODO: use performance level 0
+// _set_performance_level(0);
+// hri_pm_write_PLCFG_PLDIS_bit(PM, true);
}
const uint8_t Character_Set[] =