This is some awesome robot code

Dependencies:   mbed-rtos mbed QEI

Fork of ICRSEurobot13 by Thomas Branch

Committer:
madcowswe
Date:
Wed Apr 17 23:16:25 2013 +0000
Revision:
90:e4164bb8c60e
Parent:
42:6504d85d85b4
final state at end of competition. Includes avoid wooden team hack

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 42:6504d85d85b4 10 const float s_per_nopcycle = 1.0f/16000000.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 42:6504d85d85b4 20 static int oldnopctr = 0;
madcowswe 42:6504d85d85b4 21 int deltanop = nopctr - oldnopctr;
madcowswe 42:6504d85d85b4 22 oldnopctr = nopctr;
madcowswe 42:6504d85d85b4 23 CpuUsage = 1.0f - (s_per_nopcycle * deltanop);
madcowswe 28:4e20b44251c6 24 Printing::updateval(10,CpuUsage);
madcowswe 28:4e20b44251c6 25 }
madcowswe 28:4e20b44251c6 26
madcowswe 28:4e20b44251c6 27 void measureCPUidle (void const*){
madcowswe 28:4e20b44251c6 28
madcowswe 28:4e20b44251c6 29 osThreadSetPriority (osThreadGetId(), osPriorityIdle);
madcowswe 28:4e20b44251c6 30 Printing::registerID(10, 1);
madcowswe 28:4e20b44251c6 31
madcowswe 28:4e20b44251c6 32 CPUIdleMeasureTicker.attach(PostAndResetCPUIdle, 1);
madcowswe 28:4e20b44251c6 33
madcowswe 28:4e20b44251c6 34 while(1)
madcowswe 28:4e20b44251c6 35 nopctr++;
madcowswe 28:4e20b44251c6 36 }