2014 Eurobot fork

Dependencies:   mbed-rtos mbed QEI

Committer:
madcowswe
Date:
Wed Apr 10 04:20:40 2013 +0000
Revision:
28:4e20b44251c6
Child:
42:6504d85d85b4
Idle CPU measure implemented, not tested

Who changed what in which revision?

UserRevisionLine numberNew contents of line
madcowswe 28:4e20b44251c6 1
madcowswe 28:4e20b44251c6 2 #include "rtos.h"
madcowswe 28:4e20b44251c6 3 #include "mbed.h"
madcowswe 28:4e20b44251c6 4 #include "Printing.h"
madcowswe 28:4e20b44251c6 5
madcowswe 28:4e20b44251c6 6 Timer SystemTime;
madcowswe 28:4e20b44251c6 7
madcowswe 28:4e20b44251c6 8 Ticker CPUIdleMeasureTicker;
madcowswe 28:4e20b44251c6 9 volatile unsigned int nopctr = 0;
madcowswe 28:4e20b44251c6 10 const float s_per_nopcycle = 1.0f/24000000.0f;
madcowswe 28:4e20b44251c6 11
madcowswe 28:4e20b44251c6 12 float CpuUsage = 0;
madcowswe 28:4e20b44251c6 13
madcowswe 28:4e20b44251c6 14 void nopwait(int ms){
madcowswe 28:4e20b44251c6 15 while(ms--)
madcowswe 28:4e20b44251c6 16 for (volatile int i = 0; i < 24000; i++);
madcowswe 28:4e20b44251c6 17 }
madcowswe 28:4e20b44251c6 18
madcowswe 28:4e20b44251c6 19 void PostAndResetCPUIdle(){
madcowswe 28:4e20b44251c6 20 CpuUsage = 1.0f - (s_per_nopcycle * nopctr);
madcowswe 28:4e20b44251c6 21 Printing::updateval(10,CpuUsage);
madcowswe 28:4e20b44251c6 22 nopctr = 0;
madcowswe 28:4e20b44251c6 23 }
madcowswe 28:4e20b44251c6 24
madcowswe 28:4e20b44251c6 25 void measureCPUidle (void const*){
madcowswe 28:4e20b44251c6 26
madcowswe 28:4e20b44251c6 27 osThreadSetPriority (osThreadGetId(), osPriorityIdle);
madcowswe 28:4e20b44251c6 28 Printing::registerID(10, 1);
madcowswe 28:4e20b44251c6 29
madcowswe 28:4e20b44251c6 30 CPUIdleMeasureTicker.attach(PostAndResetCPUIdle, 1);
madcowswe 28:4e20b44251c6 31
madcowswe 28:4e20b44251c6 32 while(1)
madcowswe 28:4e20b44251c6 33 nopctr++;
madcowswe 28:4e20b44251c6 34 }