Wenn du AVR Studio verwendest kannst du mit dem eingebauten Simulator
genau anzeigen lassen wieviele Takte schon vergangen sind. Das kann dir
viel Rechenarbeit ersparen.
Die Auslastung ist quasi immer 100%, da du ja immer was machst. Eine
while(1) Schleife wartet ja nicht, sondern führt ständig Sprungbefehle
aus.
Wenn du eine Schleife hast, in der 100 Additionen gemacht werden
passiert das immer mit der maximalen Geschwindigkeit, braucht jedoch
insgesamt 100 Takte (im Optimalfall) für einen Durchlauf. Wenn du eine
Schleife hast in der 10 Additionen durchgeführt werden dauert das nur 10
Takte, aber gerechnet wird dennoch mit der gleichen Geschwindikeit. Die
Auslastung bleibt daher 100%, da er einfach nicht schneller rechnen
kann. Man könnte die Auslastung mehr oder weniger nur Schätzen, indem du
guckst wieviel Takte du mit sinnvollen Arbeiten machst (also alles außer
while(1) wenn du so willst). Wenn du 1000 Takte wartest und nur 100
Takte rechnest ist die Auslastung daher 10%. Da bei einem µC erstmal
kein Betriebssystem drauf ist, das den zeitlichen Ablauf der Prozesse
und Threads steuert, kann nur sequentiell gearbeitet werden. Ein
betriebssystem würde hingegen einen anderen Prozess arbeiten lassen
wärend der andere wartet.