Commit 84a76ad5 authored by Daniel Friesel's avatar Daniel Friesel
Browse files

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.
parent e90590be
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
timer_cycles ?= 1
loop ?= 1
+39 −66
Original line number Diff line number Diff line
@@ -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);
	}

	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);
	}

	arch.idle_loop();
	while(1) {
		arch.idle();
	}

	return 0;
}