summaryrefslogtreecommitdiff
path: root/src/app/energybench
diff options
context:
space:
mode:
authorDaniel Friesel <daniel.friesel@uos.de>2019-11-04 15:20:50 +0100
committerDaniel Friesel <daniel.friesel@uos.de>2019-11-04 15:36:00 +0100
commit84a76ad5b9f91aa3d5df2d4f4480914bb7157099 (patch)
treee7eae74e9ad5ede7ef0fbe90c1ab4de9c9af87b5 /src/app/energybench
parente90590be17d3c5fe02f8b5d16edc987e81ca0730 (diff)
update energybench. showcase for MSP430 EnergyTrace inaccuracias
reported current is inaccurate (>8% energy deviation). Also, EnergyTrace++ significantly increases sleep/wakeup times and thus affects the sytem's timing.
Diffstat (limited to 'src/app/energybench')
-rw-r--r--src/app/energybench/Makefile.inc2
-rw-r--r--src/app/energybench/main.cc105
2 files changed, 39 insertions, 68 deletions
diff --git a/src/app/energybench/Makefile.inc b/src/app/energybench/Makefile.inc
index d7dcd37..e69de29 100644
--- a/src/app/energybench/Makefile.inc
+++ b/src/app/energybench/Makefile.inc
@@ -1,2 +0,0 @@
-timer_cycles ?= 1
-loop ?= 1
diff --git a/src/app/energybench/main.cc b/src/app/energybench/main.cc
index 59a775e..27371b8 100644
--- a/src/app/energybench/main.cc
+++ b/src/app/energybench/main.cc
@@ -3,79 +3,52 @@
#include "driver/stdout.h"
#include "driver/uptime.h"
-#ifndef TIMER_CYCLES
-#error makeflag timer_cycles=1 required
-#endif
-
-void loop(void)
-{
-#if 0
- static unsigned char i = 0;
-
- switch (i) {
- case 0:
- gpio.led_on(0);
- gpio.led_off(0);
- break;
- case 1:
- gpio.led_on(0);
- arch.delay_us(1);
- gpio.led_off(0);
- break;
- case 2:
- gpio.led_on(0);
- arch.delay_us(2);
- gpio.led_off(0);
- break;
- case 3:
- gpio.led_on(1);
- gpio.led_off(1);
- break;
- case 4:
- gpio.led_on(1);
- arch.delay_us(1);
- gpio.led_off(1);
- break;
- case 5:
- gpio.led_on(1);
- arch.delay_us(2);
- gpio.led_off(1);
- break;
- case 6:
- gpio.led_on(0);
- break;
- case 7:
- gpio.led_off(0);
- break;
- case 8:
- gpio.led_on(1);
- break;
- case 9:
- gpio.led_off(1);
- break;
- default:
- break;
- }
-
-
- i = (i+1) % 10;
-#endif
-}
-
int main(void)
{
arch.setup();
gpio.setup();
kout.setup();
- kout << "Hello, World!" << endl;
- kout << "Test, World!" << endl;
- kout << dec << uptime.get_cycles() << endl;
- kout << dec << uptime.get_cycles() << endl;
- kout << dec << uptime.get_cycles() << endl;
- kout << dec << uptime.get_cycles() << endl;
+ gpio.output(GPIO::p1_1);
+
+ arch.delay_ms(5000);
+
+ gpio.write(GPIO::p1_1, 1);
+ __delay_cycles(64000); // 8 ms
+ __delay_cycles(64000); // 8 ms
+ gpio.write(GPIO::p1_1, 0);
+ __delay_cycles(64000); // 8 ms
+ __delay_cycles(64000); // 8 ms
+ gpio.write(GPIO::p1_1, 1);
+ __delay_cycles(64000); // 8 ms
+ __delay_cycles(64000); // 8 ms
+ gpio.write(GPIO::p1_1, 0);
+
+ for (uint8_t i = 0; i < 200; i++) {
+ arch.sleep_ms(50);
+ gpio.write(GPIO::p1_1, 1);
+ arch.sleep_ms(i);
+ gpio.write(GPIO::p1_1, 0);
+ arch.sleep_ms(i);
+ gpio.write(GPIO::p1_1, 1);
+ arch.sleep_ms(i);
+ gpio.write(GPIO::p1_1, 0);
+ }
- arch.idle_loop();
+ for (uint8_t i = 0; i < 200; i++) {
+ arch.delay_ms(50);
+ gpio.write(GPIO::p1_1, 1);
+ arch.delay_ms(i);
+ gpio.write(GPIO::p1_1, 0);
+ arch.delay_ms(i);
+ gpio.write(GPIO::p1_1, 1);
+ arch.delay_ms(i);
+ gpio.write(GPIO::p1_1, 0);
+ }
+
+ while(1) {
+ arch.idle();
+ }
return 0;
}