Project

General

Profile

Revision 1126

Saved 53%-62% processor time on orbs sorting

View differences:

main.c
3 3

  
4 4
// Martin "deffi" Herrmann Test
5 5

  
6
static void oset(r,g,b)
7
{
8
	orbs_set(r,g,b,255-r,255-g,255-b);
9
}
10

  
6 11
static void color_circle ()
7 12
{
8 13
   while(1)
......
20 25
					// Maximum brightness mode
21 26
					switch (part)
22 27
					{
23
						case 0: orb_set (on, up, of); break;
24
						case 1: orb_set (dn, on, of); break;
25
						case 2: orb_set (of, on, up); break;
26
						case 3: orb_set (of, dn, on); break;
27
						case 4: orb_set (up, of, on); break;
28
						case 5: orb_set (on, of, dn); break;
28
						case 0: oset (on, up, of); break;
29
						case 1: oset (dn, on, of); break;
30
						case 2: oset (of, on, up); break;
31
						case 3: oset (of, dn, on); break;
32
						case 4: oset (up, of, on); break;
33
						case 5: oset (on, of, dn); break;
29 34
					}
30 35
				}
31 36
				else
......
33 38
					// Constant brightness mode (not very constant though)
34 39
					switch (part%3)
35 40
					{
36
						case 0: orb_set (dn, up, of); break;
37
						case 1: orb_set (of, dn, up); break;
38
						case 2: orb_set (up, of, dn); break;
41
						case 0: oset (dn, up, of); break;
42
						case 1: oset (of, dn, up); break;
43
						case 2: oset (up, of, dn); break;
39 44
					}
40 45
				}
41 46
				
......
106 111
		orbs_set (0, 0, 0, 0, 0, 255); delay_ms (500);
107 112
	}
108 113

  
114
	if (true)
115
	{
116
		if (!button2_read ())
117
		{
118
			orb_disable_timer ();
119
			
120
			while (1)
121
			{
122
				// Continuously call the sorting routine for timing test
123
				for (uint8_t i=0; i<200; ++i)
124
				{
125
					orbs_set (10,20,30,40,50,60);
126
					delay_ms (10);
127
				}
128
					
129
				for (uint8_t i=0; i<200; ++i)
130
				{
131
					orbs_set (60,50,40,30,20,10);
132
					delay_ms (10);
133
				}
134
			}
135
		}
136
		else
137
		{
138
			while (button2_read ());
139
			if (button1_read ())
140
			{
141
				color_circle ();
142
			}
143
			else
144
			{
145
				acl ();
146
			}
147
		}
148
	}
109 149
	
110 150
	
111 151

  

Also available in: Unified diff