summaryrefslogtreecommitdiff
path: root/nuttx/configs/vsn/src/rtac.c
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-03-28 15:01:43 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-03-28 15:01:43 +0000
commit82fb23b2cc78fade702316d00510efcf9d65954f (patch)
treea997a6f40b080a1e31890359dde9fc466e726221 /nuttx/configs/vsn/src/rtac.c
parentb197eb1609652b2b766bb79caf00b23ef07eed40 (diff)
downloadpx4-nuttx-82fb23b2cc78fade702316d00510efcf9d65954f.tar.gz
px4-nuttx-82fb23b2cc78fade702316d00510efcf9d65954f.tar.bz2
px4-nuttx-82fb23b2cc78fade702316d00510efcf9d65954f.zip
More changes from Uros
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3431 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/configs/vsn/src/rtac.c')
-rw-r--r--nuttx/configs/vsn/src/rtac.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/nuttx/configs/vsn/src/rtac.c b/nuttx/configs/vsn/src/rtac.c
index b953bd851..68b94a169 100644
--- a/nuttx/configs/vsn/src/rtac.c
+++ b/nuttx/configs/vsn/src/rtac.c
@@ -80,3 +80,27 @@ int rtac_waitg(int group, int time)
{
// blocking variant of rtac_exec with timeout if specified
}
+
+
+/** Power optimization of base systick timer
+ *
+ * 1. Simple method to skip wake-ups:
+ * - ask timers about the min. period, which is Ns * systick
+ * - set the preload register with floor(Ns) * DEFAULT_PRELOAD
+ * - on wake-up call routines Ns times.
+ *
+ * 2. If intermediate ISR occuried then:
+ * - check how many periods have passed by reading the counter: Np
+ * - set the new counter value as (counter % DEFAULT_PRELOAD)
+ * - call timer routines Np times; the next call is as usual, starting
+ * at 1. point above
+ *
+ * This is okay if ISR's do not read timers, if they read timers then:
+ * - on ISR wake-up the code described under 2. must be called first
+ * (on wake-up from IDLE)
+ *
+ * BUT: the problem is that SYSTICK does not run in Stop mode but RTC
+ * only, so it might be better to replace SYSTICK with RTAC (this
+ * module) and do the job above, permitting ultra low power modes of
+ * 25 uA or further down to 5 uA.
+ */